📺 This episode on YouTube
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 developmentall encompassing solution with features you do not need but still have to deal withfairly good understanding of costs related to getting maintenance for the component over timeminimal control over direction of developmentpossible dead ends because of lack of transparencyDIY components
tightly focused solution that delivers exactly what you needsignificant upfront costs and long and, maybe, costly further maintenancewith all that comes full control over the direction of developmentdraws resources and attention from the core competencyOpen source
ready-made solution that requires minimal to start usingfree basic maintenance by the comunitysolution with wide focus and sometimes “half way there” functionalityillusion of control induced by the fact that source can be forked and taken in-house