8 ms·
While I agree that a lot of the W3C standards are silly and not worth implementing, I'm still determined to build a new browser from scratch.[1][2] I don't bel
by akling 7y ago
While I agree that a lot of the W3C standards are silly and not worth implementing, I'm still determined to build a new browser from scratch.[1][2]
I don't believe that it's impossible. It will take a lot of time and effort, sure. But not impossible. :)
1. https://github.com/SerenityOS/serenity/tree/master/Libraries/LibJS https://github.com/SerenityOS/serenity/tree/master/Libraries...
2. https://github.com/SerenityOS/serenity/tree/master/Libraries/LibWeb https://github.com/SerenityOS/serenity/tree/master/Libraries...
- shadowgovt 7y agoI support this idea. Other operating systems existed when Linus started on Linux, and it turned out not to be wasted effort at all.
- smitty1e 7y agoLinux is a kernel, not a full system like OSX.
- yjftsjthsd-h 7y agoThe statement holds; although it was arguably a bit unusual that Linus only built a kernel, it was just one more unix-like kernel in a world where that wasn't exactly rare. (Which, granted, worked out well with GNU's efforts to build a whole OS that did far better a userland and kinda dropped the ball on the kernel)
- shadowgovt 7y agoIt is almost universally understood in the vernacular that when someone says "OS like Linux", they mean "A non-specific probably-GNU-Linux distro." The space where that understanding is excepted is when discussing actual kernels. Much like the vernacular meaning of "A computer" usually includes mouse, keyboard, and monitor, even though those parts are completely interchangeable and you can run a computer headless with remote access (or no access at all, the computer simply churning through whatever program it was pre-loaded with and outputting to some exotic peripheral, or maybe even simply generating heat in the corner with no human-discernable output at all).
- avmich 7y agoGP's argument is that Linux (in the sense of what was actually written by a relatively small team in 1990-s) is a kernel - not a full-blown OS, of which there were many at the time. Applying to the topic about browsers, it's as if you were planning to build a skeleton of a browser, without those equivalents of GNU-tools-to-complete-distro-starting-with-Linus's-kernel. But Linus was able to get parts from GNU project - where would you get necessary parts to complete the browser which you're writing? I'm hyperbolizing. However I believe the point of the article is that it's actually very hard to build a usable, full-blown browser - not a proof of concept, Unix-kernel-equivalent. Toys for playing - maybe; production quality, so somebody would use it day to day - unlikely. I'm more interested with where do we go from here. Should we start with fixing W3C standards so that they would permit a simpler implementation? Or are there other ideas?
- shadowgovt 7y agoI'm not sure there's a path forward with fixing W3C standards to be simpler. Once a standard exists and has buy-in from multiple parties (in this case, browser implementers and website developers), it has lock-in; if a simpler standard isn't backwards-compatible with what's already out there, the implementation of the simpler standard isn't compatible with content on the web, and if that content is, say, Facebook, nobody will care about the simpler standard. OpenGL ended up doing something like this with the death of the fixed-function pipeline (first via OpenGL ES omitting it from the parent standard and then via OpenGL's main standard marking it deprecated and killing it for all cards that don't mark themselves backwards-compatible). But the consequence of this is that some 3D apps simply won't work with some graphics cards (a situation users are accustom to in the brutal Wild West of high-performance gaming, so those incompatible cards aren't crippled in the marketplace for being unable to run older games and such). Perhaps one could describe a simpler w3c standard that is an orthogonal set of "core" features, and then implement handlers atop that standard for all the legacy crap that browsers can do today? It'd be a hell of a project to even start identifying what the core feature set and architectural layer would look like.
- avmich 7y ago
- yjftsjthsd-h 7y agoWhat are the chances that these components will be portable to other unix-likes?
- akling 7y agoShouldn't be too hard! There's already an ongoing port of the SerenityOS userspace to OpenBSD: https://twitter.com/jcs/status/1224205573656322048 https://twitter.com/jcs/status/1224205573656322048 :)
- jolmg 7y agoAh man! I was kind of excited to see that a whole new OS was emerging. Is it now going to be swallowed up by a more popular OS?
- akling 7y agoNah, the OpenBSD port is just a fun side-project by jcs (he is an OpenBSD developer.) I just gave it as an example of how portable the Serenity userspace components are :)
- cwzwarich 7y agoSince we've worked on the same browser engine before, I should ask the obvious question: what do you plan to do differently that will make it better than existing engines?
- akling 7y agoHi Cameron! I'm not trying to compete with anyone. I'm just building a browser (and operating system) for myself to use and have fun with. :) Regardless, the main things I aim to do differently: 1. No JS JIT, only interpreter. I don’t care that much about JS performance as a user and the difference in complexity is astounding. 2. I prefer the web as a platform for smart documents, not for applications. I don’t want to relinquish any control of my computer to the web, and don’t want most desktop integrations like notifications, etc. 3. In that same vein, very light on animations/transitions, that type of stuff. 4. Way less aggressive memory caching. I don’t like the sight of 100MB+ web content processes that’s so common these days.
- cwzwarich 7y ago> No JS JIT, only interpreter. I don’t care that much about JS performance as a user and the difference in complexity is astounding. One of the cool techniques we used in earlier versions of JSC (although someone told me it's been dialed back since then) was caching property accesses / method calls in the bytecode interpreter. This technique ended up getting published by someone else in a different context: https://web.cs.upb.de/cp/download.py?key=ecoop10 https://web.cs.upb.de/cp/download.py?key=ecoop10 I think there's more to be explored along these lines.
- akling 7y agoDefinitely! There's a lot of interesting stuff that can be done with interpreters if you decide to focus on them instead of JITs :)
- maxerickson 7y agoNotifications don't have much to do with whether JS runs fast or not. I have them turned off and use Twitter and Gmail and Slack and so on. And along the 'control' axis, stuff running in the browser probably has less of that than the same stuff running outside of that sandbox.
- maram 7y ago>it will take a lot of time and effort, sure. But not impossible. “Taking a lot of time” is what’s implied by impossible. By the time you are done building whatever-it-took-long-time-to-build a new generation of users have just emerged. Your product is either a) obsolete to the youngest users, or b) you, as the product builder, lost the point of reference of the youngest generation From the blog: >I conclude that it is impossible to build a new web browser. And a new OD. The entire world communicates now by two OSs only..android and iOS.
- angleofrepose 7y agoI don't fully understand the argument that a long piece of work will leave you behind when you're done. What if you've qualitatively moved the field forward while the "competition" simply made incremental progress? Aren't you ahead then?
- maram 7y agoYou can do that! but referencing history, it's a rare thing to happen. Regis McKenna made a point at 4:30 "The span from the first transistor to the first microprocessor is going to about a third" he was discussing product innovation. https://www.youtube.com/watch?v=5Z13NI0SuyA&t=2912s https://www.youtube.com/watch?v=5Z13NI0SuyA&t=2912s --------- “There will be certain points of time when everything collides together and reaches critical mass around a new concept or a new thing that ends up being hugely relevant to a high % of people or businesses. But it’s hard to predict those. I don’t believe anyone can” -Marc Andreessn
- akling 7y ago>product >users Hi maram! It's not that kind of project. I'm building a new OS and browser for myself. There is no "product" and the only "user" I care about is me. :)
- maram 7y agoGood luck! Ping me if you want users to test your browser ;)
- swiley 7y agoThe DOM is the easy part IMO, it’s layout and hooking it up to a JavaScript vm that’s hard.
- zzo38computer 7y agoI agree many of them are not worth implementing, but I do also think wanting a new browser from scratch because the existing one is no good. (Although it may sometimes be suitable to use parts of codes from other programs including web browsers.) A lot of features should be omitted, and also some more things added to provide better user control. In addition to being too complicated, I also think web browsers are overused. Other programs often work better. Switch discussion forums (including this one) to NNTP, text-based interactive services to telnet or SSH, email to SMTP, chat to IRC, many kinds of calculations to local programs which do not use the internet at all, etc.
- JohnFen 7y agoI've been toying with the idea of writing my own browser for a while, too, because I can't find a modern browser that makes me happy. > A lot of features should be omitted Since I actively don't want the vast majority of functionality that is included in modern browsers, I think that this is a very doable project. Very large, certainly, but I don't see a showstopper yet.
- zzo38computer 7y agoI agree. I am willing to set up a NNTP to discuss it, in case you want to discuss it on the same NNTP that I can discuss it, and then other people can also use this NNTP for the discussion of this same thing too, I suppose.