Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
    
The answers seems to be saying that there are no "gotchas" or conventions to worry about - it's just grab a license, put it with the code, and distribute? And it doesn't matter that it's not thoroughly tested, code-reviewed, documented, or anything else, I won't look stupid? Or am I reading into answers here? –  Ethel Evans Mar 3 '11 at 19:52
    
Well, you will need to put effort (or find someone who will) into documenting and testing your project. Otherwise nobody will use it. But, that's a fairly straight forward process: You just do it™ –  Jeremy Heiler Mar 4 '11 at 1:38
    
Okay, I guess that's more what I'm trying to figure out. What do people expect from open source projects before release? It sounds like I can just throw it out there for now, to share w/ the initial users and a few people who have expressed interest - but then I will need to bring it up to speed later if I want to encourage others on the WWW to use it / further develop it? –  Ethel Evans Mar 4 '11 at 18:26
3  
Put code on the internet. Say it's open source. Add license to taste, serves a few billion. –  thedaian Nov 8 '11 at 15:57
1  
To choose a license, here's a list: opensource.org/licenses/category And here: opensource.org/docs/osd is a definition of what it means for your code to be "open source". –  FrustratedWithFormsDesigner Nov 8 '11 at 15:58

5 Answers 5

up vote 4 down vote accepted

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.

share|improve this answer

The Free Software Foundation website would probably be the best source for learning about what you need to do in order to open source your code. For making it available to other people try one of the following:

There are plenty more, but these seems like the most popular. (I use GitHub.)

People expect the program/library to work. They expect it to have some sort of documentation. And, as with all software ventures, they expect you to be open to bug reports and patches.

Then, you will need to put effort (or find someone who will) and just do it™.

share|improve this answer
    
Add BerliOS (developer.berlios.de) to the list. –  yasouser Mar 2 '11 at 21:41
    
I'm having trouble navigating the FSF site. After about 10 minutes of trying to find what I'm looking for, I'm starting to get a bit of a headache from what is starting to feel like one long sales pitch. Can you direct me to some specific resources on that site that will help me actually get open source software released, and not just tell me why I should support free software or why everything else is bad? –  Ethel Evans Mar 3 '11 at 0:38
    
@Ethel: Technically, all you need to do is pick a license and distribute it with your code. However, if you go to any page on fsf.org and scroll to the buttom, you'll see a list of links under "Licensing". Those are what you are looking for. After you have your license all figured out, the rest is up to you and who ever wishes to participate in your project's development. –  Jeremy Heiler Mar 3 '11 at 0:56
    
thanks. I'm kind of looking for more than what I "technically" need to do. What are normal / best practices for putting a project up as open source? –  Ethel Evans Mar 4 '11 at 22:54

Pick a license from the Open Source Initiative list. If you want anybody to be able to do whatever with your code, use something like BSD. If you want anybody who uses it to keep it open source, and have to provide the source code, use the Gnu GPL. For somebody new to this, I'd suggest one of those two licenses.

Add the license to the code, and put it on some sort of open source repository.

share|improve this answer
1  
How do you add the license to the code? Is it just a matter of mentioning it in the documentation and/or the comments of the source code? Do you need to register your project somewhere to make it "official"? –  Kristof Claes Mar 7 '11 at 12:14

Have been reading comments - Wanted to point out that what ppl expect depends on the state of the project. EG: For a production release ppl will expect good documentation. If it's marked "Alpha" then people will be more forgiving of documentation that consists of a text file you wrote in 30 mins.

My advice is pick a license, mark it as Alpha to set ppl's expectations, then just make it public somewhere and start. Try and interest the other groups and take feedback from them on what needs improving.

I'm not saying it'll take of and be a success instantly, it's just that you can spend to long fretting over the small details and that blocks you from the important stuff. Go for it, and good luck :-)

share|improve this answer

Stick it on a public hosting site such a Codeplex, Github, Bitbucket, Google Code and put your preferred licence in the source code (or seperate text file) - job done!

share|improve this answer
1  
I've only used Codeplex myself, but you're prompted to select a license when you create your project... –  MattDavey Nov 8 '11 at 16:09

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.