Hyper 2, Electron based terminal
zeit.co
zeit.co
First, the author is not doing this for his CV.
Second, the benefits of using electron are enormous for any JS developer and there are a lot.
Third, I also hate electron apps and wouldn’t use this app, but I’m not going to jump back to “why electron is bad” discussion, since I can’t suggest anything better in 2018.
I think they are still unmaintained and also are lacking the community around it. I think GitHub embracing Chrome-wrapped-apps was a significant move, since no other company did something similar for desktop javascript applications.
Maybe we will need to wait a bit more, until some of the big tech companies realises that having better QT / GTK bindings and build tools, examples, proper documentation will benefit a lot the company and the community around it. Until then, we are stuck.
That seems to be one of the main drivers behind Electron's popularity, others being easier cross-platform support (or at least the perception of that) and the vote of confidence in its stability from the likes of MS using it in their products (primarily VSCode in MS's case).
What would be your alternate suggestion, and why? (genuine question rather than a rhetorical dig: I plan to tinker with Electron for a couple of projects soon so if there is something better (or simply that is a suitable alternative to consider) out there I'm not aware of, I'd like to be made aware)
* package management and modules actually work
* huge ecosystem of packages
* ability to use native code modules in needed
* has webassembly too
* runs a huge range of other languages. It can fill a role similar to the JVM and .Net runtimes in this respect.
> * huge ecosystem of packages
This is satire, right?
NPM (both the tool, and the repository of packages it pulls from) are a joke to anyone outside the NodeJS bubble of Stockholm syndrome.
A company that was given $8M in venture capital and can't find more than two people to work on the main way people interact with their service, cannot be taken seriously.
Remember when everyone found out that the progress bar made NPM install packages 3x slower?
Then lets get into the actual 'ecosystem'.
The community actively encourages and embraces the sort of culture and decision making that leads to an entire module to do what you can do with this: `$foo % 2 === 0` (i.e. 'is even')
You would type more characters just requiring the module than you would just using the modulo operator.
Then you find out the same author published another module that literally just calls the other one and negates the returned result.
Let that sink in: a module, to do nothing more than prefix a function call with a `!`.
No fucking surprise the 'ecosystem' is huge. What other people call "writing code" NPM module developers look at as another opportunity to bump their ridiculous package count e-penis.
You can use NPM and NodeJS if you want, you can even "like" them. But don't for a second think that the community and practices of that environment are "good" by any comparison.
Meanwhile, Python versioning of plugins is really broken, unless you use virtual environments. Maven seems to be fairly hard to integrate with IDEs (Eclipse seems to come bundled with a separate one, not sure about IntelliJ). Most other package managers I use don't have enough packages to be as useful.
It is not broken - you ARE supposed to use virtual environments. I would say its is much saner than nodejs ecosystem where every conflict is being solved by having multiple versions of overlapping dependencies.
I've also had a compilation problem on Windows caused by Python not being installed (IIRC, the SASS package needed gyp, which uses Python). That was exceptional: I expect npm packages to install without issue, although I'm still bothered by how many dependent packages every tool seems to need.
Let me guess, no `iseven` package?
Learn a new language (Python/C++/other) in order to learn and use a different framework (Qt)? Thanks for your advice I'll down tools right now and get on with that using my time the way I want to.
(Actually I've never developed anything using Electron yet, though some personal projects may get implemented that way in future should they ever get off the ground)
I fully understand much of the criticism of Electron and similar: the results are rather bulky in terms of both package size and memory use (and if you aren't careful sometimes CPU use) which can add up to quite a performance hit if running a number of small apps/tools that are large because of the framework. For interactive (or script-called) non-resident utilities startup time can be a significant issue too.
But there are a lot of entitled people out there who seem to be of a mind that because they don't like Electron (for those reasons or whatever else) they have the right to demand that developers stop using it. If you don't want to use an Electron driven application then the solution is to not use that Electron driven application. There are no doubt alternatives out there. If not then the deep knowledge you have that makes you an expert on why it would be better developed other ways should allow you to write your own and compete.
This is true for both paid-for services like this (show them who is boss by collectively voting with your wallets) and free and/or open source options (in which case making demands of the creator/maintainer seems even more egregious IMO).
</rant>
Cmon tho, any competent engineer can switch between languages without many issues.
Not really IMO. If users don't like it, they can usually use something else.
A point I didn't make clear at all is "you have used Electron, eww" is a poor judgement. "It is too slow for my needs, look at this benchmark" or "it takes too much RAM, look at the problem this causes" or "it takes a while to load, look at this metric that shows the effect it has on me" are all valid and constructive criticisms. "I don't like part of what, to me as a user should be a black box, is made with" isn't (if it works for you, it works, if it doesn't for a practical reason then it doesn't, how it is made and how the maintainers might solve your issue if they chose to address it is their problem). If going from a fellow developers PoV then by all means give constructive critique but "you use Electron, you a stupid" (a tone I've seen a fair few times) isn't that, and as a developer if you want an X made a different way go make an X that way (or, back to user-land, go find one made that way, there will probably be other options).
> Even if it’s forcing a square peg in a round hole?
This can be a problem created by switching language (or framework, or other) without sufficient acclimation time: you end up using the new tools like they were your old tools, which might produce something that works badly because the new options are not optimal for that construction pattern or at least that pattern does not use the other tools to their best advantage. Have you never heard the pained yelps of "but... that just isn't Pythonic!" or similar?
> Cmon tho, any competent engineer can switch between languages without many issues.
Depending on experience level, that is rarely without at least some context switching cost even if you are already familiar with what you are switching to. Maybe you are a natural star engineer for whom this is as close to zero as makes no odds, but most of use are not quite that perfect!
well it might in relative terms, but a pyqt app is almost certainly going to be an order of magnitude faster than electron.
But pyqt apps are way faster than electron
If you think Python and JS are about the same speed then it is because of Qt itself, but certainly not because of CPython.
Citation needed. As I've said numerous times before, saying one language is faster than another is pointless. You have to give a full context around it. What particular scenario is CPython slower than V8?
While it's true that a pure CPython tight loop will be slower than one in V8, I have a hard time imagining that being the bottleneck of desktop applications.
Never thought about it this way but you're right. I could very well write an interpreter for C that's slow as molasses and I'd be willing to be that no one will try it and say "C is slow."
It doesn't seem like languages that are already interpreted get that courtesy, though. V8 isn't the only JS engine, after all.
A desktop app would not see any difference. A sysadmin script neihter. Data analystics is made using numpy/scipy/pandas. Web sites bottleneck are incredibly rarely the server side scripting language, and when it is, you go rust/go.
But for our current debate, electron VS PyQT, well yes, the C++ does the heavy lifting and you get to use Python only for the stuff it is good at. Win-win.
The problem with using PyQT is making an exe or making fancy graphics is harder than in electron.
Everything else, and I do mean everything else, is easier and more performant with PyQT.
Ehhh V8 is pretty competitive with C for number crunching. Where are you getting that 50 times figure from?
If you're using parallelism for non-IO-related reasons, then in either language, you'll probably end up using multiple processes rather than multiple threads.
V8 has been running many many laps around cpython for the use cases I have been using it for, and PyPy has generally been slightly slower.
However, the real problem with PyQT is that Python is relatively garbage compared to JS and that's why it's not nearly as popular as JS.
This will allow you to fully interoperate Qml and .NET (Mono/.NET Core/Full Framework).
Qt had pretty good Java support with Qt Jambi. But nobody cared and they cancelled the product.
I'd argue that in some situations interpreted languages are much more dangerous compared to a simple compiled language like C. With new "safe" languages you do not encounter an error most of the time, but when you do see an error it is quite discouraging to see that your "safe" language fails and you don't have any idea why it fails.
In order to be safe we need simplicity. We need to move the main part of the program to compilation time to have static checks. We need to write comprehensive tests on the parts we leave to the runtime. We need to check inputs at every stage.
We need to be very very careful when using concurrency.
In that matter I find the OpenBSD developers' use of C much more secure than any package on npm.
OTOH C++ is a different beast, it is complex, it has many fine-points to master.
I'd say programming in Go and using QT could be a good choice, if you're considering memory safety above all things.
I think it is very odd that you argue for C, which has the concept of undefined behavior, which is much, much worse than any kind of failure the memory-safe languages without static types can offer.
> In that matter I find the OpenBSD developers' use of C much more secure than any package on npm.
Bold claim, they still fall victim to undefined behavior:
https://www.cvedetails.com/vulnerability-list/vendor_id-97/O...
I'll take slightly more complex syntax over untraceable dynamic weak typing of JS.
How many times have you got random undefined?
Disagree. I'd argue using Electron actually holds back developers, because they don't learn languages other than JS.
First of all, JS isn't a bad language. It's also a lot different in 2018 than at its worst in 1998. It's becoming so common because it is a pragmatic choice that is fine to work in in 2018.
Secondly, there is the giant ecosystem of transpile to JS languages: Typescript, CoffeeScript, PureScript, Elm, Haxe, Fable, etc.
If that doesn't count, Electron's duct tape itself and many Node packages are native code in C/C++.
Further beyond that, Web Assembly is already expanding the language diversity in the Node world. An immediate example is that the major source map processor used by a number of debugging projects (including VSCode) has already moved parts into Rust via Web Assembly: https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with...
Is "continuing to use JS skills" a bad thing? What makes "branching out into other things" a better thing? We will likely continue to disagree that JS is a bad language. While I agree that learning a gamut of languages is a good idea for any developer (and will heavily encourage devs to challenge themselves to try to learn different languages with different paradigms to keep from growing "stale", to keep up lifetime learning), it's not positive or negative value for a platform like Electron if it "requires" learning a new language to use it. Do you maybe think people are more likely to learn JS as a first language? That too is an interesting assumption.
Beyond those value opinions, existing JS skills may not be the only reason to use Electron. Existing HTML/CSS skills may be the more important reason for some developers. Cross-platform GUI toolkits haven't kept up with HTML/CSS in a lot of areas including ease of testing and availability of designers with design skills. Use of JS may be entirely orthogonal to that decision.
(Certainly in my own usages of Electron, that has been the larger factor. Xamarin seems like the next best bet, but it's still a lot easier for very small teams with no platform-specific UI designers on hand to audition design work in a handful of browsers than to bounce back and forth between a variety of iOS and Android emulators and devices.)
Whether or not that it is "very few" people using Electron today that don't also want to directly use JS is a demographic question that you also seem to conflict with some sort of value judgment. Even if "very few" people are using anything more than "just JS", that doesn't mean it is valueless that people have an option to leverage Electron with other languages.
Even if demograghics did matter, I already pointed to a case where Rust-sourced code is shipping in major Electron apps (I know VSCode has dependency, I believe Atom has a dependency). VSCode is written entirely in Typescript, and I don't think it's the only major Electron project doing so (and if we start to play the dependencies game, a lot of Open Source in the Node world is Typescript). Even Atom seems mostly "vanilla" JS, but still has ~7% of its source in CofeeScript, and its "vanilla" JS has a lot of ES2015+-isms that would look unrecognizable to older versions of JS, and I've heard it argued that ES2015+ starts to be a different language than what a lot of people that have not followed JS in the last few years imagine when they discuss JS.
"Thing X is bad because it discourages people from learning about things which are not X."
I would argue that JS platforms actually make it much easier to try out other languages because change languages while keeping the rest the same. Tons of languages compile to and/or run on top of JS.
Not helping with my confirmation bias though.
We now have another 150MB/window application. Great. How about pushing the envelope further and using a Quake engine as the base (it has a console).
https://i.imgur.com/Q6307w3.jpg
The terminal has pretty good ANSI X3.64 support and can connect to a Linux box via telnet.
I mean HTML / JS based solution aren't all bad, it is just we have far too many baggage to carry in the current implementation.
Bold.
Hyper 2's primary focus appears to be features and extensibility.
I doubt they will be in the same ballpark.
https://drive.google.com/file/d/1eQJPan-hs4AgX1pK45WS2UNjjVg...
source: https://danluu.com/term-latency/
DT does not require Electron: There are also embeddings for Qt (using QtWebEngine), Atom, Theia - or you can use a desktop browser. If you use Electron, it is only used for the "chrome" (menus etc). The "backend" (server) is a C program. (It works great on Windows using WSL.) There is also a simplified pure-Java backend.
Hyper2 is clearly faster. Using canvas seems like a win in that respect, but I'm concerned this limits the ability to style the output using CSS. Using a more structured representation (e.g. DOM) also preserves valuable information about the output. The ideal might be to have a structured representation as "the truth" but render to a canvas. This might still be less flexible in terms of using CSS, but that might be an ok tradeoff.
Om H2, if you change the window width, wrapped lines are not re-calculated.
H2 does not "remember" tabs. I.e if you 'cat Makefile', and copy the output, you get spaces, not tabs.
H2 shows a lot more errors when running the vttest test suite.
DT supports hyper-links to file positions. For example clicking on FILENAME:LINE:COLUMN: (as produced by many compilers) will open a (customizable) editor and go to that position.
DT supports "printing" images, rich text, and general HTML.
DT supports tabs, draggable panes, detachable sessions (like tmux/screen), and a builtin input editor.
As far as I can tell, putting it in electron would mean that you could embed arbitrary HTML structures inside the terminal (like web page previews or something), but from what I've read, it doesn't look like that's the goal.
One thing that it’s amazing at, though, is taking promotional screenshots. It hides the OS bar by default, plus looks just generally great.
For instance: https://github.com/snapcrafters/fkill
But yeah, people use the term to mean different things.
- Makes it possible for people who don't know (and/or don't want to know) anything beyond the web stack to build "desktop" applications.
- Easy to make it look nice by default, because you can reuse all the work that went into building the browser as a runtime, + you have a ton of eyecandy JS libraries to choose from.
Longer-term: new generation of command-line tools with different ux paradigms for interactive use?
Like, <3 TERM=linux and "everything is text" but there are also a lot of possibilities here which would be interesting to explore.
Funny that people "get" jupityr notebooks but not this.
I've done a little bit of experimenting with "alternate UX and display paradigms" shall we say, and that is a long term goal of the project too. Right now the current implementation focus is on filling out the list of standard boring terminal features which everyone needs and expects, plus some more performance work.
The comparison with jupityr notebooks is a good one and it would be nice to support a richer experience while still being keyboard and command line focused.
Electron is just half remembered dream of flash, but without the efficiency or programming environment. That compiled once and worked the same everywhere.
We threw away flash because the iphone was underpowered, only for it to be replaced with the horror that is modern js centered webdev.
Also a sad thing: Flash sucked for building UIs, because it did not have a set of standardized elements and interactions built in. I'm thinking of all the trivial details like mouse pointer changing when you hover over a text field, or a text field that supports arrow navigation, selection, copying and pasting, a context menu, etc.
Now the browser, as a runtime, has all those expected UI interactions built into all the standard HTML components. And what does the web crowd do? They throw it all away by building their own half-assed reimplementations of every UI element. There's lots of man-hours being wasted replicating the problems of Flash.
Like iTerm2? ;)
https://iterm2.com/documentation-images.html https://github.com/lunaryorn/mdcat
There are probably Linux terminals that can do the same.
Funny that people "get" jupityr notebooks but not this.
I think one reason is that Jupyter does not sell itself as a UNIX terminal, so people feel less strongly about it. Also, Jupyter uses a web browser that you probably have running anyway.
pandoc hello.md | domterm hcat
This does a much better job than mdcat, because it can use variable width fonts, bigger fonts for headings, and can handle raw html.
If your target machine can run an electron based shell, you can leave the shell alone and just run your web app.
>- Makes it possible for people who don't know (and/or don't want to know) anything beyond the web stack to build "desktop" applications.
Again, changing the shell does what exactly? Just build the web app you knew how to build...
With that said, first class integration around a shell could definitely make me change editors. As much as I like terminal editors, it's a very limited medium to write an editor. I imagine a Vim/Kakoune/Emacs/etc could be written in a GUI and have even more features yet still retain first class focus on keyboard UX.
Makes me want to make something like that for Kakoune! Wonder if Oni will ever get to the state where you could write different backends for it; ie emacs, kakoune, etc.
I was talking about GUI editors. I already use a term editor. I even game an example of vim/kakoune/emacs, ie, term editors.
In your opinion, what does Emacs GUI do that a terminal (or emacs in term) doesn't do well? Ie, how is it best exploiting the GUI aspect?
If you're a vimmer and want to start out with emacs, try spacemacs. I used it for a year before building my own emacs config. It's an incredible program, won't take you long to get running if you're used to vim, and after a week I'd bet you'll have a hard time going back to gVim.
Back to hyper. Hyper disappointed me.
1) Text wrapping is a such important feature in modern terminal emulators I cannot live without. They added text reflow in 2.0 as far as I checked. But when you use you would see it is complete disaster. Text does not wrap sometime. Sometime it completely erased. So long story short it is completely buggy.
2) Start up time is horrible. Electron based app should generally design a background service and a UI process. This way when you launch UI it would be way faster than cold start up. I do this for chrome, slack, discordapp, etc. I wish they had better architecture and was a option to enable background thread or service.
The CommandLine blog is a fascinating read of Microsoft's progress over the last three years:
https://blogs.msdn.microsoft.com/commandline/
They've delivered a lot (much of it WSL-driven now that Linux apps run inside it more often), even if they haven't added your particular wishlist items.
For revamping a part of Windows that had almost died on the vine, they seem to be doing a fascinating job, over the last few years, even within Windows' strong mandate to maintain backward compatibility at all costs.
"
I don't even know where to begin with this. So, the suggestion for "the stack for my thing is so large and deep that it takes forever to startup" is not "hey, maybe don't do that" or "hey, maybe we should find a way to optimize", it's "make sure it's always warm".
I don't even begin to understand why this is a world we want to live in.
I'm surprised to hear that there are people who fully close and quit their terminal emulator.
Oh maybe that's the whole point. They want "it's javascript all the way down".
I think I'd literally rather use a shell built on actual turtles. A turtle-shell, if you will.
Additionally, this annoyance probably has more to do with the fact that Electron is used by developers for other developers. If it would be used to replace Excel the rage would probably be less pronounced. I'm still wondering what would happen though, because of all the subtle ways in which the UI experience would be broken for someone who's used to Excel.
Its a clear example of "We can do it but should we do we?" The answer is NO!
I personnaly think a terminal based on web technologies is not something I would use, but if people are happy to use it, as soon as they are aware of the tradeoffs, why not?
This comment (though probably by mistake) manages to perfectly illustrate the "reinventing things that we don't even understand" mindset that's going on in most of tech.
(Also, there exist terminals written in C++ with Qt, and QtWidgets has had CSS support for custom styling for at least 10 years, probably much longer.)
/me goes back to emacs
macOS built-in Terminal.app has had transparency (even varying transparency for focused vs background windows) for years.
Edit: oh, maybe you were being sarcastic? It's been a long day.
I understand the appeal of having html/css hyperdynamism everywhere.
And at the same time I don't want to pay the price to the point that I prefer living in lotech linux land. I value frugal over potential flexibility these days.
I told that often, but the other day I booted win9x (on a pentium 3 or less, some MB of ram, maybe 64) and ran an old copy of turbo pascal 7 (dos). That thing was flying. It had 80% of what I wanted (including, hear this, ascii shadowed floating editing windows.. talk about overfancy) and used zero resources.
Today to have that kind of interactions you'd need a somehow recent quad core and 4GB+ of ram. All that mostly for a bit of eye candy (css may be of some use to decorate tokens/entities to give additional info, but I rarely see that).
The compilers and IDEs from that era were truly pieces of art. I also remember TopSpeed Modula-2 that also included its own task scheduler for real time DOS (using clock interrupts, I guess).
That said, I have not disliked my experience with VS Code and Hyper. I like iTerm's performance better but I aesthetically prefer Hyper. I like Sublime Text's performance far more than VS Code, but VS Code has come a long way and is free, and I don't use it enough to justify paying for ST currently.
Some may argue that PowerShell fills that void. While it helps, it is not the same.
This is also fascinating: https://github.com/Microsoft/console/issues/57 - a proper PTY for Windows, implemented by Microsoft, with the ConEmu guy giving it a thumbs up.
I'm really looking forward to learning Flutter (https://flutter.io) so I can finally do some mobile based application development in a cross platform manner without having to use JavaScript. Prior to Flutter I was considering Swift and Kotlin and just maintaining two code bases (and two languages.) Hopefully I won't need to now.
On desktops I would just go native. Is it really that hard to maintain several code bases? Is there literally no other options at all? I'm considering Go + QT here, or something along those lines.
And Dart is about a million times better than JS for the way I like to think about code.
...god of bloated software and goddess of complex solutions of simple non problems got their blood sacrifice and the sun will rise again.
Why would you use a full web stack terminal emulator, over.. well a normal native and actually reasonably fast terminal emulator?
The trend is catching on, so maybe one day we can't even reach for a native email client because it will be unmaintained in favour of the hackable html webstack email client.
Congratulations on reaching v2 tho!
And I agree: Electron is horrible to deal with as an end-user. I've been using Vim for some time and then decided to use VS Code. The integrations, plugins, and everything else were awesome, but man the 3-4GB of RAM was just crazy. Despite the fact my machine has 16GB of RAM, I'm dealing with quite a few VMs and Docker containers locally, so actually 16GB isn't a lot.
What kind of files do you usually work with? Because I've currently got two 10000+ line python files open which are part of a project that is at least a million lines of code, and my VSCode instance is using less than 300 MB of RAM.
That also coincides with:
https://medium.com/@caspervonb/why-i-still-use-vim-67afd76b4...
And
https://github.com/jhallen/joes-sandbox/tree/master/editor-p...
Notice how those numbers don't add up to 100%. They let you pick multiple answers on the survey. Therefore, I would consider Vim percentage even lower in reality since many people would specify it on a survey since they basically have to use it while working on a server.
Vim is used by a small but very loud minority. Don't listen to them - they're optimizing for the wrong thing (keeping your fingers on the home-row of the keyboard) at the expense of just about every other aspect of computing.
It would be good if you could unpack this some more and explain it in detail. If I'm wasting my time then I'd like to know why and consider whether or not I should change my practices.
The part of your statement that stands out to me is, "keeping your fingers on the home-row of the keyboard". I think this is called touch typing and I can assure you, I don't do it. I'm fast on the keyboard, but not as fast as a touch typist. I throw my fingers all over the place, actually.
Vim for me simply boils down to being a fast, simple, lightweight tool that offers years upon years of development in both the core of the product and plugins, themes, etc.
I'm not really sure how my choice of hammer can be optimising for the wrong thing if it does the same thing your hammer does and we're both productive?
It does not do the same thing as my hammer. Not even close. As a matter of fact, with Vim you cannot get even half the functionality of a good graphical IDE or even something like VSCode without drastically lowering your standards.
> Optimizing the wrong thing...at the expense of just about every other aspect of computing...
Vim lacks discoverability. That's the first major aspect of computing that Vim just completely throws out the window.
Speaking of windows - Vim also lacks integration with the rest of your graphical OS by default. You can't use your normal graphical file picker, you can't just drag files into Vim and you can't easily configure Vims activity to be reflected in the rest of your OS (in areas such as recently-edited-files and so on). Sure, you can get a graphical version of Vim, but now you have 2 problems - you have to configure different versions of Vim to use it the way you want to.
Even the mouse pointer a hallmark of modern computing, is largely useless in Vim!
Also, text-based configuration is throwing out another majorly useful aspect of computing: convenient and easy to access settings.
Anyway, if you enjoy editing text like it's 1976 - that's fine with me. Just don't try and tell me it's as good as my hammer because it simply is not.
The scary thing for me, even after getting used to navigation, was the lack of it feeling like an IDE - autocomplete, compile on save, etc.
After installing some plugins - it's now wonderful and I enjoy it much more than VSCode.
There's a ton of little extra benefits you get from the switch besides the usual - for example, when you use a mouse, the time you spend navigating visually is kinda wasted. With a keyboard, that time is spent thinking about "what's the next parenthesis" or "what's inside these quotes" which turns idle time into something more useful like getting more familiar with the code.
Correct indentation when pasting is a pain in my opinion.
And somehow I find the VSCode's multi-cursor feature so much more convenient than Vim's macros.
That’s not an unpopular opinion, I suspect it’s because multiple cursors provide an extremely tight visual feedback loop (feedback after every action) as compared to macros where you kind of just shove actions into a black box and pray it works correctly for the next location you test it on
:set paste
:)couldn't be easier my friend
Aside from that, electron apps do not look, act or feel native.
At work I need my 16GB but that's because Visual Studio and the app I'm working on the most are memory pigs. Visual Studio 2017 doesn't really have any compelling features over 2005, but 2005 ran quite comfortably in 2GB, so with this piece of software alone I need a lot more memory for no gain.
At home in the other hand I have a fairly low end (and now 3 year old) dell laptop with 8GB of RAM, but with my current c project and DE (i3, riced way more than necessary) I'm using less than 2GB (with vim+unix as the IDE), so plenty to burn when required. This is a more productive environment too, I have a fully incremental build that will compile, run unit tests and run memory tests in the blink of an eye every time I save a file, so I'm getting much more feedback much quicker than I do with Visual Studio.
Devs on lower resource machines will also be dogfooding much better. If their apps are slow and bloated then they'll feel the pain their users will and be much more likely to address them. Windows 10 might have a start menu that didn't take several seconds to open if the developers weren't on top of the line surface pro's.
Some developers will probably need more than that because of the resource demands of their specific fields, but other than that, 640 KB ^W^W 4 GB should be enough for everyone.
It's reached a point where I use my iOS devices for Spotify and/or Slack just so my laptop can run whatever other crappy Electron app I need to use.
I find that VSCode is almost worth it, but that's perhaps one of the few exceptions (and I still go for Sublime Text most of the time).
Any app that needs to be persistent really has no business using Electron. It's a terrible waste.
What does this even mean? UTF-8 decoding is trivial. In fact it's designed to be simple: it's a prefix code that is self-synchronizing.
Rendering glyphs and composing characters is hard in comparison. But Cocoa, Qt, etc. have had great support for rendering unicode for ages now.
I have no recollection of having problems with iTerm, Terminal.app and many Linux terminals for rendering unicode the last decade or so. (Only with people setting their locales wrong.)
Being web-based gives you a standard way for fetching and displaying content. It's just a matter of time that the performance improves. Especially when many people are experimenting with it.
> maybe one day we can't even reach for a native email client because it will be unmaintained in favour of the hackable html webstack email client.
It's definitely possible, once the browser becomes the new OS.