How To Turn Your Pile of Code Into an Open Source Project 176
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?"
You think he's missing anything? (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
Re: You think he's missing anything? (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.
Approachable download for the way! (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.
Re:Approachable download for the way! (Score:4, Insightful)
Re: (Score:3)
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?
Re:Approachable download for the way! (Score:5, 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/ [rubyinstaller.org] for example. Or, http://www.activestate.com/activeperl/downloads [activestate.com] or http://strawberryperl.com/ [strawberryperl.com] or http://dwimperl.com/windows.html [dwimperl.com] . 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.
Re: (Score:2)
There is a reason Ruby & Perl devs don't use Windows and it is because Windows is a subpar development environ
Re: (Score:2)
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
I don't mean stuff that isn't compatible with Windows, I mean actual Windows programs where the authors expect you to compile it yourself with a particular version of VC++, or even with command-line gcc and makefiles (VC++ is a free download, what Windows developer in their right mind uses gcc?)
Why don't they just post a binary? There's only one Windows 'distro' (yes, there's various versions but they're all compatible).
It's like they don't want people to use their software.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Lack of Unicode (seriously, it's been what, 15 years?), lags well behind Linux gcc, lacks old features, lacks new C++0x features, etc.
Re: (Score:2)
Also the most widely used on the desktop, which makes your argument invalid.
Unlike Linux, Windows enjoys (typically) a compile once, run anywhere model. Hence the desire from Windows users to obtain pre-compiled binaries - why should I waste time compiling source into the same binary that countless other Windows users have already got?
I want to enjoy using my platform of choice, not waste endless hours watching packages download, and compil
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
I disagree. I am someone that could easily become a contributor, but that's not my original intention. My original intention is to use some software. If I have to compile it then I'll most likely move on.
If your intention is provide some useful code to other developers then it's fine. If it's because you think your software is good for users then have binaries available.
Re:Approachable download for the way! (Score:4, Insightful)
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.
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).
Re: (Score:2)
Know any example of a Windows-compatible open source project that doesn't distribute binaries?
Gimp and Krita for two.
For a precompiled binary of a decent image-editing application on Windows, only Photoshop and Paint.net come to mind. I'm not even sure if Blender currently has Windows binaries.
Re: (Score:2)
Re: (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.
Windows and Mac binaries: difficult (Score:5, Informative)
It can be very difficult. My scientific plotting package, veusz [gna.org], 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.
Re: (Score:2)
Allow me to help.
Trying to find and install the correct version of Visual Studio Express was difficult.
Well, there's Visual Studio Express 2005, 2008, 2010, and 2012. That's not so hard. You will want to use 2012 since that is the latest.
I had to learn far too many things about the registry, DLLs, building installers, etc
Don't use the registry. DLLs = .so, installers = installers. That's about it.
Re: (Score:2)
Well, there's Visual Studio Express 2005, 2008, 2010, and 2012. That's not so hard. You will want to use 2012 since that is the latest.
In theory, though Python is compiled with a particular version of Visual Studio. It's rather hard to compile for yourself, as the latest versions aren't supported. Extensions have to be compiled with the same version as Python or you get cross-compatibility C library problems. This makes it tricky if you want to link a Python extension (an old Visual Studio version) against Qt (perhaps mingw when I looked at it). I ended up having to compile everything against the version of Visual Studio that Python was bu
Re: (Score:2)
Well put.
Hmmm... yeah, I can see the problem with different C runtime versions. Why does Microsoft have a different CRT with each edition of the compiler? (That's probably rhetorical)
I find it annoying when projects don't build with the latest C compilers. If your C code can't build against the latest version of the standard, that's as good as a bug. Although that is why so much OSS uses gcc instead of the Microsoft compiler. You don't have to know what subset of the standard the MS compiler enforces.
Re: (Score:2)
It can be very difficult. My scientific plotting package, veusz [gna.org], 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.
I would love if you would expand on how you did set up. I'm working on a small Python / Qt (pyside) application that I would love to make available, but I would need to know how to create a Windows installer. I do have other open-source software on Github, by the way, but it is all libraries.
Re: (Score:2)
It's not so difficult if it's pure Python and you're not compiling anything. The main problem was getting Qt to compile so I could compile my extensions. For your project, I'd make a virtual machine with something like WinXP (this makes it easier to make new releases if nothing changes), install Python and the associated PySide. Install any other modules you need. I used PyInstaller [pyinstaller.org] to make the runnable exe file. See e.g. here [github.com] for my pyinstaller file. I then used NSIS [sourceforge.net] to make an installer using this [github.com] configu
Re: (Score:2)
Thank you! I've now got some homework to do...
Re: (Score:2)
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.
The problem with a lot of open source projects especially ones made by a single person. Is that when they code it, many don't really know which library are part of the standard set, and what is placed on the OS for your convenience.
So if someone tries to compile your program that you wrote in say Fedora and say used a library that isn't used in Debian. Then the Debian user who is going
Re: (Score:2)
Well not necessary.
If you use say Slackware, BSD, or something else. And that App uses some crazy library that other OS's or distributions don't add by default.
Now the configure && make does work most of the time. However often for those little home single developer projects sometime they just assume what is in their linux distro works for everything.
Re: (Score:2)
In most cases it's easy if you already know how and have the environment set up.
So...basically nobody. Way to alienate a lot of potential users.
Re:Compiled Windows Binaries (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.
Re:Compiled Windows Binaries (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?
Re: (Score:2, Insightful)
Re: (Score:1)
How does "not remotely POSIX compliant and hence generally not source compatible" sound?
It sounds like your platform sucks, that's how.
If you want me to provide a binary for your crappy platform, are you at least willing to donate the money needed so I can purchase a license for the platform? Maybe even money for hardware too.
Re:Compiled Windows Binaries (Score:5, Insightful)
Re: (Score:2)
Testing it is another matter, I am not sure testing Wine is good enough to say your app will run on Windows.
Re: (Score:2, Insightful)
Other than a 95% market share, nothing.
Re: (Score:3)
Re: (Score:2)
Oh, hmm. I don't think I've actually written the process thingy up as a library yet. I probably should. It's a bit nicer than system(). Then all those bad programmers out there could do process_thingy("rm /tmp/some_file").wait() instead of system("rm /tmp/some_file
Re: Approachable download for the way! (Score:2)
No .tar.gz, Get a package manager (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...)
Re: you forgot windows (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 [wikipedia.org] or NSIS [wikipedia.org] to create an installer for Windows.
Re:No .tar.gz, Get a package manager (Score:4, 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?
Re: (Score:3)
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 de
Re: (Score:2)
"Sorry, but it *is* difficult to get from a compilable program to a distributable program that Linux users can try out easily."
A bare assertion with no logic or evidence behind it that directly contradicts experience.
"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."
What 'deal with?' What on earth do you mean. You type a command and press enter, a command simple enough you embe
Re: (Score:2)
"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."
What 'deal with?' What on earth do you mean. You type a command and press enter, a command simple enough you embedded it in your first sentence. If that is 'difficult' for you to 'deal with' I suggest you try something a little simpler than a general purpose computer.
I was consistently talking about the developers perspective, not the user! You ignored the reference to automake which made that obvious. If you think editing configure.ac and Makefile.am files is easy to learn, I bow to your brilliance, but myself and many others don't share this experience.
And anyway I said only tarballs I didnt say anything about source tarballs. Binary tarballs are another very easy way to install a program, even easier than source tarballs, although compatibility may be more limited.
"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."
No, as a developer, you should not be making packages (except possibly for the distro you personally use.) Many distributions these days are crufty with proprietary junk and keeping up with all the little peculiarities of each distribution IS actually a lot more effort than typing 'make'. That job is best left in the hands of people who are intimately familiar with their distribution and have the motivation to tolerate its insanities.
Binary tarballs, as you say, are limited/useless, and don't solve anything (dependency hell, different architectures). Nor is it clear where each directory is supposed to go to (e.g. libs), as this is distribution-speci
Re: (Score:2)
"I was consistently talking about the developers perspective, not the user! "
OK.
"If you think editing configure.ac and Makefile.am files is easy to learn, I bow to your brilliance, but myself and many others don't share this experience."
I dont think it's any harder than lots of other things that developers have to do routinely. Certainly in my experience it is much easier than trying to grapple with e.g. RPM packaging.
"Binary tarballs, as you say, are limited/useless"
I didnt say that at all. They are great!
Re: (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.
I thought those were inherent to Linux users. I have never had a Linux install going for longer than a month where I hadn't at least once dropped to command line to put in some variant of configure && make && make install and get a new program running...
Guess this is my get off my lawn post...
Re:No .tar.gz, Get a package manager (Score:4, Insightful)
Re: (Score:2)
Re: (Score:2)
"Before..." (Score:3)
Ensure it is licensed (Score:1)
GPL, LGPL, MIT, etc etc
Re: (Score:3, Interesting)
Re: (Score:1)
More likely is that I won't touch if it is unlicensed, because I don't know where I stand.
If it's unlicensed, it's very easy to know where you stand: nowhere, and legally speaking you have no permission to do anything with it.
(If it's on Github you have some token rights like the ability to look at the code and fork the repository -- whatever that means -- but probably don't have the right to, say, distribute it outside of Github. IANAL, YMMV.)
Missing one thing... (Score:2)
Prepare for Debian (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.
Re: (Score:1)
Also, consider planning for multi-arch as well. Both 32- and 64-bit intel, at least, in the source. Don't make people have to choose now, and then be stuck with it.
Re:Prepare for Debian (Score:5, 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.
Re: (Score:1)
Ubuntu now reject new packages and tell people to put packages into Debian, which isn't that hard now:
http://mentors.debian.net/intro-maintainers
Re: (Score:2)
Getting a package into Debian is hard, but it's perfectly acceptable to release Debian packages standalone alongside your tarballs, or to host your own repository. The package format itself is pretty simple, and making them can be as easy as arranging your files, writing a few lines in a control file and running "dpkg-deb -b". I do this when I make changes to my system, since it makes them easy to undo.
The 50 page guides are for Debian's own standards, which you must follow to get a package into Debian. If
Re:Prepare for Debian (Score:5, Insightful)
Build environment (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.
Re: (Score:2)
I can't agree more!
1. There are some great open source programs out there -- unfortunately if I can't freaking compile _your_ code _I_ can't help verify that my patches actually work! Result? Not even going to waste my time trying to compile your crap.
2. Give me a freakin SUMMARY of WHAT problem your open source program solves.
3. Use a GOOD coding style with _descriptive_ variable names. Have a wiki or page that DESCRIBES the coding standard used by the project.
4. List what LICENSE the code is. Is it GPL
Tarballs? Go Back to the 80's (Score:1)
I deliberately eschew tarballs. Especially for a young project, having the repo bootstraps the contribution process. Found a bug? Fork it and issue a pull request. Even if the maintainer gets hit by a bus at least you now have a sane way of tracking your customizations and bug fixes.
It's infinitely more useful. Tarballs make me think of shitty sourceforge days.
Packages OTOH can be nice. Until you can't figure out where the hell the Ubuntu package maintainer decided to put the config files. Until you're affe
Re: (Score:3)
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:
Write a clear, concise definition (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.
Post it to Slashdot! (Score:5, Funny)
Re: (Score:2)
Re: (Score:2)
Thanks, I appreciate it!
No worries though. I'm currently in the technology transfer phase of my PhD, meaning that the project has achieved most of its scientific goals and I'm now rolling it out to the users. We already have a couple of users and the project even gathered a certain momentum recently, so I'm fine. But attracting more obviously wouldn't hurt.
Re: (Score:2)
. . .transfer phase of my PhD. . .
I That's farther than I guessed you were.
. . .couple of users. . .
You've astounded me further. My first guess after looking over your project was that you would be lucky to get any users at all. I'm not, by any possible stretch an expert in your field, so don't take my opinion with even a grain of salt. (I design safety improvements for roads in an arctic environment. It seems possible, though, that somebody might use your specialty to help with mine. I love convergence.)
Good luck with your project, and thanks for the hearty
Re: (Score:2)
Very interesting. Do you use multigrid methods to solve the equations?
Re: (Score:2)
Re:Post it to Slashdot! (Score:4, 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 [cray.com]? 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.
Re: (Score:2)
Excellent question! (Score:2)
Re: (Score:2)
Re: (Score:2)
Yes, I'm aware of Chapel. This is a good example for the current state of generic auto-parallelization:
It would be the perfect thing to put into this FAQ... "here's the alternatives... ___ ... here's what we do better than them. here's another alternative ... ___ ... here's what we do better than them. here's an alternative ___ and it's very good, if you want to do this somewhat different thing, maybe see them, but that's not our goal here". When you do this, someone searches for one of these other things, they'll come across your project, and if it's really better, you might get other users to switch. And if you're really better than the others, you won't lose anyone. And then your website becomes a respected resource instead of some niche product.
That's a great suggestion. I've updated the FAQ to include this. Thanks!
Also, I second the comment below about Fortran, especially if you can provide a simple example -- If you're targeting scientists that don't want to learn new libraries or new languages, that would be critical.
I've compiled a quick example on how Fortran kernels can be used from within the library. It's not perfect but should get people started.
Users of my library are mostly scientists who want to simulate something big, without having to spend months learning
...one of these other libraries? (facepalm)
To be fair: learning any of these tools (LibGeoDecomp, Physis, whatever) greatly reduces the effort for parallelizing a simulation code, even IF you already know MPI and/or CUDA. Not to mention if you DON'T know either.
OpenMP and MPI and CUDA and so on
Providing CUDA functionality to existing Fortran code without learning CUDA would be a godsend to many people, and people who use GPUs in science are absolutely the most open to new ideas.
This appears to be really tricky. Currently there is no freely available CUDA capabl
Entitlement (Score:1)
It's nice to set up mailing lists, etc., but it's hardly something you should feel any obligation to do. If you have a relatively small, well-written, self-documenting library or utility, it's already a gift. If you've finished with the code, and you're no longer willing to invest time and effort beyond bug fixes, well, maybe that's an opportunity to take donations, or leave it in the wild for others to do with it as they please.
And ship a goddamned executable (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
Re: (Score:2)
If the project will no longer compile with the lastest versions of the 85 dependencies, the precompiled binary will not run with the latest versions of the 85 dependencies. We ship the source code precisely so you can build it to match what you have installed.
Documentation, documentation, documentation (Score:3)
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!
And do not use a Wiki (Score:2)
No (Score:3, 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.
Re: (Score:2)
you're confused, all the major project started out as shit that was widely distributed then improved: Linux, gnu compiler collection, apache http server, sendmail...
meanwhile, in the closed source world, same model followed. windows 1.0 sucked too
Re: (Score:2)
said your mother
It's quite alarming that... (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.
Re: (Score:2)
Get your anti-DRM clauses in early.
Solve a problem that needs solved. (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.
Re: (Score:2)
...Otherwise, you are just navel gazing.
There's an app for that.
Re: (Score:2)
Best /. post ever. Thanks.
Re: (Score:2)
"needs solved" is a common construction in the northeast US. And while it might sound weird, think about it -- is it actually any worse than "needs solving", other than you're just not used to how it sounds?
Re: (Score:2)
Welcome to Slashdot! I see this is your first time visiting given your moral outrage over and needs solved to correct grammar.
required reading (Score:2)
Re: (Score:2)
Lol, write some documentation!? (Score:2)
Actually means create an empty wiki.
I don't know how many open source projects have little to no real documentation and just a bunch of community driven wikis and message boards (usually complaining) about the project.
BTW aren't there services like SourceForge ang GitHub all set up to let you publish open source projects? I mean it sounds Andy Lester is about 10 years behind and fucking clueless of how people really publish open source code ( wtf is a mailing list in the 21st century?) Nobody wants you t
include a screenshot (or online demo) (Score:2)
If it's graphical then include a screenshot or better yet an online demo.
When I'm searching for a project the number one thing I'm looking for is
whether it will fill my current need. The number two thing is whether it
is more than just an alpha project. An online demo answers all this and
more. I really don't care if something is somewhat complex to install
AFTER I decide that it's worth using but I'm not going to spend a lot of
time trying to find dependencies, etc... for software that might not even
be what
Re: Missing anything? (Score:3)
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.
Re: (Score:2)
but plenty of near-abandonware has been picked up by others and made into something popular and useful. lob the shit out and see what sticks....
Re: (Score:2)
plenty of (popular huge) projects use forum systems that cross post from email and/or newsgroups
Re: (Score:2)
IANAL, so take this advice with a grain of salt. You could release this bit of software as open-source, under a new name (and use a pseudonym for yourself just in case, so it's hard for them to figure out it's you). It's very unlikely this law firm will even notice it (is this software specifically for the law field, or something else entirely?). More importantly, however, is they don't even have the original source code: how can they prove that your open-source software is actually owned by them? You c