Recently I had an interesting discussion about open sourcing most of the code that you write on a daily basis, especially in terms of commercial usage, for example creating your own product or service. Here are some of the thoughts and assumptions, and I’m really looking forward to hearing your own remarks and also share your experience.
Whenever you decide to do something in public, most likely you’re going to put even more effort to it, in order to simply nail it. Whether it’s a speech, marketing campaign or the software project that is no longer being kept privately in your local repository, you don’t want to feel ashamed by submitting a code that could look like spaghetti in the worst case scenario. You start caring more about what you’re really doing, as the other folks can easily browse your code and sort of judge you. On the other hand, you should really want your project to be written nicely, as the other programmers may actually like it and apply some of your patterns to their own solutions or even send pull requests or remarks to your repository.
Regardless of what type of technology you’re dealing with and whether your project is niche or quite opposite, you can be sure, that at least a few people will be interested in what you’re doing if you put a minimal effort into advertising it on some forums or user groups. Once the word is spread and you see the very first forks of your repository or the reported issues, you can be proud of yourself, because someone found your solution to be useful or helpful. This whole process is actually quite similar to blogging. All of us like to read interesting articles describing e.g. well-suited solutions to our issues or things like that. We also like to use free and open software, whether it’s an actual application or a library being used in our own software. Since the other developers spend their (free) time to share their code, why not to give something from yourself? Don’t just be a consumer, be also a producer :).
I believe this part is especially important whenever we’re dealing with user data in our applications, which is quite often. Some users will hesitate from using our service, as they may suspect that we will do something not really appropriate with their private and personal data. It can be critical when it comes to the public projects for government or municipality. If it’s a closed source code, then suspicions will surely arise. Having an open source project, where everyone can have an insight and ensure that the application itself is not violating his personal right, not messing with his private data, there are no backdoors etc. might be the only way to actually make the users trust you and your code.
Whether you’re working solo on your private projects, manage a group of people, as your project grown bigger or actually you’re part of the organization having the code publicly available is a huge advantage. For you, because it’s much easier to get a good job, as the company in which you’d like to work, can just browse your code and see your patterns straight ahead. The same applies if your company works in an open source way – the potential client can easily find out how do you write code and what quality might he expect from your services.
That’s the part in which I don’t have a big experience yet, however managing a group of a few people, also when working remotely is not that complicated. I guess that the difficulty lays in working on a very big project with multiple teams involved and a lot of contributors submitting their issues and pull requests. You have to somehow work twofold – develop the core by sticking to the original plan, yet you should also take care of the all reported bugs or enhancements and prioritize all that stuff. It’s not difficult to make the community angry with you if you won’t consider their suggestions at all (or merely). I think the open source project management at this phase is quite a challenge.
Certainly, we can’t apply open source strategy everywhere. Most of the companies want to keep their code private and it’s totally understandable. Some of them, for example, work on some special algorithms and might be afraid of having it stolen and so on. However, if you’re developing your own software, don’t be afraid to share your experience and knowledge with the rest of the world. Really, no one is going steal from you, and you’re giving a part of you and your quality software to the overall community of the developers.