My 1000-ft take on big-picture direction: * Platform wants to pivot from implementing Platform things in C++ (which is prone to memory hazards) and JS (which is weakly typed, has runtime overhead, and various security gotchas) to implementing them in Rust (which mostly eliminates memory hazards like JS does, but has none of the aforementioned downsides of JS). * Firefox wants to pivot from implementing Firefox things with XPCOM/XUL machinery to implementing them with Web/HTML machinery.
Both of these involve a de-emphasis of all the XPConnect magic that reflects arbitrary XPCOM objects back and forth between JS and C++. There are a lot of consumers of that stuff though, so it's not going to go away overnight. bholley On Fri, Aug 26, 2016 at 11:56 AM, R Kent James <k...@caspia.com> wrote: > In a couple of weeks, a team of Thunderbird developers will be meeting > up with some folks from The Document Foundation about possibly aligning > Thunderbird with LibreOffice. As part of that meetup, they'll want to > know our platform plans. That in turn depends heavily on Firefox > platform plans. Rather than simply giving my guess as a relative > outsider who is no longer invited to eat at the big kids table, perhaps > I can ask here and get some ideas? Please do not turn this into a > discussion of Thunderbird, I want to understand Firefox direction. > > Some background from my probably ignorant perspective. A few years back, > it seemed like the push was to rewrite major portions of the core apps > in JavaScript. Certainly in the comm-central world, it was considered a > faux pas to write major new code in C++ instead of JS. I remember having > discussions back then on the weaknesses of JS over C++, and getting > major push back by paid Thunderbird developers (who are now mostly paid > Firefox developers). So the philosophy was "JS is a great language for a > complex app like TB or FF". > > Mozilla with their "the browser is the OS" world view seems to continue > to promote JS as the future of app development to the world. Yet within > the Mozilla/Firefox development world, I see a completely different > direction. The recent discussions of [must_use] in XPIDL show how strong > the support is within the Mozilla development community for strongly > typed languages. After all, at the 10,000 foot level that is what we > were discussing, how wonderful it is to have strongly-typed languages > where the compiler catches errors. > > When I've talked about platform with my friends at Microsoft (I live in > Redmond) they have cringed at JS as a development language because of > the weak typing. More recently I have been surprised at the enthusiastic > adoption of NodeJS by Microsoft - yet it is done using TypeScript, a > typed version of JS. Meanwhile, within the Mozilla world Rust is the new > cool kid. With my limited understanding of Rust, one way to look at it > is a language where strong typing is extended to the management of threads. > > Back to Firefox big-picture direction. Rather than moving more of FF as > an app to JS, it seems to me that quite the opposite approach has taken > hold. Again as a big picture, Servo is the test ground for Rust-based > features, and those features will be slowly moved to Firefox (as the > shipping app). Eventually I suppose the goal would be to slowly morph > Firefox into Servo as a fully Rust-based application. Is that a > reasonably accurate picture? > > (Although I do not want this post to be about Thunderbird, the > implications for Thunderbird are strong. I believe it is unrealistic to > expect that Thunderbird will migrate away from dependence on the Mozilla > platform for the foreseeable future. We have assumed that that meant we > should migrate to JS, hence jcranmer's jsmime, my jsaccount, and my > massive conversion of ExQuilla from C++ to JS as an extension. Yet the > XPIDL [must-use] promoters are basically correct that strong typing is a > great thing. JS is a terrible language for a large-scale application, I > live with this daily as errors only show at runtime with JS versus > compile time with C++. Perhaps Thunderbird should be following Firefox > into Rust rather than into being a web app.) > > :rkent > > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform