A task to explore the advantages and disadvantages of separating all front-ends / skins from the data / API layer. For the purpose of this task, the frontend is the code that
- adds the chrome around the content (language links, tool links, footer, user tools), and
- renders special pages.
## Advantages
- Introduces a well-defined interface between frontend & backend
- Improves testability
- Reduces the amount of code front-end developers need to understand
- Drives API improvements (performance and features), which in turn can make our front-end development more flexible
- Can power single-page-app front-ends with server-side pre-rendering for first load
## Disadvantages
- Performance, if not done well
- Migration cost
## See also
- T89889: RFC: Service split along presentation vs data manipulation line
- [Related discussion in architecture brainstorm session](http://etherpad.wikimedia.org/p/ArchBrainStorm)
- [Nuria's Blog post about single-page app vs. first page load performance @Tuenti](http://corporate.tuenti.com/en/dev/blog/a-faster-tuenti-lessons-learned-in-client-side-scalability)