The Snippets Service Rewrite project is an attempt to rewrite the snippets service from the ground up using Playdoh and other modern libraries that we use in current Mozilla sites. We also want to take advantage of the opportunity to redesign the mechanics of how the service works in order to make it easier to create new snippets and manage existing snippets, given how important the service is to our engagement efforts.
Snippets is one of our largest channels for communicating with users. Snippets gets over 4 billion impressions a month, and we get a ton of requests for new snippets all the time. There hasn't been a lot of technical attention paid to the Snippets service for at least the past two years, and as a result the codebase has become stale. In addition, the administrative UI is not easy to use, and things like localizing snippets or putting out interactive snippets are unnecessarily hard. A few small tools and scripts have been made to help deal with these limitations, but we've hit the point that rewriting the service from the ground up makes sense.
The improvements we can add during the rewrite will make us more efficient in creating and managing snippets, and free up developer time to work on more engaging and interactive snippets. It will also help us put more snippets out to non-en-US locales by improving the localization process for snippets. We will also add features to reduce the chance of putting out invalid snippets that break about:home, which the current system doesn't have.
- Rewrite the snippet service using Playdoh.
- Update the hardware and deployment process for the Snippets service to use Chief and Commander for rapid deployment.
- Improve the ability for administrators to view and manage which snippets are live.
- Reduce complexity from current Client Match Rule system.
- Reduce the need for developer intervention when creating complex snippets or localized snippets.
- Reduce the chance of errors that break about:home (invalid XML, for example) that happen from time to time due to human error.
- Add concept of snippet templates: Instead of each individual snippet having unique code, allow templates to be created that multiple snippets can use, such as a Video Snippet template.
- Templates will have placeholders for variables that admins fill in with information specific to that snippet, such as the URL for a video or a specific string.
- Add support for localization through the service, instead of by making multiple copies of the same snippet.
- Provide a mock about:home page for previewing what a snippet will look like, even a non-simple snippet.
- Move common Client Match Rules into default options (checkboxes or option buttons) for snippets. Client Match Rules should be only for special cases.
- Run XML validation and escaping on all snippets to avoid issues with invalid XML breaking about:home.
- Provide a good way for non-admins to see what snippets are currently active.
- tracking bug: https://bugzilla.mozilla.org/show_bug.cgi?id=866963
- kanban board: https://mozilla.kanbanery.com/projects/35613/board/
One of the major components of the rewrite will be a user-facing localization app. Users will be able to log in and suggest translations, and certain users will have permission to log in to a special admin interface that lets them see suggested translations and choose which one is best, or add their own instead.
- Initial Spec: https://webprod.etherpad.mozilla.org/snippets-l10n-in-app-spec
- Initial Feedback: https://webprod.etherpad.mozilla.org/snippets-l10n-feedback-20130610