Anecdotal observations tell me that NIH (not invented here) is for the most part dyingI couldn’t find any studies examining reuse statistics yet, so please send them if you know about some., and the general level of software reuse has increased significantly in the last ten years:
- The number of frameworks increased significantly in the past years
- Almost every language has a package manager now, new languages immediately add a package manager to their toolset
- Multiple major security issues (e.g. OpenSSL’s Heartbleed) revealed how much use single software packages have throughout the world
- Easy upgrading of OTS (off-the-shelf) software components has become a major issue in the recent years
Free/open source software community is entitled to the lion’s share of this improvement. Nevertheless, software reuse, as we all know, is not for free, and brings its own challenges. One of the biggest challenges is choosing the right software to use.
Some years ago, when we were having a discussion with my colleagues about the criteria for choosing an OS for an embedded system, we had developed some categories. Based on that I derive a more generalized version of criteria for choosing software:
- Functional competence: does the component support the needed use cases easily/out-of-the-box? Does it support necessary formats/protocols?
- Intrinsic qualities (NFRs): Is the performance, scalability sufficient; how is the maintainability?
- Extrinsic qualities (ecosystem): How many people are using the component besides us? How big/competent/engaged is the development team/community contributing to the project, and how is their stance towards the project (e.g. a neglected software package of a huge software company)? Are there looming or current political issues in the development team/community? And how are the licensing/cost conditions?
In a future post, I will look at the extrinsic/ecosystem qualities in more detail.
|↑1||I couldn’t find any studies examining reuse statistics yet, so please send them if you know about some.|