I wrote about open source about a decade ago and how it can be good and bad. Recently I had a conversation with someone who said he wasn’t dogmatic against using open source in certain projects, but was quite cautious. I’d call this pragmatic and is what I’d like to say I am with respect to open source. In my current project, I am the sole developer working on 7 applications at once (6 iOS, 1 Mac) so my resources are quite limited. I use open source because I don’t have the time to write some code that isn’t central to the apps. However, there are other pieces such as networking, that I’ve spent the time to write from scratch so that I have full control over them.
If I was on a larger team or working on apps that couldn’t fail, i.e. health and safety, I’d be a lot more cautious about open source. If I chose to use open source, I’d make sure that every aspect of the code was reviewed and understood. For instance, just last week there was an issue with the Facebook SDK that caused apps that included it to crash. This kind of behavior should not be tolerated on apps that should not fail; my apps today aren’t going to harm anyone so while it would be inconvenient to have crashes, but wouldn’t be the end of the world.
In an ideal world, I’m not sure I’d use open source in my apps, but in the practical world, I don’t have a choice. There are definitely some great pieces of open source that exist today, but if people rely on them and don’t completely understand how they work, it will lead to failure. There are pieces of open source that are used as the fundamental building blocks of certain apps; in order to properly use them in my opinion, every developer must understand the inner workings of them so that they can debug if needed.
Every developer, almost always, must use significant external components in their work. There is simply not enough time to write absolutely everything yourself from scratch. (Think about not only your program code, but the compiler, operating system, web browser, and whatever else your code requires.) Given that you’re guaranteed to be using external components anyway, your choices are open source or closed source. Source code by definition is required in order to understand how something works. With open source, the source code is free in both senses of the word. With closed source, you CAN’T understand their inner workings, because you don’t have source code at all — unless you are in the relatively rare situation where you have licensed not only the software but also the source code to that software. I agree that one should always understand what one uses. But this standard should be applied to all software equally, whether closed source or open source.
Hi David,
Definitely a good point about fully understanding software be it open or closed source, I.e the core operating system and its components. Open source is taken for granted and just shoved into apps without much thinking, unfortunately.