Enterprise Software Shouldn’t Exist Without Extensions
Extensions are the most effective way to extend the functionality of any software without changing its core. In a recent interview, Phil Lewis, senior vice president at Infor, a cloud software company, told AIM that the days of modifications are gone for multi-tenancy cloud applications. “You can’t touch those data schemas or applications, but customers still have specific requirements, and in such times, it is important to enable them to build what they need using an extensibility framework, allowing them to create extensions rather than modifications,” he said. The idea is to move from “modifying code” to “extending functionality”, as modifying the entire code from scratch to add a new feature or a simple patch becomes incredibly difficult to upgrade, leading to people getting stuck on old versions. Flexibility Matters – A Lot A Hacker News user mentioned that enterprise software is too complex to work with and ends up confusing users. “If you look at the most successful software of all time, they are the complete antithesis of the Unix philosophy that so many designers and developers prefer,” he added. One good example of extensible software is the Shopify App Store, which recently introduced an extensibility model that allows e-commerce businesses to add new features and functionalities to their online stores through apps available in the App Store. This enables merchants to customise their stores without modifying Shopify’s core code. According to W3Techs, around 43.1% of all websites use WordPress, which is a great example of what can be achieved using the extension-based approach. “You have much better control over your website with WordPress than any other platform… you can do everything with a huge number of plugins, change the PHP code of your theme, and change the look of the website with HTML, JS, and CSS,” mentioned a user, suggesting the level of flexibility that can be achieved using an extension-based platform. While explaining why extensions are critically important in enterprise software, Lewis mentioned that if you think about an application with 1,00,000 lines of code and want to modify it, changing even 25% of those lines immediately turns it into a non-standard, modified solution. “The alternative is to keep the 1,00,000 lines of code intact and build an extension on the side that does what you need. This extension gets compiled with the application, but you’re not modifying the core source code. You’re leaving that intact while building extensions,” he said. “You can create multiple extensions, which can be applications, widgets for workspaces, or additions to reporting, but they remain independent extensions rather than modified code,” he added, further explaining how multiple extensions can be built to extend the functionality. Extensibility is Good, But to What Extent? While extensibility has multiple advantages, there’s one problem – it makes the software heavy. A good example is, again, WordPress, which works well until you add multiple extensions, as having too many plugins can significantly slow down your website, affecting its performance and user experience. A Reddit user mentioned that once you finish the basics of Microsoft Power Platform, the complexity of managing the software increases dramatically, and unless you have enough development experience, you can not maintain it further. The idea is to build a lightweight platform optimised enough to manage multiple plugins. For instance, VSCode is a lightweight IDE that relies heavily on extensions. Being a lightweight platform reduces the complexity of code and makes it easy for a developer to maintain the software.
The idea is to move from “modifying code” to “extending functionality”.
The idea is to move from “modifying code” to “extending functionality”.
["enterprise", "Software"]
["Go", "enterprise", "programming_languages:R", "AI", "ML", "programming_languages:Go", "Aim", "Software", "R"]
["AI", "ML", "Aim", "R", "Go", "programming_languages:R", "programming_languages:Go"]
A software engineer who loves to experiment with new-gen AI. He also happens to love testing hardware and sometimes they crash. While reviving his crashed system, you can find him reading literature, manga, or watering plants.