If a feature is related to security, go with open source.
The great thing about using open source solutions to protect sensitive information in your database is that when code vulnerabilities arise, the open source community is quick to alert people using the code, and quick to create a solution to the vulnerability. Open source security solutions also provide complete transparency – you don’t have to worry that a for-profit company is (whether by accident or deliberately) including a vulnerability in one of their products, as was the case when a huge attack vector was found in the update servers of Huawei’s USB modems. You can look right at the code and, if you so choose, go through line by line and make sure that nothing unsavory will happen to your data. As an added bonus, when a security vulnerability is identified and repaired, you don’t need to pay anyone for the update. Laravel is a great example of an open source web application development framework that addresses many common security concerns right out of the box, with user authentication, password encryption, and other common protocols ready to go as part of the basic installation.
Use open source for “generic” features.
If your web application contains features or capabilities that many other websites use or otherwise make available to their customer base, it’s often best to rely on open source code for these features – especially if it’s easy enough to integrate these features into your web application. There is no need to reinvent the wheel – not to mention significantly slow down production while simultaneously increasing development costs. For example, if your web application needs an e-commerce feature with generic shopping cart and checkout features, it would likely be best to use either a hosted system like Shopify or to integrate an open source tool such as simpleCart(js). Otherwise, building one from scratch would make it more likely that you’d have bugs and security flaws, and that you would leave out important elements of the UI that you didn’t think about.
Build “differentiating features” from scratch.
If an aspect of your web application differentiates your company from competitors and predecessors and is core to what you do, build the code for this feature from scratch. In some cases, this is a no-brainer; if your idea is that innovative, there simply won’t be a piece of code out there that captures the core of your new system, so open source simply is not an option. If, however, the thing that differentiates your service from the rest of the pack is a nuanced version of a type of system that already exists – for example, a matching algorithm that is tailored to your customer base, a specially-designed query system that allows front-line researchers to quickly connect to the research leads with the right expertise, or a data collection system that allows people to contribute highly structured and unique datasets to a large-scale study – it is worth writing that code from scratch. This will not only ensure that the marketable piece of your service is exclusively under your propriety, but it also allows you finer-grained control in the specific instantiation of your system, and allows you to be the most knowledgeable expert in what makes your product special.
Don’t worry about open source affecting your exit.
A common fear among startups who are vying for an eventual buy-out is that large companies don’t want to purchase startups whose online products are built on an open source foundation. While this may have been the case in some parts of the industry in the past, it is no longer an issue. By most estimates, a full three quarters of the world’s web servers run on Linux or Linux-type operating systems. Many startups whose platforms run at least partly on open source have been acquired in recent years (a quick look at the technology stack of YouTube, which Google acquired in 2006, is a case in point).
In summary, don’t be afraid to go open source! Taking a piecemeal approach that includes both open source and from scratch code will not hinder the marketability of your product, and your company will benefit from faster product launch times and cheaper development, leaving more time and funds on hand for other aspects of running your company.