On 20 November 2015 at 10:18, Vivien Nicolas <[email protected]> wrote:
> > Having a dedicated set of people that works on it, is definitively part of > the plan that nobody knows but is the companion of the new architecture > proposal: Architecture Transition Plan > <https://wiki.mozilla.org/Gaia/Architecture_Transition_Proposal#Toolkit_Team> > Wow, thanks for sharing this. Firstly, I really love the fundamental principle of the new architecture to split the web apps into a REST API and a front end. This separation of concerns is well established good practice in web development. Service Workers will give us the magic we need to make this work offline. I also really love the idea that the apps that make up Gaia become real web apps with real URLs on the web which can be updated independently of Gonk and Gecko using the web's built in update mechanism, not reliant on giant OTA updates. This is the way of the web. I also agree that Web Components are complimentary to this architecture and are solving a different problem. On the transition plan, I think the front end/back end split makes perfect sense from a technical point of view, but I'm very concerned about the idea of reorganising our 100+ person team into a front end team, back end teams and a toolkit team. This organisational structure seems like it would be a nightmare for our EPMs as virtually every single feature we develop would have cross-team dependencies. Cross-team dependencies kill our productivity, especially given the distributed nature of our teams across timezones. It's bad enough having Gecko dependencies for Gaia features,representing another level of architectural abstraction in our organisational structure seems like a recipe for not moving anywhere fast. Let me give you an example of a user story, "As a user I want to create a playlist of songs". Implementing this feature would require an addition to the API (media back end team) and also an addition to the UI (front end team). The front end team now has dependencies on the back end team and has to file user stories in their backlog like "As a Gaia developer I want to add a playlist", "As a Gaia developer I want to remove a playlist", "As a Gaia developer I want to add a song to a playlist" etc. Now imagine this new UI requires a new or modified web component - the front end team has a dependency on the Toolkit team. Now imagine it requires some platform support for streaming M3U playlists, the back end team now has a dependency of Gecko. All these pieces have to be implemented by all of these separate teams in their separate timezones with clearly defined interfaces for one feature to be completed. Then Product or UX change the requirements (inevitable) and the whole process has to start again! I think the new architecture does give us an opportunity to make a change to the way we manage our teams. It gives us the freedom to create even more autonomous cross-functional teams like the media team, productivity team and communications team who have less dependencies on the wider project and can move fast to deliver updates on their own timescale. Whilst I agree with the front end/back end split and shared components, I think directly mapping the architecture onto our organisational structure is maybe a bit simplistic and could be a recipe for disaster. My view is that what we need is agile, autonomous, cross-functional teams who specialist in one product area. We probably need the existing specialists in those apps to carry out the front end/back end split in the first place anyway. I wouldn't have a clue how to create a front end or back end for our music app, but the media team does. One other more technical comment is that one part of the architecture I don't understand is why our "back end" pieces and our "data sync" service are not the same thing. Wouldn't web apps usually work by having a server-side REST API where all the data is stored, then multiple front ends on different form factors which talk to that API and cache data on the client? Why are we creating a web API which stores its data locally then syncs via a separate service? Is that just applying native Firefox app development thinking to web development? BTW, thanks for having this discussion in the open :) Ben <https://lists.mozilla.org/listinfo/dev-fxos>
_______________________________________________ dev-fxos mailing list [email protected] https://lists.mozilla.org/listinfo/dev-fxos

