Let’s Talk Frameworks; Will Hiring a Company That Uses a Software Framework Limit Your Business?
It’s true. There are software development companies that build custom software from scratch. Their deals usually consist of their customer owning 100% of intellectual property rights of the completed software. The underlying question of this scenario, however, is what is more valuable to your company; the intellectual property value of the created software, or the value proposition and revenue that the resulting product represents?
Before we help answer that question, we’ll help peel back a few layers and help give clarity to a few of the fundamentals first. Just what is a software framework? What are the advantages and disadvantages of using a software framework? And finally, what are some software framework options that might be a good fit for your custom software project.
What is a Software Framework?
According to the Wikipedia Software Framework article:
“…a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework provides a standard way to build and deploy applications. A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.”
In laymen’s terms, it’s a better place to start your custom software project than something like, ‘Hello World’ where the rules and generic functionality need to be built from scratch before focusing on the bits that really deliver your product’s value proposition.
Advantages of Developing Custom Software Using a Framework
1. Time is money and Reinventing the Wheel Costs Time
The primary advantage of leveraging a software framework is the time savings that it can provide. Depending on the cost rate of development this could be a significant advantage to your company’s pocketbook. Let’s say for instance you need an application that requires some sort of user authentication. Certain frameworks could already have this functionality built out where the developers can extend this feature with varying user permissions specific to your software’s functionality. Having this functionality pre-built might already save a few thousand dollars without having to reinvent the wheel.
2. Product Lifecycle Longevity Potential
Although the, ‘without having to reinvent the wheel’ argument is quite strong on its own merits, it comes with an added bonus, extensibility. Taking the potential future of your software product into account, many frameworks are built to allow future modifications without having to rewrite the underlying source code. When building software from scratch, to allow for the level of extensibility that some software frameworks inherently offer, would cost thousands, if not tens of thousands of man-hours to accomplish.
3. Start Farther Move Faster
Now, dependent on the particular software framework that is chosen for your project, each custom software framework has its own language built on top of the underlying programming language. This allows the developers to take shortcuts that are already designed or sanctioned by the framework’s developers. As a general example, where a certain function or database call would typically take 30 to 40 lines of code in something like C++, the same function might take 4 in the C# programming language. To give context, C# is a language that was developed as a hybrid from C and C++. C# is not quite one level higher but it was designed to save time over developing something in C++.
Disadvantages of Developing Custom Software Using a Framework
1. Intellectual Property Ownership
Limited intellectual property ownership. First, read and understand the User License of the framework that you are prospecting to use for your project. One of the more popular examples of Software Licenses is WordPress. Currently, WordPress is built and offered under the GPLv2 License. In their own words, derivative work including themes and plugins automatically inherits the GPLv2 license. The catch to using WordPress under its licensing terms is that a user may not copy, modify, sublicense, or distribute the Program (WordPress Core) unless expressly provided under the terms of the license. As they’ve stated, they allow derivative work, such as themes and plugins, to be created for the WordPress platform where developers can sell that derivative work on their own terms so long as they follow the GPLv2 license guidelines. This also means that derivative work is not patentable by those developers.
Now, although limited IP ownership may be a disadvantage to a company looking to patent their custom software, it is very difficult to patent something like the code for the user login process. As this functionality has been developed time and time again, this is where frameworks actually help speed things up. In cases where IP ownership is a key component of the project, It is possible to patent specific code developed within a framework, such as a new algorithm or some other unique feature of your business. As one example to research on your own, take Twitter, for example, it was once developed using Ruby on Rails which is a back-end framework for the Ruby programming language. There are elements of that version of the Twitter software that the company still holds patents for.
2. Framework Limitations
Not all frameworks are created equal. Some are one trick ponies, meaning that they are really good at a limited specific outcome, while others try to do too much and end up costing more on upkeep or extensibility. The bottom line is that it is almost impossible for a framework to be capable of everything and each framework has its own advantages and limitations
Diving a little deeper, typical frameworks require database interactions and code to be written specifically for that framework interpreter. Which means that the framework selected will more than likely be the one that your application is written, supported, and extended for many years until the next full rewrite. Depending on the framework and release version you select for your project, this may have a significant impact on your software’s product lifecycle.
Even though a software framework can help save time and money with its extensibility and underlying codebase, certain frameworks still require core functionality to be developed. This type of framework is typically called scaffolding which saves development time by allowing developers to more quickly put functionality together based on how the framework is written. This is providing that the developers are very familiar with the chosen framework Otherwise it would be like asking a developer who has worked on software projects using .net for the past 10 years to develop a complex application using Laravel 5.5.
That said, consider a framework to be a set of tools and rules guiding your custom software project build. It must be said that this disadvantage is actually an advantage if approached correctly. Every software framework is built with a purpose in mind. Some are better at web applications, others are better for mobile, while some work better in the cloud. Beyond that, some frameworks are designed for specific types of applications. For instance, one might have extensive functionality built specifically for user-generated content management. Which means that this framework would not work well for an eCommerce store but rather a social network type of application. Ensure that you and your custom software development team conduct the appropriate research to ensure that the right framework for your project is chosen.
What Types of Frameworks Are There and What are their Differences?
While some frameworks are more popular than others, as we stated earlier none are created equal. There are three distinct types of software frameworks each with their own set of advantages and disadvantages.
Front-end Software Frameworks
- Twitter Bootstrap
- Foundation by Zurb
A typical front-end framework that requires more complex computation will be coupled with a back-end framework.
Back-end Software Frameworks
Backend frameworks are more traditional application frameworks. More often, they handle the Model and Controller aspects of what’s called a Model View Controller (MVC) architecture that interfaces the software application with the user. In addition, backend frameworks can typically handle more complex computing processes and larger amounts of data. A back-end framework will typically require a visual element to interface with the user and tend to be coupled with a front-end framework such as Bootstrap or Foundation. Back-end frameworks include:
- Laravel (PHP)
- Code Igniter (PHP)
- Django (Python)
- .Net (C#, F#, or Visual Basic)
Full-stack frameworks tend to handle everything in the MVC framework. Hence the name, ‘Full Stack’. The limitations of these frameworks tend to be specific to the platform that they are developed for. For instance, Ruby on Rails is a full stack web application framework, whereas the Android SDK is for use with Mobile and other Google product devices.
The 4th Type of Software Framework, The Hybrid Framework
With the increased adoption of various user interfaces such as mobile phones, virtual reality/augmented reality devices, IoT enabled devices, and now machines capable of learning, Hybrid frameworks are rising in popularity. These frameworks have a write-once-and-deploy-to-many type of architecture. Some Full-stack frameworks are evolving their codebase to cater to this new dichotomy to the traditional software industry.
The Zyris Framework is one other such example of this type of framework. One of the unique features of The Zyris Framework is that it allows the development team to implement functionality once and access it anywhere. This includes microchips, web browsers, native mobile apps, and even the cloud. At Zyris, we like to call it a True Full-stack Framework. The ability to deploy functionality like this to multiple platforms is a powerful cost savings in potential additional development time in comparison to other traditional software frameworks.
Unless the product that you are developing for your customer is software, developing your custom software project using a framework is actually more beneficial than starting from scratch. In most cases, so long as your product’s customer value proposition is some kind of product or service served using software then we recommend starting your research on the various frameworks, and custom software companies that use them.
As we’ve stated, there are many types of frameworks out there. Engineers and tech companies in this space are constantly competing to be ‘The next platform’. If you absolutely need to own the login functionality code, then your custom software project should be built from scratch. The cost of that project will increase the budget based on the level of effort and time required to architect, design, build, and patent all of those worthy components. Otherwise, we suggest a good solid framework to help you focus more on the business and value proposition that your software will deliver to your customers once it’s complete.
There is always one or two that would suit your project perfectly.