You should have just enough pieces of the puzzle now to start forming a rough outline of your project. You have selected your subject matter, collected notes on a few potential features, now it’s time to piece together some more distinctive characteristics. In almost any area of expertise, learning from the failures and successes of those who came before you is an excellent source of inspiration, and the wonderful thing about open source software is that we have direct access to the recorded history of their experiences. The amount of open source projects currently available online is colossal, but as you will soon see, this is more a blessing than it is a curse.
When adding a new project to an already very large global repository, it can easily go unnoticed. The reason for this is usually that the subject matter chosen already has a fairly saturated market, and therefore can quickly blend into the background. That said, your aim should be to bring something new to the table, but before you can determine what new will be, you must first establish what current is, and old was. This is where having a treasury of open source projects really comes in handy. Having a look at what existing projects do and don’t do is both a rich source of inspiration for ideas, and a great way of identifying new angles that your project can take to stand out from them.
My default for finding open source software is SourceForge.net. There are a number of alternatives out there, but I find that most, if not all of them intentionally limit their selection to a set of fixed requirements such as: specific version control systems, acceptable licenses, binaries only, limited storage space, and strict access control. SourceForge.net’s database is massive, yet easy to navigate, and offers support for both binary downloads as well as various version control tools. What really wins it for me however, is the wealth of detailed statistics they have for every project.
Open up SourceForge.net and start searching for terms that describe your subject matter, as well as any specific functions your project may aim to provide from the research you did in the previous step. Sort the results by popularity, then take a look at the top 5 items that best suit your criteria. For each project, read through the reviews and note down any aspects that people particularly like or dislike about it. Secondly, either download a copy or browse the source online, and try to gauge what can and can’t be done with it, then note this down as well.
As you learn about these projects, ask yourself how your approach can stand out from theirs. What features are they missing? Are the technologies they use old and outdated? Do their developers still maintain them? Are they too complex? Could they do with better abstraction, or are they simply trying to do too much?
This process will probably uncover a horde of projects that all do the same thing you want to do, but try not to get overwhelmed by it. This is actually a good sign that this kind of solution is in high demand. Besides, many of them are likely to be poorly executed anyway.