Once the project is presentable—not perfect, just presentable—you're ready to announce it to the world.
This is a simpler process than you might expect. There are two kinds of forums for making announcements: generic forums that display a constant stream of new project announcements, and topic-specific forums where your project would be appropriate news.
The most useful generic place is probably freecode.com — just click on the link in the top navigation bar. Freecode's list of recent new projects is embedded on the front page of the popular Slashdot.org, which means someone interested is likely to notice it and help spread the news by word of mouth. (Note that Freecode was known as Freshmeat.net until it was renamed in Oct 2011.) You might also want to register your project at OhLoh.net, which is the closest thing there is to an integrated global database of free software projects and their contributors. (Some projects also successfully climb the word-of-mouth / upvote tree to the point where they are featured on the front page of news.ycombinator.com, one of the subreddit forums related to reddit.com/r/technology, or some similarly popular public page. While it's good news for your project if you can get mentioned in a place like that, I hesitate to contribute to the marketing arms race by suggesting any concrete steps to accomplish this. Use your judgement and try not to spam.)
The topic-specific forums are probably where you'll get the most
interest. Think about mailing lists or web frums where an
announcement of your project would be on-topic and of
interest — you might already be a member of some of
them — and post there. Be careful to make exactly
one post per forum, and to direct people to your
project's own discussion areas for follow-up discussion (when posting
by email, you can do this by setting the
Reply-to header). Your announcement should
be short and get right to the point, and the Subject line should make
it clear that it is an announcement of a new project:
To: firstname.lastname@example.org Subject: [ANN] Scanley, a new full-text indexer project. Reply-to: email@example.com This is a one-time post to announce the creation of the Scanley project, an open source full-text indexer and search engine with a rich API, for use by programmers in providing search services for large collections of text files. Scanley is now running code, is under active development, and is looking for both developers and testers. Home page: http://www.scanley.org/ Features: - Searches plain text, HTML, and XML - Word or phrase searching - (planned) Fuzzy matching - (planned) Incremental updating of indexes - (planned) Indexing of remote web sites - (planned) Long-distance mind-reading Requirements: - Python 3.2 or higher - SQLite 3.8.1 or higher For more information, please come find us at scanley.org! Thank you, -J. Random
There is an ongoing debate in the free software world about whether it is necessary to begin with running code, or whether a project can benefit from being announced even during the design/discussion stage. I used to think starting with running code was crucial, that it was what separated successful projects from toys, and that serious developers would only be attracted to software that already does something concrete.
This turned out not to be the case. In the Subversion project, we started with a design document, a core of interested and well-connected developers, a lot of fanfare, and no running code at all. To my complete surprise, the project acquired active participants right from the beginning, and by the time we did have something running, there were quite a few volunteer developers already deeply involved. Subversion is not the only example; the Mozilla project was also launched without running code, and is now a successful and popular web browser.
On the evidence of this and other examples, I have to back away from the assertion that running code is absolutely necessary for launching a project. Running code is still the best foundation for success, and a good rule of thumb would be to wait until you have it before announcing your project. However, there may be circumstances where announcing earlier makes sense. I do think that at least a well-developed design document, or else some sort of code framework, is necessary—of course it may be revised based on public feedback, but there has to be something concrete, something more tangible than just good intentions, for people to sink their teeth into.
Whenever you announce, don't expect a horde of volunteers to join the project immediately afterward. Usually, the result of announcing is that you get a few casual inquiries, a few more people join your mailing lists, and aside from that, everything continues pretty much as before. But over time, you will notice a gradual increase in participation from both new code contributors and users. Announcement is merely the planting of a seed. It can take a long time for the news to spread. If the project consistently rewards those who get involved, the news will spread, though, because people want to share when they've found something good. If all goes well, the dynamics of exponential communications networks will slowly transform the project into a complex community, where you don't necessarily know everyone's name and can no longer follow every single conversation. The next chapters are about working in that environment.
 Note that announcing your project can come long after you have open sourced the code. My advice to consider carefully the timing of your announcement should not be taken as advice to delay open sourcing the code — ideally, your project should be open source and publicly visible from the very first moment of its existence, and this is entirely independent of when you announce it. See بخشی بنام “Be Open From Day One” for more.