Build software as libraries. Prefer libraries to platforms. A library is made up of reusable functions, classes and objects that software developers include in their projects. And multiple libraries can be reused in the software developer's projects. A platform is often designed as software that gives software developers lots of features to reuse but makes software developers add their project to the platform; the reverse of the library.
Adding libraries to software developers' projects has many advantages to adding the project to the platform. Many libraries with different functionality can be combined together in the project. Adding a project to a platform means only the functionality of the platform can be reused. Platforms have another limitation. Functionality from a platform for building one kind of application, like command line applications is difficult to reuse in another kind of application, like a Graphical User Interface (GUI) or a web app or a cell phone app. Libraries let the software developers develop their application and reuse the the functionality in the libraries in their application.
When a platform is needed, build the platform using libraries that way the library can be used with the platform or without it. The ImageJ image processing program and library did this. The ImageJ libraries can be used in independent software applications, or the developer can build plugins (then ImageJ is acting as a platform) to ImageJ.