Listen

Description

This episode on YouTube: https://youtu.be/ely4wOIwn04

All modern systems are built out of components. Those components can come in different forms: 3rd-party proprietary, open source and developed in-house. Open source seems to be the most popular option nowadays and one may think that using open-source components is an all-around win. It is a win, but not all-around.

3rd-party proprietary
* minimal initial effort to start getting benefits from the component: some learning curve, but no heavy lifting with development
* all encompassing solution with features you do not need but still have to deal with
* fairly good understanding of costs related to getting maintenance for the component over time
* minimal control over direction of development
* possible dead ends because of lack of transparency

DIY components
* tightly focused solution that delivers exactly what you need
* significant upfront costs and long and, maybe, costly further maintenance
* with all that comes full control over the direction of development
* draws resources and attention from the core competency

Open source
* ready-made solution that requires minimal to start using
* free basic maintenance by the comunity
* solution with wide focus and sometimes “half way there” functionality
* illusion of control induced by the fact that source can be forked and taken in-house