Project Submission Guidelines

At Handmade Network, we pride ourselves on being open to hosting all sorts of projects, from low level tools to games to conscientious web applications to innumerable other carefully crafted varieties of software. With this in mind, there are certain standards of content quality that we expect projects hosted on the site to meet, and certain characteristics that we believe projects should uphold in order to best contribute to the community of software development we are attempting to cultivate.

This document outlines these standards and characteristics as specifically as possible, allowing for exceptions both in favor and against project approval if unanticipated circumstances arise. All project approvals or rejections will be accompanied by a justification, and we expect to be held accountable if the provided justification is insufficiently backed by these guidelines.

Content Quality

A high-quality Handmade Network project submission will:

1. Have a relevant and informative blurb which gives those browsing project listings a basic idea of the project's purpose and value. The 'elevator pitch', if you will.

2. Have a thorough description, which will give visitors several vital pieces of information in understanding the project:

   1. The background / impetus for the project’s creation

   2. The project's short-term and long-term goals

   3. The current status of the project

   4. The road-map to reaching these goals, both short- and long-term

Excellent descriptions will also make use of (BBCode) markup to make it easier for readers to scan for relevant information.

3. Provide links to other relevant websites where visitors may find out more about project development or the current activity of the author(s). Common examples:

   1. A YouTube channel where the author(s) showcase latest features or record development logs

   2. An external project homepage where new development builds can be found

   3. An external source-code hosting site where the project's source code is available

   4. A social media page for the project or the author(s) showing development progress

4. Provide several screenshots showcasing the current state of project development, if the project is visually oriented. Examples:

   1. A project with a graphical user interface should show what a typical user will see when interacting with the running program

   2. Same goes for command line tool with a curses-like TUI

   3. A game or game engine should provide several screenshots to give visitors an idea of what makes it unique

   4. Visually-oriented projects with support for multiple platforms should provide at least one screenshot of the project running on each platform

5. Where possible, provide current builds of the project that visitors can run to see the state of the project.

6. Customize the project page with appropriate colors or background images to give the project a sense of visual identity.

Providing as much information about your project as possible will help us decide whether it meets the qualifications listed below, and whether community members will be invested in your project's success.

Acceptable Projects

For us to be willing to approve a project on the site, it should:

1. Be a legitimate, unique, and original work. We unequivocally will not accept projects which are blatantly advertisements for unrelated websites or companies, projects which are indistinguishable from others on the site, projects which are incorrectly attributed to someone other than the actual creator.

2. Have a meaningful amount of development work planned or completed above its dependencies, parent project, or previous incarnation. We will not accept projects which cannot prove themselves to be more than a thin layer of “glue code” above several libraries, or which are barely-modified forks of other projects.

3. Be the development effort of an individual or small team, organization or company. We wish to keep the focus of this site on projects which highlight the inspiring work of small developers, projects which provide a high ratio of value-added to man-hours worked, and the exploration of software creation as a craft. We will refrain from defining “small” for the purposes of this guideline, and instead give examples of approvals and rejections:

   1. A commercial compression tool developed by a small team of 2-4 programmers and a few miscellaneous staff under the umbrella of an LLC would be approved.

   2. A suite of productivity software developed by a large multinational corporation would be rejected, as it is not in line with the intended focus of the site, and such a corporation is likely already receiving widespread exposure elsewhere and may have their own extensive user community.

   3. An existing, well-established open-source project with a contributor count at the time of submission in the thousands may be approved or rejected depending on other factors like the age of the project, the number of current contributors, the content to be provided on Handmade Network vs the project's homepage, and the current state of development of the project.

4. Enrich to the community by releasing finished projects for community members to use or purchase and providing regular updates that inform and educate community members. We heavily encourage activities such as:

   1. Writing or recording logs/articles explaining decisions/trade-offs made during development and their rationale, theory behind a piece of code, information discovered about an API or dependency.

   2. Releasing demos, samples, or pre-release versions demonstrating the mechanics or evolution of a particular feature

   3. Responding to questions about functionality in comments/forums.

For more information on this, please see our Monthly Update Policy requirements and suggestions.

5. Have a clear, achievable goal or set of goals, and provide lasting value to its intended audience. We want to discourage projects from falling into development limbo and slowly dying off. We also want to encourage project owners to support their projects past release, so that they might have continuing usefulness as the dependencies and platforms they rely on continue to develop.

Additionally, there are some criteria that we guarantee will not be considered in approving or rejecting a project:

1. Implementation language. A language is merely a tool, and worthwhile software can be created in any language or environment.

2. Use (or not) of libraries. While we are supportive of efforts to develop software that makes minimal use of libraries, and to write code that supplants existing libraries, this is by no means a requirement of projects hosted on the site. We merely ask, as stated above, that projects perform some significant work above that which its dependencies perform on their own.

3. License, monetization, and source-code provision. We do not require projects be open-source, free software, etc. While we are very supportive of these movements and the principles behind them, we also understand the need to make a living off of development work, and wish to make it possible for any project to contribute to and benefit from our software development community.