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?"

34 of 176 comments (clear)

  1. You think he's missing anything? by Osgeld · · Score: 5, Insightful

    yea, don't make a sourceforge page saying that "this will be" having written a grand total of a comment in a .h file

    1. Re: You think he's missing anything? by Anonymous Coward · · Score: 4, Insightful

      Also, he has the order wrong. First, make sure that you have something that works. Then, make sure, it is well documented. This includes both good user documentation (and not just "some documentation", good documentation is even more important than good code!), and good developer documentation, as well as a short description that tells people what your code actually if good for. (this seems trivial, but I've seen open source projects where even after browsing the web site for ten minutes or more, I still had not the slightest idea what they actually try to accomplish). Then make sure it has at least a minimal test suite. And then, write up a roadmap where you want the project to go (it may well be a very rough roadmap, but it should be there).

      And if all that is done, then you can start thinking about setting up a public code repository, web site, mailing list, bug tracker, etc.

  2. Approachable download for the way! by billyswong · · Score: 5, Insightful

    Create a proper tarball (.tar.gz) that is easily downloadable by anyone.

    Finally someone mentioned that. Git repositories asks users install extra software before even trying your code. Hate it a lot.

    1. Re:Approachable download for the way! by Anonymous Coward · · Score: 4, Insightful

      You can usually download archives from github and sourceforge.

    2. Re:Approachable download for the way! by mwvdlee · · Score: 2

      How about compiled binaries (for Windows users). How difficult is that...?

      Either it's difficult enough that the developers didn't want to spend the time and money to make their code compatible with the most incompatible OS currently available or it's easy enough that you can already download compiled binaries. Know any example of a Windows-compatible open source project that doesn't distribute binaries?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:Approachable download for the way! by miroku000 · · Score: 4, Informative

      Know any example of a Windows-compatible open source project that doesn't distribute binaries?

      Almost all of the ones I have downloaded recently don't distribute binaries for Windows. Usually someone else forks the project and makes their own installer like http://rubyinstaller.org/ for example. Or, http://www.activestate.com/activeperl/downloads or http://strawberryperl.com/ or http://dwimperl.com/windows.html . The makers of popular languages like Perl and Ruby don't bother making installers. They just put up links to other people who do it. Some times other projects lag significantly behind the main project.

    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. Re:Approachable download for the way! by tlhIngan · · Score: 3, Insightful

      What's in it for them? The point of releasing open source code is not to gain users, it's to gain contributors. If you're someone for whom having to download a tarball and build it is too high a barrier to entry, then you're probably not someone who is likely to contribute patches either (and if you don't already have a dev environment set up, then you're almost certainly not going to contribute code). Given that they have limited time to spend on the project, does it make more sense to spend that time catering to you, or to people who will build from source?

      Users ARE contributors. First off, just using the program means they find it useful for their needs and thus find things that seem odd (aka bugs). Or insufficient (like documentation). They're also your best asset at marketing (yes, marketing - unless you want your project to die on the vine, you need to advertise and ensure it's known). Getting more people means you grow a community and the chance to attract further developers.

      The problem with OSS in general it seems is that it overvalues developers at the expense of everyone else. Think "you have the source - there's the documentation!" or "don't file a bug, fix it!" type mentalities.

      Unfortunately, the reality of the world is - like an author of a book, the source code isn't the only thing in the world. There's a whole world of other people with soft or non-technical skills that are required. For tiny little command line utilities, sure a lot of this isn't required (and perhaps where the mentality comes from), but larger non-trivial projects really do need contributions from technical writers, designers (especially UX), and sometimes, unrelated experts who find your program actually solves one of their problems (science is full of examples where one field inadvertently creates progress in another because the principles apply).

      And sometimes, there are projects that are useful for users but the software is so mature that very little further development is needed.

      Well I would say you actually try to get a few binaries.
      Windows 32bit
      Windows 64bit
      a DEB package and RPM for Linux
      and OS X.

      Why would you do a 64-bit Windows build? There's very little reason to do so except:

      * Your program is library that plugs into an existing 64-bit Windows program
      * Your program routinely deals with huge datasets that a 3GB user area is guaranteed to be insufficient.
      * Your program is a Windows device driver (which eliminates the need for Linux/OS X binaries)

      64-bit Windows can run 32-bit Windows code just fine. In fact, after getting a computer where 64-bit Windows was necessary, most binaries run on it are still 32-bit - even large ones like Firefox (due to compatibility).

  3. No .tar.gz, Get a package manager by Kahn_au · · Score: 4, Informative

    Just releasing a .tar.gz is not enough for most users. To ease adoption of your "amazingProjectX" you really need to package it so someone can just yum install X || apt-get install X ect.

    While I personally dont mind rpmbuild myself other tools exist like FPM (https://github.com/jordansissel/fpm). After that get it into a repo like fedora/epel/etc and your users will love you (maybe...)

    1. Re:No .tar.gz, Get a package manager by Arker · · Score: 3, Insightful

      If it's in any way difficult for you to install from a proper tarball then there is something wrong. Perhaps you should try a sane distribution?

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    2. Re:No .tar.gz, Get a package manager by buchner.johannes · · Score: 2

      Sorry, but it *is* difficult to get from a compilable program to a distributable program that Linux users can try out easily.

      You suggest tarballs, meaning configure && make && make install. That means you need to deal with automake and friends which are insanely obscure and hard to learn.

      The alternative is to make packages and get them into the offical repos. You have to do that for a couple of distributions, and probably test the installation on them as well. That is a large effort for a developer.

      I think it is fine for developers to publish well-commented code with a README or documentation, without releasing installable packages. It's too hard. If the demand is there, that should be the business of package managers, who know best how to do it.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    3. Re:No .tar.gz, Get a package manager by TheRaven64 · · Score: 3, Insightful

      The tarball is not for casual users. The tarball is for packagers. Having a stable tarball (i.e. one with a published URL whose hash won't change between downloads) makes it much easier to create the package.

      --
      I am TheRaven on Soylent News
  4. "Before..." by gmuslera · · Score: 2

    Some of those things can come after it got released. You probably want to build a community around it, and that community could do some of that work, or have better ideas and feedback on how to do them. Be sure that don't contain anything that is not meant to be public, release and announce it. You could build some momentum before releasing it, gathering people very interested on it as betatesters or to give feedback before going fully public. I.e. Docker had some showing in presentations giving a hint of what it did, and how, and some weeks later released the base code, and documentation, tutorials, extra tools, and community contributions piled up with time. Delaying till everything is ready and perfect risk not releasing it at all.

  5. Prepare for Debian by G3ckoG33k · · Score: 5, Insightful

    Prepare for Debian instead of Ubuntu so, that more users can enjoy your freedom. Starting our preparing for Debian will definitely reach out to more users. Ubuntu and Mint and many other distros are in many cases directly or indirectly based on one of the latest versions of Debian Sid. Preparing for Ubuntu directly is less attractive for that and other reasons.

    1. Re:Prepare for Debian by Jezral · · Score: 4, Informative

      I'd love to do that, but getting a package into Debian is a nightmare that I have simply given up on. Even the simple guides are 50 pages long and a mass of not quite up-to-date information.

      Ubuntu makes it trivial. Even if you can't or don't want to get into Ubuntu base, you can just make a PPA on Launchpad and get automatic building for all supported editions and archs of Ubuntu.

    2. Re:Prepare for Debian by Arker · · Score: 5, Insightful

      That's bad advice. Publish a proper tarball and let Debian customise it for Debian, Ubuntu for Ubuntu, etc. Do one job well, dont try to do everything.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
  6. 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).

  7. Re: Missing anything? by corychristison · · Score: 2

    Any distro with a repository, its up to the distro package managers.

    In some cases this is the developer of the software, but usually not. Dependencies can be tricky.

  8. Build environment by Anonymous Coward · · Score: 4, Insightful

    Clearly documenting the required build environment and tools is a must - poor build environment documentation is a huge barrier to anyone wanting to jump in and make some small (but worthwhile) improvement, thus defeating a large part of the point of open source.

    Too many O.S. projects take the attitude of "it builds fine on my setup", leaving potential contributors with a frustrating guessing game trying to work out what that setup might be.

  9. Write a clear, concise definition by Anonymous Coward · · Score: 5, Insightful

    If you can't write one sentence that describes it and one paragraph that explains what it does, nobody will ever know what it is. Write for someone who doesn't have your experience, doesn't know how to code, but has the same problem. Specifically, include on the description page phrases that could describe the problem you're solving so that google will point people there.

    The other big thing, write accesible error message. Today's best example. eLAIX is an extension to libreoffice that converts ODTs to EPUBS (see that easy to google phrase there). It barfed all over a word document that I imported into libreoffice. Known bug. However, google has no results for the error message. After an hour of searching, I figured out that it's a known issue with word documents, and that cut/paste as RTF into a new libreoffice writer will clear the whatever breaks it. If the error message had been "googleable" or the error message given a "this might be a word document import that failed" then I would have saved an hour chasing this down.

    Yes, your users will break it in unimaginable ways.

  10. Post it to Slashdot! by gentryx · · Score: 4, Funny
    --
    Computer simulation made easy -- LibGeoDecomp
    1. 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
  11. And ship a goddamned executable by Anonymous Coward · · Score: 2, Insightful

    Nobody wants to track down 85 dependencies, half of which will no longer work with the rest of the code base, in order to run whatever software you are releasing. It's 2013, and you can afford to bloat the .tar.gz file with a precompiled build. It's not like you're paying for your own bandwidth. /rant

  12. Documentation, documentation, documentation by emblemparade · · Score: 2

    Writing (and maintaining) good documentation can easily take as much time as writing and testing the code, if not longer. But it's worth doing. Please, please document. Many more people will flock to your product, in turn giving you more influence and fame. It's worth it!

  13. No by drwho · · Score: 2, Insightful

    Please don't. The world has enough crap code as it is. Unless your code is GOOD, keep it to yourself. You may think 'well, it may be bad, but someone will find a use for it' - but the very existence of bad code to solve a problem can keep goo code form evolving, as people adopt the crap. Please, fix your code before posting it for public consumption. If you can't, then find someone who can or mark it as 'crap code please fix - do not deploy!'. People will respect your for your honesty.

  14. It's quite alarming that... by rippeltippel · · Score: 2

    ...He didn't mention how to choose an appropriate software license!

    That's definitely something that impacts the popularity of any open-source project.

  15. 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!
  16. Re:Compiled Windows Binaries by Anonymous Coward · · Score: 4, Insightful

    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.

    Or maybe it means no one on the dev team uses Windows. Pretty much the same reason why you don't see a binary for Mac either.

    What made your platform so damn special that we need to provide a binary for your platform when we don't provide binaries for any other platform?

  17. Re:Compiled Windows Binaries by Samantha+Wright · · Score: 5, Insightful

    Hey, you're welcome to say Windows isn't supported. That's totally your choice. Just don't say something is supported when it isn't. There are a lot of half-assed OSS projects out there that do this. (That being said, you don't need the hardware; VMware Player is close enough to native performance. And to some extent, even WINE and ReactOS can provide an alternative to getting a Windows licence if the software's simple enough.)

    --
    Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  18. Windows and Mac binaries: difficult by xiox · · Score: 4, Informative

    It can be very difficult. My scientific plotting package, veusz, was written using Python and Qt, so it should be easily portable. However setting up a sensible developer environment on Windows to compile the Python C extensions was a nightmare. Windows is pretty developer-hostile if you're used to Linux. Trying to find and install the correct version of Visual Studio Express was difficult. I had to learn far too many things about the registry, DLLs, building installers, etc. Mac OS X was rather more difficult, however. You have to download the massive Xcode and the non-standard way that Mac OS packages executables and libraries was very difficult to understand. It took a long time to get fat binaries working.

    You do get a different class of user on Windows and Mac OS X, however. The Linux people are closer to being knowledgeable about development, whereas Windows and Mac OS people are primarily users, wanting more help and hand-holding.

  19. 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.

  20. Re:Tarballs? Go Back to the 80's by TheRaven64 · · Score: 2

    Tarballs make me think of shitty sourceforge days. Packages OTOH can be nice.

    Tarballs are the input for most packaging systems. If you don't publish a tarball, then I have to create one before I even start packaging your code. So you get moved to the bottom of my list. And that's probably fine for a fast-moving project, where you don't want people running an old version and sending reports for bugs that are already fixed, but for a more mature project make sure you make life easier for packagers. That means:

    • Provide the tarballs
    • Provide a list of dependencies (don't make me run configure / CMake scripts, parse their output, and chase things down).
    • Ensure you specify minimum / maximum versions of dependencies for things you depend on, if they matter.
    • Ideally, provide a list of files you will install and where for each build configuration (I can generate this automatically if it's fixed, but it's harder if it's depends on the build configuration)
    • Provide a concise description of your project, both as a single-line summary and as a few paragraphs, for the descriptions in the packages.

    If you provide all, or even most, of these then I can probably package your software in 5-10 minutes.

    --
    I am TheRaven on Soylent News
  21. Re:Compiled Windows Binaries by Anonymous Coward · · Score: 2, Insightful

    What made your platform so damn special that we need to provide a binary for your platform when we don't provide binaries for any other platform?

    Other than a 95% market share, nothing.

  22. Re:Compiled Windows Binaries by countach44 · · Score: 2

    That platform might not be so special, which is one of the main reasons to provide the binaries. (relative) Homogeneity is one of the strengths of that particular platform. Compiling software isn't a part of most Window's users workflow - if you truly are win-compatible (and know because someone has actually compiled it), providing the binaries will give your project visibility you wouldn't have otherwise. It is a sacrifice that you can make to really contribute your software to a large group of people.