Support/TikiWikiUpgrade: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎James: some notes about sumo_only)
Line 94: Line 94:


sumo_only is the group of changes that we need to maintain during the syncs. Several of those are template changes, but things in sumo_triage or tiki_triage can also end up in sumo_only, and this is only the first ~1/4th of the bugs to triage.
sumo_only is the group of changes that we need to maintain during the syncs. Several of those are template changes, but things in sumo_triage or tiki_triage can also end up in sumo_only, and this is only the first ~1/4th of the bugs to triage.
===Notes from Marc===
When we made the categories, (sumo_only, tiki_bug, etc.), our goal was to evaluate how much work it was to upgrade. sumo_only is defined as: "Stuff that is related to the administration/maintenance of the SUMO website that can't really be upstreamed". So for us, that was stuff for which there was almost no work, work which is necessary/implicit anyway (with or without the upgrade), or that was included in a meta-bug.
Perhaps we should further categorize things to get a better picture. For example:
1- sumo_template -> sumo-specific templates that shouldn't be upstreamed (this could include minor features that are trivial to maintain). There will be work to upgrade to Tiki4, but fairly easy to manage and we have two volunteers (the two guys that redesigned Tiki themes in Tiki3).
*[https://bugzilla.mozilla.org/show_bug.cgi?id=442312 SUMO links to php-test blog.mozilla.com]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=399749 Forums link in sidebar goes nowhere sometimes]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=442321 Use https for links to Bugzilla and AMO in header]
2- sumo_feature -> Sumo_specific customization that can't be upstreamed and is not trivial to maintain, like a hardware-specific config. Ex.: SUMO rewrite rules, in-product help. Here, we should evaluate the meta-bug in its current global state and estimate porting to Tiki4 effort. Less work than the first time, but it can be significant if it touches somewhere where Tiki code changed a lot since 1.10.
*[https://bugzilla.mozilla.org/show_bug.cgi?id=412266 Create separate landing page for in-product help]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=489910 Update .htaccess rules to handle firefox-f1 and firefox-osxkey]
3- Sumo_config -> Content or config handled by the CMS. No work expected.
*[https://bugzilla.mozilla.org/show_bug.cgi?id=500047 SUMO should not be loading images from personal hosting servers]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=401067 New contributors cannot edit staging copies]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=388844 I (Chris Ilias) need more privileges on sumo staging site]
4- sumo_onetime ->  One time issue with load, etc. that we don't expect to ever deal with again. No work expected. But of course, we may discover new weird things.
*[https://bugzilla.mozilla.org/show_bug.cgi?id=470550 Database replication died in the C01 cluster due to overfilling sphinx tables]
5- sumo_included -> Stuff which is included already in another meta-bug (ex.: showfor, screencast, CSAT, minify, adding locales, etc.), as listed on [[Support/TikiUpstreamTriage]]. Please note that this could be a sumo_feature (like in-product) or a tiki_feature that should be upstreamed (ex.: showfor). The idea is that we upstream or port to Tiki4 only the latest version, which combines all previous Bugzilla items.
*[https://bugzilla.mozilla.org/show_bug.cgi?id=425834 SHOWFOR doesn't hide text with headings]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=474842 SHOWFOR browser detection is not working]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=497218 IE 6 / 7 / 8 Screencasts won't render in Internet Explorer (all versions)]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=497459 Make screencast preview not insert {SCREENCAST} snippet]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=482532 es-MX Enable Spanish (Mexico) localization on SUMO]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=485644 Remove es-MX locale (revert Bug 482532)]
*[https://bugzilla.mozilla.org/show_bug.cgi?id=480463 Layout broken in Safari 3.2.1 / IE 6 due to Minify]
6- sumo-nottiki -> This would be things which have nothing to do with Tiki. Thus zero impact if we upgrade or not.
* MySQL errors, etc.
7- sumo-tools -> Things like load tester. Here, perhaps we need to evaluate if it makes a difference if we upgrade or fork.
So, most of the items of sumo_only should be not too much work.
However,
1- The meta bugs can be huge
2- We'll have new features but also new bugs in Tiki4 (especially performance because no one stress-tested)

Revision as of 07:20, 24 September 2009

Background

SUMO is currently based on TikiWiki 1.10, a two year old version of Tiki that we've kept adding new features to while applying security patches and doing partial upgrades from Tiki upstream on select files. This has resulted in a situation where upgrading to the latest version of Tiki (currently 3.1, soon 4.0) will mean a lot of work.

In order to find a sustainable solution for SUMO in the long term, we need to decide on what the next step should be. In making the right decision, we need to factor in aspects like code quality and sustainability as well as community health.

One thing the three options have in common is that they all involve a significant amount of work in the short term, but the question is which one provides the healthiest solution in the long term.

Our three options

Upgrade

Upgrade to the latest stable version of TikiWiki and upstream future patches to ensure that we can continue to upgrade on each major TikiWiki release with minimal headache.

Pros

  • We can take advantage of the new TikiWiki features, such as Profiles (will allow us to create an "open source support" profile for TikiWiki that will be customized for the support website use case)
  • SUMO community will be accustomed to all website tools, including things like the wiki markup
  • Will pave the way for a healthy relationship with the TikiWiki community
    • More visibility of our SUMO-specific features (e.g. the l10n dashboard) since they'll be available to other projects too
    • We will become an actor instead of a consumer of TikiWiki -- our opportunity to give back to TikiWiki and demonstrate true Mozilla and open source values
    • Opportunity to share our experiences and insights about secure and efficient coding to change TikiWiki developers' mindset. ML: This is an opportunity for Tiki as well. Many things have improved since 1.10, we need more devs and more collaboration to make things go faster.
  • Support/BenefitsOfUpgradingToTiki4
  • Tiki has a predictable release schedule (twice per year) and each version will have features that are useful for SUMO, even if they weren't high enough on priority list to actually develop them.
  • Tiki has, built-in, most of the features that are needed for SUMO, which is why it was picked in the first place
  • Tiki project wants to have all the SUMO functionality discussed so far in Tiki core, and have available easily for anyone in next release. Full agreement on Support/SumoDevRoadmap2009 and we can presume that synergy in goals will always be there.
  • Tiki community members have volunteered in the past and have upstreamed stuff when put to their attention. The reason there is little recent collaboration is that the communities need to be more visible to each other and because Tiki devs are working on 4.x code, having long abandoned 1.10 code
    • Themes: Gary & luci have volunteered to make 4.x version and to work with SUMO to genericize interesting things. Ex.: Since 1.10, there several new fields (ex.: Site title subtitle, footer, etc.) that can managed via the admin panel (tiki-admin.php?page=look). And with workspaces, it becomes possible to override them by perspective. Site footer when user picks Fennec perspective is different the general site footer. (New in 4.0). It will be ready for September 11th here: http://sumo.ourwiki.net/ and in SVN (We'll make a branch)
  • 3 SUMO developers have commit access to Tiki trunk, and all is needed is a SourceForge username to have more :-)

Cons

  • TikiWiki 4.x still has several major design flaws -- our best bet in the long term would be to rewrite some of these components to allow future scalability and extensibility
  • During the initial upgrade to 4.x, making sure that everything still works on SUMO will mean extensive QA and likely several bug fixes aside from our initial list of patches to upstream.
  • Once we've upgraded to 4.x, we will need to keep upstreaming our patches to TikiWiki trunk to ensure that our new features and bug fixes will be available when we upgrade TikiWiki to 5.x, 6.x, etc.
  • TikiWiki and SUMO often has quite different priorities. TikiWiki wants to create the equivalent of a CMS "operating system" -- a solution that can do pretty much anything. Our focus is to produce a high quality solution designed to fit our needs. ML: As SUMO is an active participant to the TikiWiki community, SUMO priorities are Tiki priorities.

Fork

Fork and leave TikiWiki behind altogether and develop our own solution independently of TikiWiki.

Pros

  • We could easily strip out 90% of the codebase
  • We could probably still "steal" new TikiWiki features if we wanted to by backporting
  • We could eventually rewrite major components and slowly get rid of our TikiWiki dependencies
  • No need to upgrade to the latest version of TikiWiki or upstream our future patches

Cons

  • We would still have to rewrite many of the components to ensure future scalability, but rather than working together with TikiWiki we would do it on our own
  • We could hardly call ourselves good open source citizens since we wouldn't give any of our fixes or feature additions back unless someone took our code and upstreamed it themselves

Port

Port SUMO to a different platform.

Pros

  • We could switch to a platform that focuses on scalability, performance, and extensibility, rather than a "Jack of all trades, master of none" platform
  • No need to upgrade to the latest version of TikiWiki or upstream our future patches

Cons

  • Unless we invested a crazy amount of time to make things feel unchanged, this would mean a radically different system for many of our community members' use cases:
    • Editing articles would likely be done with a different wiki syntax
    • Localization workflow would be different
    • Forum software would be different
  • This would definitely disrupt and alienate many SUMO community members who typically aren't excited about changed workflows -- just getting people to contribute on SUMO rather than another system has proved to be very difficult in the past
  • Would essentially mean that all further SUMO development would stop for a good amount of time (probably a full quarter at best)
  • Not clear how much of a benefit this would be in the end -- depends heavily on the platform chosen
  • Would likely have tons of regressions and broken use cases we didn't consider

What's needed to make a decision

  • Meeting with James/Laura/David/Marc/Paul for James to share some new architecture concerns and get to know each others' perspectives more -- Sept 2nd
  • Table of technical comparison between different CMS platforms (James)
  • Meeting with James/Laura/David/Marc/Paul/LPH so LPH can provide some initial responses on the feasibility of our architectural ideas
  • Completed work on SUMO bug triage to get a clear picture of resources needed to upgrade (David/Laura/Marc)
  • Response to our architecture concerns (LPH/Marc) -- due Sept 9th

Recommendations from James and Laura

After working out the details of our various options, this is where we are as of 23 Sept.

Laura

James

In terms of cost and benefit, I think the best action is forking.

Porting would give us some concrete benefit in a cleaner upgrade and maintenance path, in a more modular and scalable platform, and in a more modern, cleaner code base; and some potential benefit in terms of feature turn-around times. But the cost is extremely high.

Upgrading gives very little concrete benefit, the reason I've been against this option is that the only concrete benefit that we would actually use is the migration PDO--which is significant but very limited in scope, and could be backported. There is a lot of speculation, but it's an extremely costly gamble: at least a quarter dedicated to upgrade and QA, and even if the gamble pays off, I don't feel it justifies the cost.

Forking, while upstreaming the patches we have now and backporting the changes we want, seems like the safest bet. It saves us a quarter that would otherwise be spent upgrading, and let's us get right into the growing backlog of SUMO bugs.

I'm also worried about the practicality of staying in sync:

Breakdown of triaged sumo bugs.png

sumo_only is the group of changes that we need to maintain during the syncs. Several of those are template changes, but things in sumo_triage or tiki_triage can also end up in sumo_only, and this is only the first ~1/4th of the bugs to triage.


Notes from Marc

When we made the categories, (sumo_only, tiki_bug, etc.), our goal was to evaluate how much work it was to upgrade. sumo_only is defined as: "Stuff that is related to the administration/maintenance of the SUMO website that can't really be upstreamed". So for us, that was stuff for which there was almost no work, work which is necessary/implicit anyway (with or without the upgrade), or that was included in a meta-bug.

Perhaps we should further categorize things to get a better picture. For example:

1- sumo_template -> sumo-specific templates that shouldn't be upstreamed (this could include minor features that are trivial to maintain). There will be work to upgrade to Tiki4, but fairly easy to manage and we have two volunteers (the two guys that redesigned Tiki themes in Tiki3).


2- sumo_feature -> Sumo_specific customization that can't be upstreamed and is not trivial to maintain, like a hardware-specific config. Ex.: SUMO rewrite rules, in-product help. Here, we should evaluate the meta-bug in its current global state and estimate porting to Tiki4 effort. Less work than the first time, but it can be significant if it touches somewhere where Tiki code changed a lot since 1.10.


3- Sumo_config -> Content or config handled by the CMS. No work expected.


4- sumo_onetime -> One time issue with load, etc. that we don't expect to ever deal with again. No work expected. But of course, we may discover new weird things.


5- sumo_included -> Stuff which is included already in another meta-bug (ex.: showfor, screencast, CSAT, minify, adding locales, etc.), as listed on Support/TikiUpstreamTriage. Please note that this could be a sumo_feature (like in-product) or a tiki_feature that should be upstreamed (ex.: showfor). The idea is that we upstream or port to Tiki4 only the latest version, which combines all previous Bugzilla items.


6- sumo-nottiki -> This would be things which have nothing to do with Tiki. Thus zero impact if we upgrade or not.

  • MySQL errors, etc.


7- sumo-tools -> Things like load tester. Here, perhaps we need to evaluate if it makes a difference if we upgrade or fork.


So, most of the items of sumo_only should be not too much work.

However, 1- The meta bugs can be huge 2- We'll have new features but also new bugs in Tiki4 (especially performance because no one stress-tested)