Open Source Code – How to Share It

open sourcerelease

I have a little program that I wrote for a local group to handle a somewhat complicated scheduling issue for scheduling multiple meetings in multiple locations that change weekly according to certain criteria. It's a niche need, but I wouldn't be surprised if there are other groups that could use software like this. In fact, we've had requests from others for directions on starting a group like this, and if their groups get as big, they might also want special software to help with scheduling. I plan to continue developing the program and eventually make it an online web app, but a very simple alpha version is completed as a console app.

I'd like to make it available as open source, but I have no idea what kind of process I should go through first. Right now, all I have is Java code, not even unit-tested thoroughly. I haven't shown the code to anyone else. There is no documentation. I don't know where I would put the code so others could access it. I don't know anything about licensing it. I don't know what kind of support people will expect from me if I release it as open source. I have no idea what else I should worry about.

Can someone outline for me (or post an article(s) that outlines) the process of taking open source software from "coded" to "completed / available"? I really don't want to embarrass myself by doing things weirdly.

Best Answer

With Java, you probably want:

  • A build script (perhaps written in Ant) to build (javac), test (java and junit), document (javadoc) and package (jar) your application/lib
  • Some unittests to make sure the thing works ok (this can evolve later on, but the framework is good to have)
  • Some comments that are suitable for JavaDoc (if developers are your intended audience),

And, for any project:

  • a README file saying what the project is about
  • a LICENSE file explaining how to copy
  • Some list of changes, versions, etc (evolvable)
  • Quick-start compile/install guide (what dependencies and os:es do you require)
  • Some actual documentation, faq and usage examples (for the end-user)
  • Also, AUTHORS/HACKING files are common, listing everyone that's been involved (important for copyright) and HACKING describes how to contribute.

Names of files may vary, and some put all this in HTML somewhere, but this is the typical setup.

I recommend looking at a few good open-source projects to see how they do, then just copy and adapt their method to your own. :)

The most important thing is to get it out there, then you are likely to get some feedback if there are others that think your project is interesting.

Related Topic