Are custom features automatically added to the core product for future use? How are they maintained?
Fan Companion sits at the heart of all Monterosa-provided companion apps. It is a centralised, maintained product.
When a new project, TV show or event comes around, the app is re-built with the latest applicable version of the Fan Companion codebase, ensuring that the most recent version of a show benefits from the maintained codebase, bug fixes and OS and device compatibility.
This removes the maintenance obligation to clients, and makes execution simpler, more efficient and less complex.
When new custom features are required as part of an implementation, we can categorise them into two types:
- Hard feature requirements: When a new project comes around and "New feature X" is a hard requirement by the client, it is funded by the client. As a hard rule, code ownership stays with Monterosa for practical reasons. It is created within a dedicated branch of the code for the project it is intended for. For example, an integration with a specific in-house backend system. This feature may later be considered for the core product, but is not necessarily destined to be included.
- Soft feature requests: When the feature is a softer request without a fixed deadline, Monterosa may elect to deliver it as part of the ongoing roadmap of the product. As the core product is Monterosa-owned and maintained, the Fan Companion roadmap is also operated by Monterosa. However, we take a huge amount of guidance and input from all of our clients. We listen to what is useful, valuable and repetitive, and either create new features as a result, or 'harvest' raw features from code branches as illustrated above.
In either case, it is important to note that a significant amount of additional development work is required to make a Feature X part of the core product, versus leaving it within a project's branch of the codebase.
Beyond that work in merging the feature and fixing any bugs, it is often necessary to re-write parts of it to make it applicable for all product users and to make it maintainable in the long-term. For that reason, we carefully select the best features to ensure the product does not bloat (causing delays in delivery, unreliability and large file sizes), and those that serve the product as a whole.
If a feature is not merged into the core product, then, subject to compatibility, it may still be available to future apps. For example, Feature X will be copied from a previous app and merged into the latest version of the product. The only difference is that the migration and maintenance work in doing this, is chargeable to the client. Note that clients still benefit from code reuse in this instance, but they must fund the work in maintaining their own features.