Support/PlatformEngineering
Overview
This document is a plan for engineering a sustainable platform for SUMO. The goals are:
- Evaluate the updated Tiki platform for suitability as a codebase that can continue to grow and improve with SUMO and with other projects using it for support
- Improve code platform quality to
- Increase robustness and performance
- Increase developer happiness
- Reduce time to implement new features
Tiki Upgrade
As decided in Q3 2009, Q1 2010 will be occupied with getting SUMO running on Tiki 5.1. We have both a high level plan and a detailed implementation plan.
Evaluation
During the upstreaming process, we have developed some concern about the viability of building on top of Tiki 5.1. We will hence re-evaluate our options once the upstreaming is finished, before we actively port our production instance.
We had originally intended porting our production instance to 5.1, running through a couple of release cycles, and then evaluating. However, we can reduce time to evaluate and possible investment by performing this evaluation earlier. Finishing upstreaming gets us to the point of having paid our ethical debt to TikiWiki by giving back our changes and improvements to the community, so this was important to complete.
The evaluation criteria are as follows:
- TikiWiki 5.1 Codebase: This can be evaluated by looking at the code and running tests against tiki-trunk.mozilla.com.
- Is the new codebase easier to understand and develop further than the old one? That is, will it be easier/more enjoyable for our webdevs to do their jobs?
- Will we be able to get more done in a release cycle?
- Is the new codebase more robust?
- Is the new codebase at least as performant as the old one?
- Is the new codebase actively good on each of these criteria, as opposed to just better than before?
- Our implementation
- How would we implement our build process in order to keep our TikiWiki up to date?
- How will we separate out our local changes that are not going to be upstreamed to TikiWiki?
- What is the scope of these local changes?
- What is the complexity and time required to create and maintain a local codebase consisting of templates, modules, and overridden files?
- How would this affect the deployment process and our desire to move towards continuous integration?
- What new local code do we need to write or rewrite in order to run Tiki 5.1?
Option 1: continue with Tiki
One of the rationales for upgrading Tiki to current was to enable us to rewrite parts of the code as we see fit. This includes improving existing sections of core code and modules.
Refactoring
We need to identify which parts of Tiki we plan to rewrite or refactor. The criteria for choosing these are as follows:
- Existing poor code quality and/or fragility
- Impact of refactoring: choose areas that will have the biggest impact for users and developers
- Ease of refactoring: While this would never be the only criteria, there is certainly value in choosing low hanging fruit
Option 2: Redevelop SUMO platform
In Q3 2009 we discussed three options: Upgrade, Fork, or Port (see [[1]]).
Having done the upgrade, there is really no point in forking the code as any changes we make are trivial to upstream. The outcome of the option matrix we developed in Q3 2009 ([[2]]) was that none of the other existing platforms look significantly better than TikiWiki. That means that this option represents reimplementing the platform from scratch.
When considering this option we should remember the pros and cons of porting to a new platform that we analyzed previously.