My first open source project that I completed this past weekend was a Python program that helps convert notes from one platform to another (see previous post for details).
It is only 212 lines of code. It probably took 4 hours to totally test it and to use it for my own personal use of transfer 800 notes from one system to the other. As with any software project, the challenge then is how to make it useful for the second person. This requires documentation and thinking about how to parametrize it so that a person can pass the filename and various arguments, so that nothing is “hard-coded” in the Python script itself.
I chose http://CodePlex.com as my means to deploy and publish the program. CodePlex began as a Microsoft initiative and tends to be more Microsoft-ish in nature, but it is by no means limited to that company’s software.
I have used several programs from CodePlex in my job, for example the BizTalk Deployment Framework (http://biztalkdeployment.codeplex.com). The utility is fairly complex to learn and use, but it is much less complex than the alternative ways of deploying a complex enterprise level BizTalk system.
Many times, I have browsed CodePlex for various utilities to help me accomplish some task. But that’s usually where the frustration begins. Programmers are NOT usually salesmen. There is a bit of salesmanship that has to go on the CodePlex summary page. Believe it or not, some people don’t even explain what their free utility (open source program) does. They just post it there, with almost no documentation, leaving it to the winds of chance to see if anybody actually tries it and uses it.
Thus, I tried to make an exemplary home page for my project (http://ConvertMyNotes.CodePlex.com). First I declared what the tool does: “Phatnotes is a tool that syncs notes from PC to a windows-mobile phone or IPhone. I personally switched to an Android phone, and needed to convert my Phatnotes, so I chose Evernote.”.
Then I was specifically described what problem it solves! In writing sales pages for websites, you have to make the reader feel the pain of his existing system, and realize that this product solves that pain. So I included a bold section (that I wish ALL CodePlex projects required) called “What problem does this tool solve”? After that, I purposely tried to scare people away by telling them the limitations, i.e. what the tool cannot do. I don’t want to spend time answering support questions if I can nip in the bud up front.
So in summary, even something that is “free” needs to be sold properly and nicely packaged. If you decide to create an open source project, please tell us what it does.