Hello Gaia folks,In the last 3 years (already!), our teams has built a dedicated front-end experience for the Firefox OS platform, mostly designed around mobile devices, and especially phones.
While Gaia has been built under various constraints, such as last minute features, time-based deadlines, hard memory constraints, various hardware and form factors... I believe our initial goal of shipping a default front-end for our platform has been reached.The ideation process and the last years highlighted the need for Gaia to scale and adapt. Not only to the constraints mentioned above but also to FirefoxOS users, in a world where there is not only one type of user, but many users with contextual and local needs. As of today, we often take guesses without real usage statistics.It's also clear that perceived performances need to be on pair with other mobile devices vendors. While perceived performance is not a pure user goal that will motivate the adoption of the phone, a laggy experience may demotivate it.Lastly, our application model has been designed to behave like static installed applications. While Mozilla is primarily building a browser, which is an installed application, it is designed for the Web. And the web is not about static installed applications but ... define your web here ...In order to shape Gaia into a scalable and adaptable product, here is a proposal for a new high-level unified architecture https://wiki.mozilla.org/Gaia/Architecture_ProposalThe inner set of libraries needed to achieve this architecture is not described in this document. Implementation details could and should be discussed as part of a separate set of proposals.
This proposal is about moving to hosted apps with delta updates, using simple primitives to enforce encapsulation and expose applications inner structure to the browser instead of relying on a blackbox model, getting live reports from real users for real panels usages or for A/B testing purpose, isolating the front-end as a distinct and easily replaceable component with a strong focus on perceived performance and user experience, and adapting to future hardware features/constraints.I believe this proposal is too big to be discussed in a single mailing-list thread. So please, if you want to discuss a specific point, start a new thread to avoid chaos.Cheers,Vivien.
_______________________________________________
dev-gaia mailing list
dev-...@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-gaia
If we can't add necessary features to the platform in time, perhaps we can explore other ways to polyfill using extensions/addons.
One window per app is a limitation that other mobile operating systems have, but Firefox OS doesn't need to share that same limitation. We don't have that limitation on desktop.
If we want to leave the door open for advanced use cases with multiple windows per app (like on desktop) we shouldn't use window.open for basic navigation :)
As requested, I started a new thread to discuss one particular topic I'm interested in...
The idea that Gaia apps consist of multiple iframes inside a container which talk to each other is an interesting way to build web apps that I haven't come across before. One downside of this is that each app effectively becomes its own window manager, managing the transitions between different embedded frames, from the point of view of the task manager the app is still a single page app with a single window.
I wonder whether you discussed the idea of splitting apps out into multiple windows for some of those use cases rather than having one container with lots of iframes inside it? One window per app is a limitation that other mobile operating systems have, but Firefox OS doesn't need to share that same limitation. We don't have that limitation on desktop.
I guess I was thinking more about use cases like having multiple pages of the same app open at the same time. Like having multiple contacts open at the same time, or multiple message threads open at the same time. A bit like I have a bug list in Bugzilla open in one browser tab, then multiple bugs open in multiple tabs at the same time on desktop.
Maybe a better way to implement that would be to enable the context menu for app windows so that I can long-press on a contact in the contacts list and select "open in new window", swipe back to the contacts list with edge gestures, long-press to open another contact in another window. Then I can swipe between the two contacts.
Another use case is when I have my Facebook app open on one Facebook page in the background, then I deep link into another Facebook page. Rather than unload the first page, it opens in a second window. All the pages of the Facebook app are then grouped together in the task manager.
Since Cwiiis is active working on the Page Transition API, and assuming he can complete this work as part of the re-architecture, do we still need the Content Wrapper?