The RSA patent expires today! Okay, it's a moot point, since RSA released the algorithm into the public domain 2 weeks early as a P.R. stunt. Regardless, it's a Good Thing (tm).
The rest of this diary entry is a copy of a Kuro5hin.org posting, subject: "I wonder how common this problem is?"
I've been struggling with similar issues. I've got a conferencing system (fairly different from IRC, but similar idea) which I started writing in 1992. I've spent far more of the time since then not working on it than I've spent working on it. Nevertheless, it's about 10,000 lines of C++ code at this point, and it does some clever things.
I originally wrote the system as a simplistic tool to chat in real time with several family members, avoiding long-distance costs. It evolved over time to a halfway capable imitation of an older conferencing system I used years earlier at RPI. It's not quite as sophisticated yet as the experienced users of RPI's conferencing systems expect, and the interface seems arcane to many who are unfamiliar with those systems. Accordingly, there are only a small handful of regular users.
Currently, the source code is unreleased. I've often considered releasing it as free software (i.e. Open Source), but never quite felt ready to do it for a variety of reasons:
- The project never felt close to "done", and I've been reluctant to release it while I have a mile-long TODO list.
- I'd like to be able to use the code as an example of the kind of work I'm capable of, but there are some serious defects in the design and coding that I'd want to fix before it can be the caliber of example I want.
- Between things I want to fix and things I want to add, there are some major architectural changes likely. Involving other developers makes this more difficult.
- At the same time, releasing the source usually suggests accepting patches from others, which would dilute the code; right now it's 100% my own code; diluted code wouldn't serve as well as an example.
- I never seem to find enough time to work on the project, and maintaining a full Open Source project with all the ancillary bits (website, CVS server, mailing list, etc.) takes time.
- I'm concerned about trying to build and maintain a userbase. It's harder to find motivation to add features and fix bugs when few people will ever benefit from it. Releasing the code would enable someone else to "steal" users with my own code, especially if I don't find time to compete with any potential forked codebase.
- I've wondered if there's any potential to make money from the code, that might not be possible if the source is freely available. I still wonder about this, but I'm not convinced it's worth pursuing. I'd rather find a way to make money on it as an Open Source project, if possible. Meanwhile, I do have a day job.
- And, of course, I simply haven't gotten a Round Tuit (tm).
After recent reflection, I've concluded that my best course of action would probably be to release the code as Open Source, but not under the GPL at this time. I don't want to encourage a code fork, and I want to be able to maintain a pristine version of the code for now; I don't know that I'm ready yet to incorporate outside code and start the dilution process. I could maintain a patch pool of outside patches and possibly my own code fork, my code vs. the patched version. The QPL seems like the most appropriate license at the moment; I'd consider switching to the GPL at a later time.
Even so, I need to find some time to audit the code for things I really don't want to be seen, and to clean up some of the ugliest kludges, and to get the infrastructure setup, etc. I don't know when I'll find the time, but that's basically my current thinking.
Anyone have any thoughts or suggestions for me?