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...
2. https://github.com/SerenityOS/serenity/tree/master/Libraries...
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...
2. https://github.com/SerenityOS/serenity/tree/master/Libraries...
“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.
>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. :)
You could keep it simple, too, if you didn't need to support existing bloatware.. such as browsers.
Of course most people imagine themselves to be motivated and able to focus on goals. Then, after x hours of win, they log onto twitter or facebook, get calls, messages etc or lose half a day on HN.
Make something like a game console only the exact opposite. Imagine phone calls and work messages popping up in the middle of your xbox session and work being 1 click away at all time? I think that would be just as inappropriate and undesirable as doing it the other way around.
It cant be just me, as soon as I start the browser the entire internet circus is there, all of the clowns, balloons all over. This is where I'm suppose to get work done?
That's silly and reductionist. The world uses those OSs, but not only those. Almost every person that sits at a desk for work also uses something else. Every student in the US is expected to a use a computer with a keyboard for writing papers. I'd they don't have their own computer to do this, they are provided access to one.
For some disciplines, especially anything involving CAD, I think desktop computer is still necessary. That said, I think you'd be surprised just how much of a typical college education can be done on nothing more than a basic tablet and a handful of productivity apps.
* (...wow, it really was a decade. How the time flies.)
I think upon reflection this is less surprising than you might initially find it. After all, college predates computers.
By the way he phrased his comment, even I could tell this was a project with personal, non-commercial ends.
On this basis, his product will ultimately be: accomplished, or not accomplished but having enriched himself a ton by mere virtue of the pursuit.
The entire world is not only communicating via Android and iOS. Those are the predominant OSs; however, we've all heard of Linux, haven't we?
It can be, when you have a moving target.
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
---------
“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
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).
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?
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.
If browsers are still "browsers" and not "kitchen sinks in disguise", I'd - still - identify 5 major parts: 1) networking 2) parsing (HTML/CSS/JavaScript - others?) 3) DOM rendering (images, video, audio too) 4) JavaScript engine and 5) controlling UI on top of all that.
Maybe it's too simplistic.
The web as a platform has done this before for things like ActiveX, Java applets, and most recently Flash. Collectively, developers decided they were overcomplicated rubbish and abandoned them.
My personal preference would be for more specialized agents speaking protocols designed for their use case: email over SMTP/IMAP (or JMAP!), newsreaders with RSS, chat on XMPP, etc, content browsers with some limited markup language, maybe games and fat apps loaded as binaries to a sandbox VM.
Maybe this is unrealistic and that time is passed, but the internet used to work more like what I've described. Today, more and more things are just a JS webapp that only runs properly in Chrome.
Of course, there's still a monoculture in transpilers, but at least there could be more browser competition after that point.
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.
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
I think there's more to be explored along these lines.
And along the 'control' axis, stuff running in the browser probably has less of that than the same stuff running outside of that sandbox.
>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.
I wish more people share the same opinion. We haven't even perfected the Smart Documents yet, but browsers has abandoned that work and moved to Web Apps instead.
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.
> 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.