Chromium devs want the browser to talk to devices, computers directly
theregister.com
theregister.com
Web pages and JavaScript are the only universally trusted medium for sharing information and simple software. Making it possible for news websites to touch ethernet/usb/serial/gpu compromises that. Same goes for optimizations ilke JIT'ing and WebAssembly which have certainly done a great job making it possible for Gawker to reprogram the microcode in AMD K8 CPUs. Has the long tail of browser innovations made the web go faster? No. It went faster in 2010 IMHO. Whatever performance glut the geniuses who work on Chrome end up creating, it'll just get gobbled by more aggressive display ads and things like wild-eyed web component frameworks.
Only in the sense that we can fix child hunger rather than spending money in e.g. condo development.
That is, technically yes, but nobody with real means cares enough to do it, and those without means don't care enough or have enough power to pressure them...
Imagine if major OS platforms had a common UI framework that any language can produce a UI for, every major browser already supports WASM, why not a WASI based common runtime that would benefit every OS that supports it. I havent seen anyone else discussing this I've just been contemplating it for a while and I'm not sure what it would look like short of recreating a cross-platform X window system.
However, as crazy as I sound my reason for this is simple: the issue with a lot of UI frameworks is that they tend to be language specific and are mostly useful to the languages they officially or directly support. If you can build a UI compatible stack that any language can target, you can gain a lot more adoption. I could easily see Rust, D, Go, etc supporting a common UI runtime.
Electron sells itself rather easily cause most devs are familiar with HTML / CSS / JS. What we need is a cross-platform cross-language solution that isn't XML based but something a language can implement rather simply, or maybe even a compiler / standard library could manage.
[0]: https://wasi.dev/
This has been attempted a number of times, both in the browser and without, and it always comes down to people complaining that the widget set isn't "native" in look and feel and operation, and the pendulum swings back the other way.
People used to complain that browser widgets didn't confirm to the OS's UI guidelines. Then you could style them with CSS and things really started looking crappy, then you have web UI frameworks that forgo all that customization (or at least discourages it in the name of ease of development).
You are confusing cross platform UI with frameworks that have programmer art widgets and no cross platform polish - eg. GTK+, FLTK, and even to some extent QT widgets (and many more). When people say widgets don't look native they usually mean "the widgets suck", you can create beautiful cross platform apps - Electron has quite a few because it allows standard designer tools from web dev.
Flutter is another promising development, but the desktop port seems underwhelming - it's obvious the widgets were intended for mobile apps, they will probably need a custom widget set to cover desktop UI - but the approach is sound.
Electron apps are also heavily customized, but ignore platform UI conventions. The buttons may have lovely drop shadows, but basic interactions (menus, undo, drag and drop...) are routinely broken or work in some discordant, unfamiliar way. This isn't meeting professional needs; it's that web tech sucks for building actual apps.
And even if web tech improved, there's still the cultural bias towards re-invention and churn. Web dev will always cons up a button from a div and an onClick handler, no matter what the framework provides. There's no mechanism to get web apps onto a shared UI platform because the gravity of the web is dispersive.
All those specialized tools can get away with having completely-unlike-anything else UI/UX because people are paying for them and they are considered best(and only)-of-breed.
Electron apps are cross platform only in terms of them looking alike on different platforms, because they use the same widget set. If slack was a truly, full native app on OSX, it wouldn't look like it does.
I don't understand your point - non-native widgets are not a deal breaker and there are plenty of examples, Electron being the most common non-native cross platform framework recently (it has technical limitations but even the subpar performance doesn't make it a deal-breaker). So it's possible to create cross-platform UI frameworks and most of the the most successful apps I can think of are using some version.
I'm pretty happy with web pages as a GUI framework. If I needed a desktop GUI, I certainly would not want my binaries to be 200megs with Electron. If we're OK trading away drop-down boxes, wizards, and installers, then it's actually possible to build 10kb static native win32+linux+bsd+mac terminal programs using ape. https://justine.storage.googleapis.com/ape.html
We're discussing how to avoid this overhead.
I'm advocating for some small cross-platform cross-language API / runtime / framework (not sure what it looks like, but since most languages are targetting WASM (if this is what's making you think I'm advocating for Electron... then you missed my commentary about people making stand alone WASM runtimes) as opposed to solutions that are platform or language specific, and when I say platform specific lump in web (which means Electron too) in that bucket.
What most people want is to be able to use their own preferred language and do a UI without having to import a bunch of C or C++ libraries that will add additional overhead over their language.
Edit: Just saw the post you were referring to, it would of made more sense had you linked to it:
https://news.ycombinator.com/item?id=24256883
While this answers the 1 binary problem while producing a rather massive executable file larger than Electron in many cases, this still doesn't solve the problem I'm mentioning: We need a cross-platform cross-language UI solution. If you want to do away with things like Electron, you need to consider all platforms and all languages.
Given Chromebooks etc that seems to be exactly the plan
I hate it just as much as you do.
People have been trying to fix native software development forever, from the JVM to electron. But the web remains the only open platform for distributing software that works on every device. Fixing native software development will eventually mean making the web native, so that your OS is just a browser.
> Making it possible for news websites to touch ethernet/usb/serial/gpu compromises that.
There's a simple and obvious solution for that, which is to make them ask for permission, just like with desktop notifications.
> Same goes for optimizations ilke JIT'ing and WebAssembly which have certainly done a great job making it possible for Gawker to reprogram the microcode in AMD K8 CPUs.
What kind of argument is this? Someone who doesn't need a technology uses it anyway, so ... it's worthless?
The OS will become a set of poorly debugged device drivers?
Frankly, it is hard to imagine a more hellish future for personal computing than that.
Involving Google as a gatekeeper, of course.
Google is trying to establish the level of control on the Web it has on Android.
Why do you think PWA's are being pushed so hard by google? So people can build PWA's that also run on Chromebooks. No need for native apps
On Android they already crawl your app with various devices when you upload it to Google play and let you know about any crashes or accessibility issues. Nothing to stop them capturing the content too if they wanted.
This has little to do with Chromebooks. Google just want to be the single purveyor of the web, period. They already have the most popular browser. Firefox and Safari fought them on quite a few fronts [1]. Then Edge became Chrome. Now Mozilla basically laid off everyone. Safari only exists on MacOS and iPhones (a large market, yes, but small in the grand scheme of things).
Chrome will only accelerate its blatant disregard of anyone and push more and more internally developed barely tested crap.
[1] https://mozilla.github.io/standards-positions/ scroll down to harmful. Of course, many of those considered harmful are already implemented in Chrome. WebUSB, enabled by default in Chrome 61. Signed HTTP Exchanges, enabled by default in Chrome 73. Media Feeds, enabled by default in Chrome 85. And so on
They care about people using Google - Chrome, Gmail, Android, etc, but Chromebooks are not some sort of "endgame".
- I can install once and check signature.
- I can store them in a backup for later forensics if they do something bad.
- I can firewall the process only to required services.
- I can disable outside network access for local process.
- I can analyze what it does before and after the fact.
- They can be scanned by a malware scanner / virus scanner.
Web apps:
- need network access to load (and probably at runtime?),I cant firewall off...
- can be refreshed by app provider - targetted to a specific user.
- Traffic is bundled together with chromium?
- I have no clue after the fact what happened. I cant sniff https traffic that app used to load its code...
Bad App owners should be considered as well... or well intentioned but hacked ones...
seems like reinventing the wheel.
Of course, writing a PWA is still a huge pain in the ass, and it doesn't give you those guarantees you mention from native apps - auditability, etc. But maybe it could get there, who knows...
> "It has always been my goal to have OpenPGP support included in the core Thunderbird product."
HTTPS is basically useless for authenticating dangerous code: There are thousands of https domains out there that you can easily put your own code onto, and many of them have EV/DV certificates with reputable names like GitHub attached to them so there won't be any obvious red flags other than the text of the domain name. A prompt with a textbox in it is a barrier but it's not hard to get users to paste random stuff into text fields (just look at the big message that appears when you open devtools in Discord warning people not to paste stuff in there) and I agree with the concern that eventually the text box will be made friendlier.
Many existing Dangerous APIs have worst-case attacks that just do things like talk to a USB device from a small list of authorized devices or talk to a MIDI keyboard. Raw Sockets are an entire new world of attacks: Hit a router or PC on the local network with a zero day and get persistent root on it, then use that to spread through the network and perform a ransomware attack, etc. The blink team needs to accept reality and catch up with where native apps have been for over a decade: Require code signing with revocable certificates and pair that with a mechanism to ensure the code was signed by the owner of the domain.
Even if you disable the usual way to pop the dev tools open in desktop electron mode, this is a dangerous attitude. A malicious client can always edit the DOM, send arbitrary data to your server, read whatever you send back, etc. "Disabling the dev tools" is never the correct solution to any security problem.
For reference: https://user-images.githubusercontent.com/47160230/51995729-...
This is also present in the Electron version of Discord.
> there is no reason for an end user to have access to dev tools in an electron app.
Certainly there is - there are various user-made applications that take advantage of Discord being built on Electron to allow you to write your own custom styles and scripts.
How would code-signing be any better than HTTPS-certificates? That sounds like just another instance you would have to pay fees to.
So, it's harder for an attacker to get their code signed using your certificate. Hacking into the website would be useless; they'd have to get the code into the development environment.
Or to put it another way, an HTTPS server automatically signs any file that it serves. That's too easy.
When it comes to getting access to code signing certificates, in many cases the state of the art is to have the signing certificate escrowed so aggressively that the only way to sign a binary is for it to go through a full build pipeline, because the central build servers are the only thing with access to the certificate. That significantly reduces the risk of someone managing to get your signing certificate and sign malware, which means you can focus on other vulnerabilities in your pipeline like your revision control server or your library dependencies.
I do think that content pinning/notarization of web apps could be powerful. We are building some of those ideas here but and I have an interest in how this could be used to pin critical apps to an audited/approved version: https://transparencylog.com
If features require combination of https + code signing, you now need to not only get a file on the server, but you need to sign it. For high privilege APIs you would likely also want to do certificate approval like Windows does, where it shows you the certificate and asks whether you want to approve and whether you want to trust the signer. In many cases websites are loading code off a CDN, so the domain name of the website isn't actually important: the identity of the code's author is important and its integrity is important.
You could also configure your server to pin a given code signing certificate or set of certificates, and thus even if someone manages to get code onto your server that they signed, it wouldn't run.
Modern web platform APIs do have a way to specify expected hashes when loading external resources, so you can protect yourself against a third party (like a CDN) being compromised - but this does nothing if your server gets compromised, because they can just change the hash.
[0] https://developer.mozilla.org/en-US/docs/Web/Security/Subres...
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Co...
You probably can control most smart devides with web apis, check out home assistant code for that... But they go to manufacturers portal.
Too bad most manufacturers have an interest in you paying them subscriptions...
Security is hard, and exposing more by default (or making it defacto required) is simply asking for trouble.
I like Google’s stock phone and features more, but I like that Apple is strict about about something that has my personal info.
It’s worth the money.
To your point about privacy, yeah I also agree. I think the real evil here is how implicit the exploitation of trust is with using Chrome and Google services. Ideally the privacy disclaimers should be more pronounced and end users should know what exactly they're giving up by using these products.
I come from the Chinese mindset where privacy doesn't have the capital P like it does in the US. Most Chinese are fine with the government and private industry infiltrating their lives if the net effect is that their lives are improved. I think a lot of them have not fully weighed the cost-benefit analysis properly, and who knows if there ever will be a tipping point event where people decide technology has too deep a hand in their inner-lives.
I think most people in the US have yet to encounter the potentially dire consequences of the slow erosion of their privacy. Who knows, maybe the net effect for most consumers will always be positive. I'm still using Chrome, Gmail, and am locked into Google's net, but I like to think it's something I'm cognizant of, and paying attention to from far away.
I thought the vendors did this already.
But maybe the ransomware developers will do a better job supporting the smart devices than the actual vendors.
You can also do so, you just need to install some companion software locally for that to work.
What's really missing for me is Android-like permission system where website could request permissions to access webcam, bluetooth, microphone, local storage, notifications, audio playback etc...
At the moment, most of the access is provided by a number of different APIs, and, in some instances, it is heuristics-based decision (looking at audio playback).
Instead, we created an applet to handle the IO with the printer. It was a nightmare. All sorts of little differences between Windows XP & JRE made it ridiculous hard to debug. While the banks were given exact specs, the culture was such that whenever they would have a problem, they insist the machine was the right spec, which wasn't true 90% of the time.
Can we maybe have a breather?
There must be something about the term sandboxed environment that makes people want to poke holes in it.
There should be some restrictions. No ports under 1024 without asking the user would go a long way.
Anyone saying “the web isn’t an application platform” needs to just accept reality. That ship sailed almost 20 years ago.
Which would still be some time after the 1024 port distinction stopped being relevant for security.