Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The big problem I see is entrenchment... it's an app where nothing can change. They can't go ahead and just do a Chrome 69 with it.

What I would love to see is a small team in Mozilla create a spin-off Electron app, and do it well. Electron has a bad rap, but it's mostly due to being misused. Electron can be used well (VS Code for example).

Mozilla LightningBird for example. I could get on board with that. Heck, I'd probably help out.

Edit: Jeeze! You guys sure hate Electron. Just because a tool is misused so often, doesn't mean it's a bad tool.



Electron apps are usually pretty terrible.

They have issues with:

1. Memory usage and cpu usage (you're running a browser to run your application)

2. Platform look and feel (doesn't exist in javascript)

3. Platform and windowing behaviors.

I agree with the other commented to you.. if it changed to electronic, I would drop it as well.


Considering Thunderbird uses XUL and JavaScript, it has all the same problems.


Plus the wee existential problem that its platform is going away, instead of improving.


Hence the spin-off app. A ground-up, UX focused app which does not have to meet feature parity, would attract users who are already confused by email clients.

This is a different target audience to the people who typically use Thunderbird at this time.

For some people Apple Mail is enough.


Those people are targeted by Geary.


TBH, anyone I interact with who is tech savvy doesn't use email, so I really don't need those features.


> anyone I interact with who is tech savvy doesn't use email

You live in a strange bubble.


We're not corresponding via email... ¯\_(ツ)_/¯

Between github, SMS, social media, IRC & slack, video-conferencing, blogs, RSS, etc., email has become the medium of last resort. I still get a lot of email, but it's mostly automated notifications, and I usually have to log in somewhere to actually recieve a document because email is insecure.


On the other hand, I find slack and its ilk terrible compared to email.

Plenty of people I know use that at work, but email is really nice, and I love the features Thunderbird has.


I'm not expressing a preference, just pointing out what people do. You'd better like the features email has because it has a hell of a lot of inertia at this point. That said, it does have the killer feature of genuine interoperability, which virtually none of the new contenders even try for.


If someone do not use email hardly can be considered tech savvy. Sorry.

Perhaps he/she work for a company that do not really know IT so force their workers to use limited and limiting platforms, but it that's remain for personal world then no, it's might appear to you a tech savvy person but that's only due to Kant-ian glasses, not reality.


Email clients need an html engine, so all that added baggage kinda comes with the territory.


They need a stripped down HTML engine for rending incoming emails and composing emails. With an electron-based app how are you going to prevent HTML from rending in the view?


> What I would love to see is a small team in Mozilla create a spin-off Electron app

Now this is something you don't read everyday on Hacker News...


With such downvotes, I start to think electron hate is a cult.


I think it's due to a majority of those who have been around the block a few times knowing a trainwreck of a fad when they see one. At the end of the day it's basically taking a web page and throwing it into a container without browser controls. Remember when Windows 95 IE4 enhancements got so much flak and jeers from hackers due to MSHTML? Electron feels even worse than that.

The Web still sucks, and we don't need to shove The Web into native applications. Learn to make an actual program. Heck, QT exists, learn to use it.

I'm not saying you can't use an HTML layout engine for help and info screens, but for the entire program it's pants-on-head stupid. The time spent trying to warp one's web designer skills to make an "app" could have been used to learn how to make an actual application that would've been portable, and take less than a gig of RAM.

I use Teams at work, and it's taking 300+ MB of RAM on startup when it's basically a glorified chat client. Insanity.


> we don't need to shove The Web into native applications

90% of the time I'd agree with this sentiment, but modern email clients need to be able to render rich web content. A browser engine integration is just the reality, at some level.


>but modern email clients need to be able to render rich web content

No they don't.


If they want users they do.

I get more HTML emails than plain-text. I won't switch to a mail client that can't render the majority of my inbox.


I don't think I have any HTML emails that require more than web 2.0 stylings, which isn't really much more than lynx would support, plus images.

Its not clear to me you need anything resembling a modern web browser to render HTML emails. Do they even commonly use HTML5 features?


Then your term "modern" is wrongly used here. I haven't seen any substantial change in the last 10-15 years in regards to HTML mails.


Haha, it absolutely is. Thunderbird’s engine is not really that different in its core ideas.


You have an a bit cached but true point, that's is: there was a so big push to web tech that actual local graphics libraries was left in an old era without real updates. That's the case even of Qt and their QML mess. That's the case of GTk mess etc.

However have a browser as a framework and environment for anything is even worse than actual X server architectures.

So yes, we need to rethink desktops, perhaps looking at past solutions like LispM GUIs and Plan9/Rio but certainly not move toward actual trend.


Explain how QML is a mess? I've been using it almost as long as it exists - which is much longer than the life of the average hot JS framework - and didn't notice the mess. It has problems and limitations like everything, but overall it's very productive.


Essentially because require tons of fragile boilerplate code to work and it's mostly designed with web principle in mind, not desktop one.

You essentially can't found a QML GUI that not exhibit tons of error, from commercial one like TeamViewer to Kde/Plasma. It's surely more flexible than classic widgets but it's flexibility is not designed in a manageable way.


> require tons of fragile boilerplate code to work

Well yeah, you need to implement the properties and data models in C++ and export them - if you are doing it right that is. But the UI code is very quick and easy to write in return!

> it's mostly designed with web principle in mind, not desktop one

Not mainly desktop, true - it is designed mainly for touchscreens, mobile or embedded. It is easy to use exactly because it's not a web technology bent for user interfaces.

> exhibit tons of error

Not for the things I've been working on, which includes KDE / Plasma and many commercial applications.


I don't get it, why can't anything change? In fact, the platform in which Thunderbird runs - XULRunner - is the equivalent of Electron for the Gecko engine, and a bunch of different applications have been done with it.


I use Thunderbird because it is an application. If it became a Javascript app I and many others would surely switch to some other application.



Most of the actual guts of Thunderbird are in mailnews/, particularly mailnews/base and mailnews/db for the this-is-what-eats-the-CPU things. That code is almost entirely in C++, although there is an effort to try to rewrite stuff in JS (which has gone slowly because, hey, that's 100KLOC of C++ you have to move at once).


Thunderbird is an XML+CSS+Javascript app. Just like Electron (well, Electron is not XML).


By that definition would you call Firefox before version ~40 a javascript app? It obviously isn't despite using XUL and the elements implicit in that. The same is true of Thunderbird.


Yes, I would and would not ;-)

The technology in use is called XPFE. For a full (graphical) overview, see http://mb.eschew.org/1

It is different sorts of XML (XBL, XUL, RDF, DTD) controlled via Javascript and styled by CSS running on top of a C++ runtime. The components, the runtime exposes, can be accessed directly from within Javascript. Most of the application specific stuff is written in the XML+JS+CSS domain. There may be the one or other app-specific support library, but in the end, they all run on top of the same xulrunner binary.


The underlying rendering engine is in C++, of course. As is the JS implementation.

Which is to say, exactly like Electron. The only relevant difference that I can see between XUL and Electron is that the former had its own non-HTML-based markup language for UI.


Curious what you'd have called it.


Looking at the languages used in Thunderbird source (https://wiki.mozilla.org/Tree_Rules/comm-central#Thunderbird):

    $ cloc  build/ ldap/ editor/ mailnews/ mail/
        3938 text files.
        3848 unique files.                                          
         949 files ignored.

    github.com/AlDanial/cloc v 1.80  T=6.01 s (497.6 files/s, 127309.9 lines/s)
    ---------------------------------------------------------------------------------------
    Language                             files          blank        comment           code
    ---------------------------------------------------------------------------------------
    C++                                    360          36718          26562         207587
    JavaScript                            1098          39149          63692         195828
    CSS                                    278           7371           2664          30455
    C                                       83           5339           8278          29463
    C/C++ Header                           413           7091           8979          24034
    IDL                                    238           3205              0          18852
    XML                                     40           1365            690          16902
    JSON                                    24              7              0           5367
    DTD                                    180            772           1360           5344
    Python                                  24            893           2422           3740
    NAnt script                            118            489              0           2512
    Objective C++                            5            461            163           2231
    HTML                                    62            178             22           1666
    XHTML                                   14            186             98           1096
    INI                                     28             46             12            687
    Windows Module Definition                7             24            156            354
    LESS                                     1             33             52            183
    make                                     4             36             22            133
    TOML                                     1             17              7            110
    Freemarker Template                      6             24              0             98
    WiX source                               1             11             25             71
    Ant                                      1              6              5             49
    Markdown                                 1             10              0             49
    Bourne Shell                             3              8             11             23
    Windows Resource File                    2              6             11             15
    ---------------------------------------------------------------------------------------
    SUM:                                  2992         103445         115231         546849
    ---------------------------------------------------------------------------------------


You forgot db/mork, which is another ~100K-ish LOC (at least as measured by wc -l).


Oops! I'm not actually familiar with the Thunderbird source's organization, so I just went by what was marked as owned by Thunderbird in that wiki page I linked.


In practice, Thunderbird is all of comm-central sans suite/ and chat/. calendar/ used to be Sunbird [a standalone calendar client], but those people decided to channel all of their resources into Lightning instead, so all of the Sunbird-specific stuff was ripped out.

Lightning is strictly speaking an independent project from Thunderbird, but it is far and away the most-used extension in Thunderbird and parts of it (particularly the backend) have essentially moved into the TB distribution for various policy reasons. There's some other stuff that's basically build system, release engineering, or testing gunk, but that stuff is mostly Python anyways and won't impact the SLOC metrics too badly.


Mere line count does not tell a truth, simply because you can do more thing with a SLoC in a language than another, also sometime to be on certain platform you need an enormous amount of code only for them that's have no other purpose that boilerplate for a platform.

Too simplistic :-)


Most of the backend is written in C++. This is the mail protocol suite, the message database store logic, most of the internal account glue stuff, and even the bits that drive the main message listing (although that's moving to JS because Mozilla is killing off nsITreeView, a move which I fear for the performance implications of). The parts that are in JS are most of the code that drives the actual display. Of the MVC for the display, essentially the main model and view are both implemented in C++ whereas the controller is JS.

The largest pieces of the backend that are in JS are the RSS functionality and gloda (one of the search backends), as well as half of the MIME parser.


is there a node_modules directory that didn't get ignored?


Thunderbird is a XUL implementation with a lot of JavaScript being used for its UI. It's as close as you can get to being the Electron of Firefox without being in a PPA.

The most recent version (Thunderbird 60) introduced sweeping UI changes that went much deeper than even Chrome 69's.


There is a big difference between using an object model designed for UIs and using the DOM or canvas, even with the same language (JS). An appropriate model can vastly simplify and accelerate layout and painting. I'm thinking of QML here - the performance situation is probably similar with XUL, ugly as it may be.


A total rewrite almost sank Netscape[1] long ago. It's still generally a bad idea.

There's an electron based mail client called Mailspring[2], and having used it for a few months, I definitely understand the antipathy towards electron. You might like it.

[1]: https://www.joelonsoftware.com/2000/04/06/things-you-should-... [2]: https://getmailspring.com/


Huge rewrites of firefox are saving it today. Seems like the best way is to rewrite in chunks allowing you to use new bits in the existing application.


Incremental rewrites. The netscape rewrite was started from scratch, IIRC.


It's incredible how much this still holds true today. Thanks @spolsky!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: