- By Nicolas Lagoutte
Open-source technologies are so ubiquitous in today's digital environment that it is hard to imagine a world without some of its biggest successes such as Linux, Apache HTTP Server, and Mozilla Firefox. Microsoft open-sourced the .NET Stack in 2014, and other tech giants such as Facebook and Twitter make it a habit of open-sourcing their work, effectively shaping the last decade of web development with technologies such as Bootstrap or React.
Digimasters have always been strong advocates of open-source technologies when working with our partners and clients. An example of this is our Football Mashup demo, which we built using the D3.js open-source library. Some of the key benefits of open-source include:
- Lower Cost
- Better security, as the code is open to peer-review. This improves both code quality and reduces the chances of malicious activity happening behind the scenes (an example).
- No vendor lock-in
So, I hear you ask, do we always advocate relying on open-source technologies rather than vendor solutions? No, absolutely not. Are you building an enterprise web application? An e-commerce solution? A social media platform? Different projects have different requirements, and ultimately, no single technology stack, whether open-sourced or not, can satisfy all of them. Here are a few of the common pitfalls I would advise you to think about before committing yourself to an open-source architecture:
As a customer of a vendor solution, you are often able to draw on their resources to help with everything from design, to coding support, to market access. Such services are not intrinsically available with open-source technologies. One way to mitigate this risk is to employ a company specialised in giving professional support for open-source platforms; incidentally, one of my first jobs was working in one such firm which provided enterprise support for a specific Linux distribution.
Do you have a team of developers who will be working on this project? Do they have the skills required? How easy is it to hire these skills? Consider that it may be a lot more difficult and expensive to hire developers in a new and flashy, but immature, technology. Which leads me to my next point...
The landscape changes quickly. I've had several technical team leads tell me that they've invested in training and upskilling in technology XYZ (e.g. AngularJS for their front-end team) only for their skills to be outdated by the time their team was ready with non-backwards compatible Angular 2 having been released. And let's not even bring React or some of the new kids on the block like VueJS into the discussion... Not to mention Angular 4. Make sure your technology choices have active communities - checking GitHub statistics and StackOverflow Insights is a good way to start.
Partnership opportunity cost
Building alliance partners is an important way to grow your business and status within an industry. We've found collaborations with our partner network, including vendors, to be extremely fruitful. The Football Mashup demo linked above is one such success story.
If things go wrong, what are your exit costs? How easily can you migrate your data, and can you port your code? Generally speaking, open-source frameworks are either prescriptive or modular. To go back to the front-end example, Angular is prescriptive: it does a lot of the heavy lifting for you, but it also forces you to do things the Angular way. React on the other hand strongly encourages modularity, requiring more choices and configuration, but allowing for more flexibility down the line. A major change in an Angular architecture might require an entire rewrite, whereas you might be able to preserve large amounts of your React infrastructure, while rewriting or changing the sub-module that didn't work for you.
Unsure how to incorporate open-source into your enterprise architecture? We can help.