Slashdot Mirror


How To Turn Your Pile of Code Into an Open Source Project

Esther Schindler writes "You've written some code, you think it would be useful to the world, and you'd like to give back to the open source world. But how do you do it? Andy Lester provides a checksheet for developers for how to release an open source project and get it noticed. For instance: Before you release the project to the wild, write some documentation, create a mailing list, create an issue tracker, and so on. 'Users require releases of your software. It’s a disservice to your users to point at the Git repo and say “Just pull from the master branch and install it.” Users don’t want to have to use version control just to get a release of the code. Create a proper tarball (.tar.gz) that is easily downloadable by anyone. Announce each release. Your announcements should not assume that the reader is familiar with your project.' You think he's missing anything?"

6 of 176 comments (clear)

  1. Re:Ensure it is licensed by Anonymous Coward · · Score: 3, Interesting

    And bear in mind that the license you choose may impact your target audience. Many devs who may want to use your project are working for companies in which the dev has little or no say about what licenses are acceptable. (Permissive licences like MIT/BSD/Apache2.0 are more likely to be acceptable, whereas in my experience GPL is more likely to meet resistance, or even immediately block people out).

  2. Re: you forgot windows by Anonymous Coward · · Score: 1, Interesting

    Tar.gz is nice, and .deb is even better, but the hard truth is that most users use windows, so you really need to publish an MSI or an EXE.

    Look into WiX or NSIS to create an installer for Windows.

  3. Re:Compiled Windows Binaries by Samantha+Wright · · Score: 5, Interesting

    Oh yeah, just let me download and build all these libraries your project requires... oh, what's that? One of the libraries requires Visual Studio 2003 Ersatzpress Edition to compile? And another one needs gcc-mingw-0.0.1-super-alpha-pre-release-dinosaur-version? Okay, let me just... get on that...

    If Windows binaries aren't provided, it means no one on the dev team could get them to build. (Maybe they can't figure out how to un-#pragma the #pragging #pragma correctly?) That's a big warning sign.

    --
    Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  4. Re:Approachable download for the way! by Anonymous Coward · · Score: 2, Interesting

    Having done this for a project, and spending a month of my life struggling with MSI and WIX to get a localized and MSI-compliant installable, I can say it's not easy. However, since it was targeted at beginners and the Windows version ended up being 90+% of the downloads (the other version was a Debian binary package), it was probably worth it.

  5. Solve a problem that needs solved. by tlambert · · Score: 5, Interesting

    Solve a problem that needs solved.

    For example, a guy wrote a Microsoft LAN Manager clone and talked about it on usenet. I spent six months harassing him to get the source pulled together and released so that I could run it on an Ultrix box for a lab full of AT&T PCs that our lab got as part of a grant from AT&T. The guy's name was Andrew Tridgell. His first message to me after that was "Help! I can't handle the volume of email I'm getting asking about it now!", so I suggested he set up a mailing list and let the people talk to each other instead of him.

    But it all started because he wrote code that solved a problem I needed solved, and then talked about it in a forum I happened to read. Without actually solving a problem, it would have gone nowhere.

    So your number one mission: Solve a problem that needs solved. Otherwise, you are just navel gazing.

  6. Re:Post it to Slashdot! by gentryx · · Score: 3, Interesting

    It looks decent, though I go to the FAQ, and I see "Please look here for a short review of how it relates to the competition.", and I go to that link, and there is no information about "the competition".

    Ah, sorry. As the text evolved, that paragraph was buried. I changed the layout and link so that it is more visible.

    And... "So far no one has come up with a language/compiler/library that could automatically parallelize any sequential code on any hardware."... have you seen Chapel? It is not perfect, and it looks like you have a nicer polish to some things, but is actually quite good for many things.

    Yes, I'm aware of Chapel. This is a good example for the current state of generic auto-parallelization: it works well, as long as the user augments his sequential code so that the compiler/runtime/whatever can distill the parallelism from it. That's still not possible without augmentation. So the user needs to understand how a parallel system works and how his algorithm might be mapped to it. Trivial for someone who does this for his daily living, but difficult for someone who's new to parallel computing.

    Also, for many applications the optimal algorithms to be used on the various target hardware architectures differ significantly (e.g. for stencil codes a 2.5D wavefront on multi-cores, but a horizontal iteration with 32-wide stride on GPUs...) Such different algorithms can't be "discovered" by some generic software (at least no one, not even the Chapel developers have achieved this), so those algorithms have to be encapsulated in specialized libraries. Which is what we do for our domain "computer simulations".

    (I just code to MPI directly... I don't see what the big deal is for parallel processing for the vast majority of things, but I see why there would be a niche for what you do. Best of luck.)

    Thanks. :-) Users of my library are mostly scientists who want to simulate something big, without having to spend months learning OpenMP and MPI and CUDA and so on. So yeah, there is a niche. And thanks to the stagnating clock speeds and growing heterogeneity of HPC hardware, that niche is growing fast. Exiting times.

    --
    Computer simulation made easy -- LibGeoDecomp