GUIllOTINE

Years ago someone asked me what the fastest way to stand up an App Marketplace was. After considering that we already had several Add-on Types in AMO I replied that it would be to create another Add-on Type for apps, use the AMO infrastructure as a foundation for logins/reviews/etc. and do whatever minor visual tweaks were needed. This was a pretty quick solution but the plan evolved and "minor visual tweaks" turned into "major visual changes" and soon a completely different interface. Fast forward a few years and we have two separate sites (addons.mozilla.org and marketplace.firefox.com) running out of the same code repository but with different code. Much of the code is crudely separated (apps/ vs mkt/), but there are also many shared files, libraries, and utilities, both front and backend. The two sites run on the same servers but employ separate settings files.

There has been talk about combining the two sites so that the Firefox Marketplace was the one stop shop for all our apps/add-ons/themes/etc. but there was reluctance to move down that path due to the different user expectations and interfaces - for example, getting an app for your phone is a lot different flow than putting a theme on Firefox. While the debate has simmered with no great options the consequences of inaction continue to grow. Today's world:

An awkward layout where both sites live in the same repository, but only Marketplace talks to Persona and has it's own separate front-end. Aside from lopsided services, it suffers:

The best way to relieve the stress points above is complete separation of addons.mozilla.org and marketplace.firefox.com. Below is a new diagram describing the short-term and long-term vision as well as a step-by-step plan for getting us there.


Episode IV: A New Repository

  1. ✔ DoneClone zamboni into a new repository (named olympia)
  2. ✔ DoneClone the lightweight theme review queue back into AMO. We're totally Charlie Browning this queue, but it won't be wasted in the Marketplace because we'll need to support wallpapers there soon.

Episode V: The Infrastructure Strikes Back

  1. ✔ DoneSplit marketplace-dev and amo-dev to deploy from the separate repositories. Clone the database and point amo-dev to the new database.
  2. ✔ DoneSplit the supporting services where needed: separate rabbit, celery, redis. They can run on the same -dev box, but should have their own services.
  3. ✔ DoneSplit mana documentation, split dreadnot. Distribute new URLs where appropriate.
  4. ✔ DoneDeploy olympia to Jenkins. Make sure the Marketplace instances are only trying to run Marketplace tests.
  5. ✔ DoneAt this point the two are 100% separated
  6. ✔ DoneQA vigorously
  7. ✔ DoneRepeat from step 1 on stage - Scheduled for March 20th
  8. ✔ DoneJason is going to come up with a cutover+risk plan
  9. ✔ DoneJason is going to file a downtime/push request with the CAB
  10. ✔ DoneRepeat from step 1 on production - Scheduled for April 1st
  11. ✔ Doneflip addons-dev.a.o over to olympia, remove olympia-dev

Episode VI: The Return of the Code

  1. Spend some time stripping out Marketplace specific code from the new repository. It doesn't need to be perfect yet.
  2. Spend some time stripping out AMO specific code from Zamboni. It doesn't need to be perfect yet.
  3. While doing the two steps above, identify and extract code into libraries where possible which can be shared between the two sites. File bugs for these.
  4. Split the documentation, get the new docs running on rtd.
  5. Update the contributing docs
  6. ✔ DoneMove the jenkins reports to #marketplace

Episode I: The Menacing Clones

  1. Write some migrations to split data. File bugs for them.
  2. Do asset cleanup. There is something like 190G of files for AMO - marketplace doesn't need those.