If you ever embark on a period of time writing open source (free) software you’ll almost certainly come across many different attitudes in the people who choose to use this software.
There will be some people who’ll actually say thanks for providing this software, that it’s helped them with their project, saved them many hours of time that otherwise they would have had to spend writing something similar. The software was suitable for their project needs, so great, your effort in making the software open source has benefitted people. Feel good.
There’ll be people who maybe say thanks but typically just accept the software as it is, some sort of given, and when they have a problem they take the source code and try to work out where the problem is. They may ask you questions about how the code works, or where to look to get started in resolving the problem. And some time later they may come back with a patch for their problem, so this makes the software better. Again, a good thing.
There will also be a group who take the software and use it for their projects. If a problem occurs they will report it. Their report may provide a way of reproducing the problem, or it may not. If a problem is reported with a way of being reproduced then it can be fixed when the people writing the software have some spare time to do it. Another good thing. If there is no way provided to demonstrate it then the problem report is of little use to anyone … unless the person who has the problem is willing to get their hands dirty, get the code and fix it (with help where necessary) since only they can see it.
A final group will take the software and if a problem occurs they keep it to themselves; it’s like they expect you to be aware of everything that could possibly happen with the software, the developer is a crystal ball wielder. The people who develop that software only have a certain amount of time, and they typically will use it and test it against what their own project requires. That doesn’t mean that their use-cases are the same as yours. So don’t expect open source developers testing to cover what you need for your project; you could contribute tests to their suite, or donate for their time to run against other datastores if this is important to you.
You may find people who ask the question “should I ditch use of your software?” when faced with a problem, something that your software doesn’t cater for, or fails on. Maybe this is in some kind of “threat” sense, fix this problem or I leave? Well the answer to that is simple really. People should do what is right for their project. They’ve demonstrated one way or another whether they wish to contribute anything to the open source software (problem reports, testcases, patches, documentation, blogs, testimonials, donations, etc, there are many ways). If they haven’t demonstrated the willingness to do anything for the project then their input won’t be missed if they go off somewhere else. Do they pay the people who develop the software ? well no. Does the license of that software imply any guarantee that all problems will be fixed immediately when the toys are thrown from the pram? nope. Maybe this software is not the correct tool for their project? in which case use the correct tool for the job, and don’t vent your frustration at your choices on the people who have provided something for nothing. Further to this, stick to the old addage “don’t ask someone to do what you wouldn’t be prepared to do yourself“, didn’t your mum teach you that?
People seem to have got accustomed to having an open source solution these days, and that somehow it’s their “right” to have it and their “right” to have any problems found fixed. While open source (free) software gives projects a leg up in reaching their end goal more rapidly and is a great thing for software developers, open source software owes the end user nothing. Best understand this. The end user has the opportunity to do many things to contribute to that software, make it better, repay those people who put their time into developing it. The time of these people who wrote it is important to them, even if it isn’t to you; at least respect that.
Some things are for sure, when you embark on writing open source software, it can be very rewarding, very beneficial if you want a way to demonstrate to potential employers of your coding skills, excellent possibilities for exploring other technologies and gaining experience, working with other people with different viewpoints, but don’t go into it for the gratitude 🙂
[Disclaimer : while there is such a thing as commercial open source software, providing the source code yet charging for the software, what is being discussed here is the much more common open source free software]