500 comments

[ 234 ms ] story [ 7630 ms ] thread
You'd be better off using and contributing to Firefox.

Less work, more result.

But probably less fun as well.
He's not doing it for fun. He's doing it because he's "fed up with it".

GoSub will be used by tens of people. If he makes a contribution to Firefox it will be used by millions of people.

Tens of people seems generous
I get anxiety about humanity forgetting how to build foundational tools. I feel better when the occasional weirdo dips down into the weeds to try things from scratch. They're often writing blogs and sharing their knowledge, which is nice for keeping the dark arts alive. They're also equipped with knowledge that we didn't have the first time through, and might be able to come up with something fundamentally better.

Good way to help ensure we're not stuck in some local maximum.

It seems to me the author seems unhappy with the lack of control of how external content affects their well-being and by creating their own software hopes to influence this. With that in mind, they’re unlikely to influence a massive established project.
Firefox received billions from Google the last five years.
And?
You never thought about the why and what for?
You unable to answer such a simple question?
Maybe you should rephrase your question and make it a bit more specific, because "and?" is a bit vague.
To get what any particular person wants from their own imagining of a browser,you'd first have to remove a lot of things from any established browser, be it chromium or firefox. Try to push such a PR and see what happens.
How many external contributors Firefox has?
I could have written this, except for the being a good enough programmer to write a browser that is. I wonder if the author has heard of the ladybird browser? https://ladybird.dev/
I wonder why Shopify is sponsoring them...
“Ladybird is a love-letter to the web, and proof that open technologies enable innovation by organizations of all sizes. Shopify grew up on those technologies, and proudly contributes to them. We’re excited to add Ladybird to the set of projects we support.”

Pretty cool of them to contribute $100k to the project.

https://awesomekling.substack.com/p/welcoming-shopify-as-a-l...

Of all the passionate reasons one could imagine a person needs to feel compelled to write their own browser, this was quite unexpected.

I guess if news affect your mental well-being negatively it is legitimate to avoid them. But I would believe a day long session with the blocklist of your choice would be better?

Or just accept a certain degree of news, in the end you live in a world with other people who read news and unless you are a hermit things are going to come up eventually. Reducing can be better than attempting the impossible and fail.

The link to your Github project in the article leads to somewhere else
It causes infinite loop when you click the GitHub link on that very website with the article, as it redirects to the article. I assume there is no GitHub repository yet.
It would be cool to see a browser being made in the Blender/Godot style of open source. Set milestones, encourage a friendly community to gather around, raise funds, manage it well, and back to step one again.

I certainly would love to see more options of browsers.

I certainly would love to see more options of browsers.

How about more options of different content-types and plugins into a browser framework which is little more than a piece of chrome (no pun intended by me) for them?

One viable path would be starting a subproject to work on a "Godot Webview" (just a hobby, not supposed to be big and professional like Electron) and growing it from there.
There are a lot of words the author used to simply say, "I'm going to start my pet project, which I also believe is going to fail very soon for a number of reasons"

Not much actual good content here.

Yes, the tl;dr of this article seems to be:

> I do not expect ANYTHING to come from this project. I do not expect to finish this project.

So... good luck with that. :)

Goes without saying, its a browser, browsers are never finished. unless you discarded html/js and started from scratch... but then you'd have no data for the browser and what would be the point of that.
"Goes without saying, its a browser, browsers are never finished. "

But they can be working enough, to be useful. Meaning they can display correctly the pages you want to see.

So the best independent effort of a working browser I know of, is ladybird. And Kling knows how to build browsers, so toying around with a browser from scratch on your own will be a learning experience. But I guess you might learn more, by contributing to a project that stands a real chance to become a working browser.

Ugh, go post your negativity somewhere else. Awful comment.
There are a lot of words you used to simply say "I didn't find much actual good content there."

Not much of a contribution to the discussion here.

I wrote a couple custom browsers for both pro and personal reasons. I found out that there is a tiny niche market for a privacy-focused, minimalist browser that a) does not understand cookies, b) executes JS only when allowed to and c) is capable of displaying most decent Web sites without garbling them. I had good success with using Chromium as backend, and slowly adding the stuff we do need (download manager, password vault, auto-complete). Turns out it's quite easy to setup, but there's one annoying chunk: dealing with creating tabs or new windows. 'Modern' Web sites use and abuse that mechanism to display pop-ups, and it's quite a challenge to handle. Good luck to ya!
Is your work open source?
> I found out that there is a tiny niche market for a privacy-focused, minimalist browser

You mean like Orion by Kagi, Mullvad Browser, Brave, Falkon, Safari, DuckDuckGo Privacy Browser, Firefox Focus, Midori?

I feel like the best browser in this market has yet to show itself.

I doubt it will be one where the author claims it will fail.

"just a hobby, won't be big and professional like gnu".

At the start of a project, it can be difficult to know if it will snowball, and since most projects don't, creators often feel like they have to get in ahead of the negativity and set expectations.

Making a browser is a big undertaking, and I would set the same level of ambition. And then I wouldn’t post it on a forum until it has reached a milestone. :-)
If you used Chromium to "write a browser" then in no way did you write a browser. You wrapped Chromium.
There's a joke about the latest wave of "AI" companies in here somewhere...
Yes agreed, I meant writing a wrapper. Writing a browser engine isn't my cup of tea :)
You can boycott the bad companies. Spread the word about how they are bad so others can stop using them as well. We live in a world where anyone can communicate with anyone else on the planet. The power is in the hands of the many.
You can just fork something. Starting from scratch is foolish unless you're genuinely just trying to learn things
If Rust is a must, surely contributing to Servo[1] and learning by sending small PRs to start with would be more beneficial.

However, I do understand as I've done this kind of "from scratch" project before just because I thought I could do it better or because I couldn't get into reading the existing codebase easily. To each their own...

[1] https://github.com/servo/servo

Writing a toy version of a program is a great way to understand the big boy version.
Servo is an amazing project and I love everything Mozilla has done, but it's also financially coupled to Google, right?
Nope! Servo is no longer a Mozilla project. Development has been taken over by Igalia.
Rust and Servo started out together, which means Servo had a lot of pre-1.0-Rust code written, affecting its style in some less than ideal ways.

Similarly, Servo was designed to replace parts of the Firefox browser, which means that it had to be made to fit into "Gecko shaped" hole. For example, it uses UTF-16 strings in many places for compatibility with the rest of Firefox.

Servo could probably be rewritten now using modern Rust to be smaller, leaner, and maybe even faster.

just use Falkon. browser by the KDE team. free, open etc. https://www.falkon.org/
Falkon uses QtWebEngine, which uses Blink, Google Chrome's engine.

Which is a shame, because as a KDE user, I would consider using Falkon otherwise.

It's extra painful knowing that KDE built KHTML, used by Apple to build WebKit, used by Google to build Blink…

Writing and maintaining a state-of-art browser engine is hard. Using an existent one is best choice unless you don't care about people actually using your browser or they're fine with accessing a part of the web.
> Writing and maintaining a state-of-art browser engine is hard

I know. And the KDE team would know too, having tried (and succeeded at the time! but could not keep up)

> unless you don't care about people actually using your browser

Why so dismissive?

Blink is not the only existing browser engine that works with most of the Web.

I'm not arguing for Falkon authors to build their own engine. That would be fantastic, but I understand they don't. I also understand their choice to use what Qt provides. Embedding another browser engine would be less straightforward or even outright painful / impossible (Gecko). Still, I don't want to strengthen Chrome dominance on the Web.

I want a version of this:

Firefox with private mode and uBlock on but saving history (so _I_ can go back to something I browsed) with an option for saving cookies on a particular site (but maybe use a separate container so I'm not tracked across these). With an additional button to clear all random cookies now

Have you tried librewolf?
"Writing a browser" (from scratch) at this point basically means you are implementing a type of portable operating-system-in-a-box (the web platform) and that it will be compatible with whatever Google decides to add to theirs.

The browser is so comprehensive in functionality and APIs, and such a challenge to keep up with Google's constant churn of new features and total dominance, that not even Microsoft could do it.

Here is my somewhat related pet project: Tersenet. https://github.com/runvnc/tersenet It's just a concept, virtually no implementation. But I deliberately picked a set of requirements that are designed to be feasible for people to implement. Much less involved than a full web-browser. (Related discussion with GPT-4 https://chat.openai.com/share/16d02b78-f876-4c87-949a-a60b4f...)

Also related is the Gemini project which is a real thing and quite practical: https://geminiprotocol.net/ That inspired my ideas for Tersenet.

> and that it will be compatible with whatever Google decides to add to theirs

There are plenty of respectable people who maintain "home pages" with much simpler HTML than what is possible, and news.ycombinator.com gets a lot of love for keeping its classic look.

All this to say, I'd like if the people who have a lot of overlapping agreement on this would agree on a subset to use, and I'd be happy with a browser that didn't do everything google's did.

I run with uMatrix which shuts off a lot of google functionality, and I never whitelist google.com domains just to prove that I don't have to, the world doesn't end. It's a relatively small number of sites that just won't work.

(comment deleted)
I have a similar idea of a minimal html browser, which was dismissed by the gemini authors. Should be reasonably doable if you don't implement all web 2.0. No css - user decides appearance, no javascript - it would require full web 2.0 anyway, and a bit of webcompat, start with <div>, <p>, <a> and there you go.
I would not want a simple browser to replace gemini, but I would be happy to use a simple web browser in addition to gemini. It would be nice to only have to fire up a big bloated real browser for doing banking and such things.
Yes, in addition, maybe even 2in1. As a quick hack gemini can be converted to html on the fly.
I mean, LadyBird is extremely young and coming along at a pretty decent pace. Though, to be fair, the main author does have some extensive experience in the realm.

I, personally, would love to see some alternative engines to the monoculture of Blink and it's WebKit cousin, other than just Gecko/Quantum. Something to take the place of what KHTML used to have before being gobbled up into WebKit; or just another (ideally, open source) choice to experiment on.

Well, there's Servo [1], which I have high hopes for.

[1] https://servo.org/

I was interested in Servo, but its website is exasperating - any idea where I can find info on what HTML, CSS and JS standards it supports?
Quantum (mentioned by parent post) is what Firefox calls their Servo bindings.
Apart from Servo and Ladybird, there are also: NetSurf, Ultralight, Ekioh Flow.
> "Writing a browser" (from scratch) at this point basically means you are implementing a type of portable operating-system-in-a-box (the web platform) and that it will be compatible with whatever Google decides to add to theirs.

I'll bite... why? Most websites follow HTML and ECMAScript. Why do you need to do anything Google does? Isn't the whole point of this project to decouple from what big tech companies do?

The vast majority of websites don't want to follow whatever Google-only shit they've come up with most recently, whether it's adtech, AMP, DRM, or whatever.

Study the Microsoft and Firefox projects to see why it turns out that way.

The basic thing I am saying is that if you call it a web browser and use the same core protocols etc., you have a practically infinite (for an individual) set of requirements to implement and will never be truly compatible.

What ideas like Tersenet and systems like Gemini propose is similar to what you say, except even simpler. HTML and ECMAScript are quite complex and have a lot of challenging expectations as far as performance and flexibility.

The idea is to try to break things off in a clean way that is feasible to implement without having to worry about a fuzzy and ever-expanding definition of what you have to support.

> The basic thing I am saying is that if you call it a web browser and use the same core protocols etc., you have a practically infinite (for an individual) set of requirements to implement and will never be truly compatible

But what the parent is saying is you don't have to be compatible with 100% of websites. If you build a browser with good HTML/CSS/Javascript handling, you'll be compatible with the large majority of the web. Yes, there are other specs that are in use by a tiny portion of the web. But your browser can still exist if it doesn't support them. Users of that website will know or find out that they can't use your browser for that, but for every other user that browser could be exactly what they need.

> without having to worry about a fuzzy and ever-expanding definition of what you have to support.

It's only ever-expanding if you're trying to keep up with the Jones's. You can define a subset of the web you want to support and build a clean, small browser that supports that.

> If you build a browser with good HTML/CSS/Javascript handling, you'll be compatible with the large majority of the web.

Will you? I very much doubt this is the case.

> I'll bite... why? Most websites follow HTML and ECMAScript. Why do you need to do anything Google does? Isn't the whole point of this project to decouple from what big tech companies do?

Because Google is following the old Microsoft playbook of "embrace/extend/extinguish". They throw shit at the WWW consortium partially to see what sticks, but also in the hopes that websites will adopt the shit, forcing other browsers to add the shit to be able to display those sites.

Google is incentivized to do this because, since nobody else can keep up with the shit-flinging, users switch to Chrome. Then Google gets everyone's data for free, further strengthening their monopoly.

That said, I fully support people trying to build new browsers.

You're wrong about a few things. (1) A browser isn't an OS at all, it's a Javascript runtime and a constraint solver (to put all of the boxes in the right places per the CSS inputs). (2) Google doesn't constantly churn the web world anymore, they still do try, but it hasn't been effective for quite some time. (3) Microsoft was keeping up with web standards just fine, but they were falling behind in performance, and that's why they switched to Chromium.
> they were falling behind in performance

They were only falling behind in performance on google’s web pages such as youtube. Read that comment: https://news.ycombinator.com/item?id=18697824

If a "hidden empty div" is all it takes to break your browser's performance, I'm sorry, that's just not impressive.
You are picking the least important detail of the story. The deal is, Google found a simple way to kill the performance of a rival browser... so they exploited it and immediately started advertising how slow the rival was. By the time the rival fixed the performance issue, the damage was done. If true, that's pretty dirty, and it directly contributed to the growing browser monoculture.
This is a wild conjecture. Whatever happened to innocent until proven guilty? The fact they jumped on it means that someone was paying attention to these metrics, but assuming chrome has any influence on YouTube is laughable.
People are innocent until proven guilty. Corporations are driven by greed and profit until proven otherwise.
That's just a trite saying, that doesn't logically follow. "Driven by" is not the opposite of "innocent". If you want to blindly believe what random people say on the internet, simply because said thing was said about a corporation you dislike, that's fine by me. But don't get frustrated when people prefer to look at the available evidence first, and the available evidence is an (alleged) div breaking Edge around the same time as an (alleged) announcement that Chrome was faster. Also the original poster admits that they aren't 100% sure it was related. But you are, I guess?
> "Driven by" is not the opposite of "innocent"

I agree, that's why I didn't say driven until proven innocent. I'm just pointing out that the concept of innocent until proven guilty does not apply, as we have no moral imperative to treat corporations fairly. We're not claiming that any person at Google did something immoral, but that the structure of the corporation resulted in an immoral act. An 'unjust conviction' (so to speak) would not result in a person being imprisoned without cause, so we are free to make the most reasonable decision without the burden of "beyond a shadow of a doubt".

For the record, I'm still not claiming that it was 100% done intentionally, I'm just explaining why I'm inclined to believe something based on circumstantial evidence. Courtroom procedure is designed to protect people (in a perfect world), so I'll only adhere to it if there's someone to protect. I don't think Google is deserving of my, or anyone's, protection.

Well, you'll find it hard to argue with people if you let your philosophical beliefs get in the way of finding common ground. Many people don't agree that "innocent until proven guilty" does not (philosophically) apply to corporations.
I have no idea if the story is true or not, hence the "if true" clause in my post. I was just pointing out that focusing on the technical aspect is missing the point of the story... the degradation could have been triggered by any number of things, the point of the story was the allegation that Google purposely triggered it and disingenuously used that degradation to claim their browser was faster.
I would be skeptical too if it was just a one time thing, but it wasn't. Around the same time as that HN comment, YouTube rolled out a redesign of their frontend that used the Polymer framework. At the time, Polymer depended on a deprecated web standard that was implemented in Blink and WebKit and used a polyfill elsewhere. This completely killed performance on Firefox and Edge. That isn't unsourced or anonymous information like the invisible div. You can search back and find people complaining on multiple forums that YouTube started running at a crawl out of nowhere and ID'ing Polymer as the culprit [1, 2, 3].

[1] https://hub.packtpub.com/youtubes-polymer-redesign-doesnt-li...

[2] https://news.ycombinator.com/item?id=17612139

[3] https://www.reddit.com/r/programming/comments/91i0mc/youtube...

[flagged]
At least make your own argument, don't ask ChatGPT to do it for you. ChatGPT is really stretching to make your point though, as you can see from the laughable use of the phrase "Another striking resemblance between browsers and operating systems" after just listing a bunch of web APIs that no one cares about. (WebVR? Get out of here...)
[flagged]
Please make your points yourself. Generated comments aren't allowed on HN and we ban accounts that post them.

https://news.ycombinator.com/newsguidelines.html

Ok. Sorry. I do find comments that are obviously AI-generated to be annoying also. I know you are busy, and please don't take this as some kind of back talk. I just think it is worth a moment of your time if you can get a little bit more detail on this issue from this "incident".

But just to clarify, this is the first time I have generated a comment, and it was a collaborative effort between me and GPT-4 that lasted like fifteen minutes. It wasn't just a lazy "here is the comment, reply to it".

I was trying to make a better comment. In particular the point I was trying to make was about the sheer scope of web platform functionality and APIs. Which there are so many web APIs that I was using ChatGPT as a research tool. Even GPT-4 said "wow, I can't list _all_ of the APIs, there are too many of them".

Also, I don't see anything on that guidelines page that says anything about AI-generated content being disallowed, so you might consider updating it.

Also, how do you determine if a comment is AI-generated or not? Because the previous version which I had asked it to refine to be in my voice was closer to my writing voice but actually less substantive.

So I had a slightly worse comment ready to go (didn't make the point as well) but I decided to reply with the comment that was better even though it was easier to detect as AI-generated.

I don't think you would have threatened me if you really wanted me on the site. I make a lot of comments on HN, probably spending too much time on here. And I can be fairly, lets say, bold about the content of the comments.

I do remember a recent incident where someone was advertising that they would spend two weeks to build out a basic chatbot for a minimum of $10,000. I can guarantee that person was hoping to spend a half-day or less if they found a customer for a truly simple bot. So the advertisement and business model was dishonest and borderlining on a scam because it misrepresented the time and effort involved and deliberately overcharged for a simple project. That's why I commented on that post.

But I understand that you don't have time to try to parse out how some comments that are obviously on shaky ground might be warranted in some cases.

If you do ban me then I will miss HN. But also, if I am investing a lot of time into this and the comments or submissions aren't appreciated overall, then even for myself, I should reevaluate the use. Maybe socializing just isn't for me, even on a web forum.

Am I wrong in thinking the only thing we're missing for a rich ecosystem of browsers is a modular, independent Javascript runtime/interpreter similar to Java? Java has a bunch of JVMs: https://en.wikipedia.org/wiki/List_of_Java_virtual_machines

Maybe we need Mozilla (and others) to make an independent Javascript "VM" that everybody can use.

Mozilla and Google each has one, both open source (iirc). NodeJS uses Chrome's, even.
(comment deleted)
> The browser is so comprehensive in functionality and APIs

Not really. If you limit your scope by saying that you're building a hypertext document viewer, it suddenly becomes approachable. A lot of the functionality is all that PWA stuff no one asked for and no one is using for anything good anyway.

WebSQL? IndexedDB? Service workers? WebGL? WebGPU? WebBluetooth? WebRTC? Just act like it all doesn't exist. 99% of actual websites — not web "apps" — would not lose any functionality.

In a world where UNIX-inspired systems run most software, I like to imagine that it’s possible for a UNIX-like browser to become dominant.

Recall that UNIX (and C) were built (and adopted) in response to perceived over-complexities in contemporary systems.

Maybe in 20 years we’ll recall + interact with Chrome like how people in the 80s recall + interacted with Multics or OS/360.

To complete the analogy, I guess you’d expect to see this browser come out of former Safari interns/engineers at Apple.

People interested in building browsers should look into WebKit. You can use that for HTML/CSS/JS rendering and save a lot of time/effort.
But the thing is that if I were to build a browser, I'd start from the requirement that websites should be treated like malware that can't be trusted. Applying my ideas to a preexisting enormous codebase feels troublesome.
No true websites use service workers, just like no true Scotsman puts sugar in his porridge.
"PWA stuff no one asked for"

You don't speak for everybody.

I've yet to see someone take a PWA seriously.
I've seen (many) people use and appreciate Google Maps, for one
Aren't you the developer of Smithereen (a fediverse server)? Nearly every other fediverse software has a web interface that can act as a PWA. I launch lemmy.ml and kbin.social as standalone PWAs from my homescreen. My pleroma instance also has some PWA features (though not standalone display mode). I don't use Mastodon, but @nolan@toot.cafe did some amazing work years ago to make it a really fast and responsive PWA (which has since been undone ).

It's ok if you don't like to use PWAs but that doesn't mean nobody does or that they're worthless.

> Aren't you the developer of Smithereen (a fediverse server)?

I am. But I'm biased because I'm primarily an Android developer who turned into a web and backend developer for some projects (I still do Android as well). So naturally, web app (not web site) development feels cumbersome to me. It's like trying to build a proper app UI with a souped up version of Word macros and layout engine. I much prefer native apps. Smithereen will have a client API eventually, when all features I deem necessary for version 1.0 will have been implemented. The large remaining ones are photo albums and discussion boards in groups. The yet-unreleased direct messages need some finishing touches as well.

> It's ok if you don't like to use PWAs but that doesn't mean nobody does or that they're worthless.

Well, that's my point — Chrome and Firefox and Safari, being "mainstream" browsers, try their best to satisfy everyone. They support PWAs, they have extensive accessibility support (that's scarily complex as well!), they implement all those APIs and standards that are complex but mostly unused, etc.

If I were to build my own web browser from scratch, it'd have a warning in the readme along the lines of "if you require accessibility and/or PWA functionality, this is not for you, use one of the more advanced browsers".

I’ve written many business process apps that are PWAs.

Install to homescreen is great for customers that don’t want to go through the app store yet still want their employees to have “an app” (something with an icon on the home screen).

Some are even offline-capable.

You've never met anyone who's used Slack, WhatsApp or Airbnb?
I asked for it, and a lot of other ppl did too. These are great features and removing them would cause more than 1% of websites to lose some functionality.

But, importantly, they shouldn't lose their core functionality (if they're written well) because that's the "Progressive" part of PWA. If you don't use the feature or your browser doesn't support it, the website should still have basic functionality. One of the big ideas behind PWAs is "progressive enhancement", where you layer on features that may not be supported everywhere but add value when they are supported.

And a progressively built browser that doesn't implement every spec goes hand-in-hand with that. I think having more under-featured browsers like that would push webdevs into caring more about progressive enhancement.

>99% of actual websites — not web "apps" — would not lose any functionality.

What percentage of user driven web traffic is done through 'web "apps"' and what percentage is 'actual websites'

IMO most of what people do on the web is either reading articles (these don't even need JS), watching videos (no advanced browser functionality needed either), or writing comments and messages (some rather simple JS if any).
Yes, if you arbitrarily define “Web site” to exclude most Web resources it is easy to declare victory. Maybe you can even have fun browsing some archived versions of Geocities pages.
"A lot of the functionality is all that PWA stuff no one asked for and no one is using for anything good anyway"

It is really hard to engage with your comment in a constructive way, if you start by insulting everthing on the web, that is not a simple document (with comments).

So I get it, you don't like the web as a plattform for apps. And it surely is not perfect. But do you have a better plattform independent alternative to offer?

I despise cross-platform GUIs as a concept, but if you must make one, there's plenty of options usable from most languages. Java has Swing, C++ has Qt, there's things like Flutter and WxWidgets and a dozen different GUI libraries for Rust. Heck, you can even build GUIs in Python with tkinter. Every single one of these options is much better suited for an app than the web stack.

My main gripe with using the web stack for building apps is that, unlike proper GUI framework, your platform is not made out of the same kind of code that you're writing. For example, there's a number of predefined layout algorithms that you can choose from and then control some of their parameters, but you can't write your own layout algorithm. You can kinda draw your custom controls, but both <canvas> and SVG are not without their own shortcomings compared to real GUI frameworks. A web browser is a glorified scriptable word processor so it's not surprising that it acts like one.

Yes, there are "paint worklets" and "layout worklets" as proposals. That kinda makes it better but still feels like an ugly workaround. The declarativeness of HTML and CSS, extremely awkward for building app-like UIs with, is also never going anywhere.

"but you can't write your own layout algorithm."

Of course you can - in javascript. What is stopping you? (except that you don't like it)

You can also ditch the DOM alltogether and only use the canvas/webgl and maybe your language of choice via emscripten and wasm, if you really cannot stand js/ts.

The web as a plattform is very, very powerful. The app you make, you can ship by simply sending a link. And people can just try it out without installing something and all quite save in a sandbox.

So none of your solutions are better suited than the web stack, if you intend to target the maximum audience with the minimum hazzle. You have to beat that, if you want to overcome the web.

Also, can you give me one example of a nice looking app in swing? Websites are optimized for enabling good UI and UX. Because the moment a user is confused - he is gone very quickly. And people can also customize their experience. I use dark reader and ublock.

HTML and everything around it is often a ugly chaotic mess, but a incredibly powerful one.

Forget all of that. If you can run actual video games in a browser at 120fps, you can definitely achieve pretty much any UI/ux you can dream. Obviously, within resource constraints. But I don't think there's many UIs you can build that are reasonable and slow on the web but fast in Java swing (or whatever other UI framework you're using)
> Of course you can - in javascript. What is stopping you? (except that you don't like it)

If you mean by setting `position: absolute` and then using left/top/right/bottom to position your element, that won't work. You can't plug your code into the browser's layout dispatching mechanism to correctly react to size changes, reflows and all that. You can do that in any native UI framework.

> The app you make, you can ship by simply sending a link.

Depends on what it does. If it needs to store data locally and/or work with files for example, doing that on a website that runs in a browser is a pain in the ass both for the developer and the user. Last time I checked, if you want to generate a file for the user to save, you have to encode it into base64 and "open" it as a data: URI. Isn't that utterly bonkers?

> Also, can you give me one example of a nice looking app in swing?

IntelliJ IDEs.

> Websites are optimized for enabling good UI and UX.

Is that the reason there's so much whitespace everywhere these days? Is that also why all controls are so confusing that you sometimes have to try interacting with them to understand what they do?

> Because the moment a user is confused - he is gone very quickly.

Not everyone's goal is to simply have as many users as possible.

"If you mean by setting `position: absolute` and then using left/top/right/bottom to position your element, that won't work."

Erm, but it does? You can listen to resize events and you can get the exact width and height values of all the elements in the DOM. I am using that technic since I switched to the web (when box layout did not exist yet).

The only problem with this is, that you can create performance bottlenecks easily, as reading clientWidth might trigger a forced reflow. So it might not be easy at first to get everything right, but it is totally possible.

Also you can just use a different GUI framework or build your own.

"Not everyone's goal is to simply have as many users as possible."

Mine neither, but those who do (the majority) made sure, the web is suitable to be used by even the most tech illiterate people. My mother can surf the web to get mostly what she wants - but she cannot use a file browser, nor does she really know what a file is (and she does not want to know).

"> The app you make, you can ship by simply sending a link.

Depends on what it does."

Sure, if you want native file system access, you would be breaking the sandbox. And yes, this is my biggest pain point with the web as well - that it often cannot decide whether it serves untrusted websites or enables app developement where the user trust the app. For example there is no (easy) way to get the pixel data from html elements, because of security. Which makes sense for malicious add filled websites, but not when developing something real, where the user could give permission. Here the focus on the dumbest users who just all allow everything, so the browsers have to protect them and allow no one to use proper permissions is really annoying. Because yes, I also would just like to have file access and other things permissions don't allow.

> no one asked for and no one is using for anything good anyway

Speak for yourself. This is a crappy attitude honestly, you might want to keep an open mind on things you don’t have an interest in

> The browser is so comprehensive in functionality and APIs, and such a challenge to keep up with Google's constant churn of new features and total dominance, that not even Microsoft could do it.

I always suspect that it's not that they couldn't do what you describe per se, it's that they couldn't do that within other shareholder driver parameters to make them want to do it.

Well, sure, if they were happy to burn money with no tangible result they could probably keep going as long as people are buying other MS products.
They just realized they didn't really needed their own rendering engine. It would have been a nice to have, like in the old days of IE6, where they could decide over the direction of the web.

But more valuable to them is that people are using a browser they control (no matter the tech within) - which is why they try to push you to edge however they can.

You can do it! I hope more people begin these kind of projects!
When I got fed up with it, I stopped using a browser.^1 Never looked back.

1. Of the advertising-supported, graphical variety.

We'll likely always have to use advertising-supported browsers for some things.^2 But certainly not all, or even most, things.

2. It would be really cool if this sad state of affairs changed before I'm dead, but I have no expectations. I would love to be able to use something "like" an API for internet banking and online shopping, instead of an advertising-sponsored browser.

What are you using for Web access, if you don't mind?
I access the web through the internet, the same as I have done since 1993. I use software that can make TCP connections, send HTTP requests and receive HTTP responses.
Care to share specific details?

Curl? wget? netcat? Terminal-mode browser?

(I use all of the above myself. Many websites ... behave poorly with them, though they can still be useful.)

Original netcat yes, all the time. A variety of other TCP clients. Customised Links browser. Several proxies. Customised tnftp. curl in HN examples.

Consider that each web user might visit different websites and seek different information and data. Each user might have different preferences. What is good for one user might not be good for another. Me, I prefer textmode. I am not interested in X11-style terminal emulators. I have not used a mouse outside of the office for over 30 years.

I write simple UNIX programs that extract the information/data I want from HTML or JSON on stdin. I usually output this info/data as plain text, CSV or SQL. For recreational web use I am not interested in "interactive" websites. If I get a response body with the info/data I want, then the website is "working" as desired.

As it happens, the most challenging step for me is deciding what info/data I want to keep. Websites routinely contain so much garbage and marginally useful bits of info/data that processing it all is an exercise in diminishing returns. (And this is precisely what people trying to write "modern" browsers will inevitably try to do.)

Thanks, that's useful. Might be an interesting write-up or tell / show HN type submission.

I do similarly for some cases. I've written scripts to parse down NOAAA weather reports to something that renders well on a terminal, and have scripts and shell functions similar to surfraw (by now badly dated itself) for doing quick lookups from a shell.

I share your view that most website payloads are rubbish (in one case I'd stripped > 90% of the Washington Post's payload to deliver just article text), and that selective acceptance and presentation makes a huge difference.

Though as much as I use shells and terminals, I still find GUIs useful, including Web browsers, though the situation is increasingly frustrating.

Anyone doing this for cars? I feel cars are much worse than browsers in terms of screwing their buyers and much easier to topple.

Way to go. Godspeed.

> I feel cars are much worse than browsers in terms of screwing their buyers

Feelings aside, why do you think this?

Modern cars. Older cars don’t spy in you or need subscriptions to bypass arbitrary hardware restrictions. But newer cars are ‘safer’, so it’s kind of a crappy tradeoff
Worse, yes. Easier to topple? A browser doesn't require physical manufacturing and shipping.
The difference with cars is it’s a lot easier to build yourself a vehicle. Used cars and parts and kits and how-tos are everywhere. It’s so much simpler than a web browser.
I'd rather advice people to reinvent a new html js format.

Preferably serialized to binary so it can fast and save battery on mobile.

Html was not designed for applications, it carries a lot of debt, and it's an ambiguous language, which makes it very expensive to parse for browsers.

(comment deleted)
I encourage you! Keep at it!

I have implemented a very small part of the ORC Solver algorithm in Python and used wxWidgets for rendering. I used wxWidgets text extents API to work out width of text.

This is the ORC Solver whitepaper. https://yuejiang-nj.github.io/Publications/2020CHI_ORCSolver...

I have been thinking about branch and bound and how to implement it. Any information would be appreciated.

I think I should study the TeX codebase for typesetting algorithms. I also really enjoyed using javascript library Masonry for layout binpacking.

Writing a browser means writing a rendering and layout engine. That's a pretty tall order, not that you can't do it.

But there's so much you could do that would be more likely to be fruitful. Port Servo to Nyxt Browser. Fork WebKit or servo or gecko and pull out the invasive web standards that have been injected by the ad company over the last decade that hurt users. It's all work you're going to have to do anyway building from scratch, might as well not start at the bottom and start with an existing community of people already willing to work on it with you.

That's what I did with WebKit [1] because it turns out servo is not as modular as it was before. And Gecko is the definition of monolith, so removing the attack surfaces is impossible, even TOR has a crappy replace-with-stubs approach that breaks with every internal API or bridge change.

Need contributors and other maintainers though, because keeping up with upstream is impossible as a single dev.

I tried to document the attack surfaces [2] from my cyber security perspective as good as possible, with tasks left to do and which need to be eventually removed. It's probably pretty opinionated because I want to use RetroKit as the webview for my own Browser Stealth which acts as a filtering proxy, scraper and decentralized cache [3]

[1] https://github.com/tholian-network/retrokit

[2] https://github.com/tholian-network/retrokit/blob/main/SECURI...

[3] https://github.com/tholian-network/stealth (ongoing rewrite in golang)

Honestly, although it's a heavy task, I don't think it's something worth being dissuaded from. I would argue that, in some ways at least, it's easier to do so today than before since we actually have a comprehensive standard now.

That all to say, yes it's a tall order. But it's not the most impossible thing for a small team of dedicated people to do.

But I mean your rendering and layout engine don't need to pass all ACID tests out of the gate, right? You build it up gradually. You start by getting reasonably simple HTML websites to render. There's no rush, and there's no hard and fast rule saying you have to implement every corner of the standard.

Web browsers and the web are gloriously human.

I maintain a web layout library that is designed to be integrated into other software:

https://github.com/DioxusLabs/taffy

It needs to be combined with a text layout engine (such as https://github.com/pop-os/cosmic-text), and it doesn't support everything yet (notable features that are currently missing: "float", "display: inline-block", "box-sizing: content-box", "position: static"). But we have Block, Flexbox and CSS Grid support with more on the way.

> Writing a browser means writing a rendering and layout engine.

Only if you want to write one from scratch. One should remember that a Browser is mainly the userfacing application, not the gears it's utilizing. You could take existing engines and just plug them together, maybe modularized enough to switch them any time, and it would still be a proper browser.

And personally I think, people here are too focused on the gears any way, while we really need better interfaces and other gears besides render/layout/scripting.

I'm not used to this kind of negativity on HN about browsers and the open web. I think it's a very worthwhile endeavor, whether he succeeds or not. If the result is only half a browser that is not incentivized by big tech, than it can be useful for the moment my reliance on Firefox has to stop. I hope it doesn't get there because I like my Firefox very much, but I came to realize that my browser is a sort of bottleneck for me accessing the web. There are always other websites I can go to for the same content, there's also always another computer brand that I can use, but it's always Firefox in the middle. I know there are other browsers, but they always seem to be based on Googlium or whatever the name is today.

So I wish him luck and hope he succeeds. (RSS feed followed, so I can take a look at his project now and then)

> I'm not used to this kind of negativity on HN about browsers and the open web.

Really? It's a given that any thread about browsers on HN will have a dozen highly upvoted replies that claim it's impossible to make a new browser.

Even though we have evidence that it is indeed possible. Ladybird is made from scratch (originally all the way down to the C++ stdlib!) and can now run Discord (poorly) after 3-4 years of part time work (it now has full time devs).

Based on their cargo.lock, GoSub doesn't seem to want to implement everything from scratch, they'll probably use off-the-shelves image decoders and whatnot, so it has the potential of growing even faster!

Thanks for this information and good to see other alternatives explained.
Ladybird has mostly stopped those upvote parties - turns out we were wrong!
What an interesting article. For me I can relate to the central tenet of trying to exert control over the level and kind of content I consume on a daily basis. I’m sure that will help mental health.

The Twitter clients of years past have shown how using filters and regexes, muting and blocking, it is somewhat possible to shape this content stream. Also I think local AI has some power to weed out content it can detect would negatively affect you.

I think though this would work well as a feed reader, the browser is simply too flexible as a source of input. Although it’s certainly worth trying, bravo!

I’ve experimented with a “feed of feeds” and receiving a daily digest of this and this could be the layer on top that it needs. But until this article I had not realised my motivation for it, so thanks author!

Unfortunately, everyone who provides these big feeds (Reddit, Twitter, et al.) don't like that their content is being filtered by third parties and clients. Because they want to keep their users on their platform as long as possible, and their algorithms are designed for it. So they actively make it very difficult to do so, by banning these clients.

On Instagram, you can't even fast forward videos because of that. They want you to watch them fully.

We really need clients for "feed of feeds", but how can we do that if we don't have access to the feeds? The browser could be a solution, but pages needs to be filtered based on the source code of the page, individually.

Well, we only need a directory of resequenced feed definitions + some kind of resequencing program that runs the definitions onto a page in a decentralised manner. With resequenced I mean that when applied to a page of markup it can create a feed from it.

So imagine it downloads the latest definitions periodically that fix compatibility for service X then everyone who creates feeds of X pages can do so again.

If you can specify the definition directory in the settings then even if a directory is no longer active another can take it's place.

That means it takes one person to fix, but the service would have to ban all instances to stop this way of consuming.

I think most of the puzzle pieces for this exist already.

On the political note of the article: yes, the world is fucked up and it is exhausting to only read fucked up news. I personally believe that disconnecting from reality and becoming 'apolitical' implies giving up on humanity; that is giving up on your kids, nephews and the children of your best friends. No need to change the world, a small change in your community is more than enough. Specially as coders, what we build can impact and influence thousands of people all over the world. Sometimes I wonder if things would be different if we all invested 3-5% of our time in supporting our communities and engaging in some form of activism.
Definitely yes to community engagement. Shovelling the snow outside the house of an elderly neighbour is good because it's actually doing something.
I agree, mostly. I decided years ago to stop listening to the news, but that was only after I decided to not have children. It seems wrong for breeders to stick their fingers in their ears.

I have given up on the world, as you put it. But other people's children is not my fault. I do as much as everyone else does to "do the right thing", but no more than that. I used to think about all these things, try to minimise my personal footprint and think about sustainability and future generations etc. But I lost hope. I was fighting the tide. Now I just try to make sure my footprint is not above average and try to be good to the people around me.

Fair enough, as someone sometime somewhere said "you only have control over your actions and your thoughts".
Disconnecting from the news industry does not automatically imply disconnecting from reality. At least I hope so as I consume non-technical news maybe once a week.
You would be insane to think anything on the news was connected to reality.
I don’t follow the news at all because it’s 99% biased garbage and frequently not true and pollutes the mind. My life and mental health is significantly better for this. Nothing I read in the news would change how I vote, which is basically the best reason anyone could give for watching it.
You can afford not reading news only if you live in a democratic country with a stable economy, far from any conflict zones. In other parts of the world, you would miss information that you need for your survival.
Even in that country - if you’re a woman you need to know if you still have rights regarding bodily autonomy (e.g. abortion). If you’re queer you need to know if you’re allowed to dress a certain way (anti-drag laws) or express public affection, without being arrested.
I mean everyone needs to knows the law broadly, and the specific laws that may impact them.
"My HTML? If you want it, I'll grant it! Search on! All the world had to offer, I left in that place"

"And so hackers set sights on the HyperText Line, in pursuit of their dreams. The world has truly entered a Great Browsers Era!"

After years of believing that browsers were an insurmontable mountains, more and more people are believing we can do it. My 2 seconds analysis tells me that we're seeing this not because new browsers makers want to emulate and compete with the existing mammoths, but because they want to change the web. I'm loving it.

OP here. Thanks for the pos/neg/neutral comments everybody. Some remarks:

Yes, there are a lot of browsers out there where I can contribute to which would be more efficient. But that would result in just a few browsers instead of a lot of browsers. I'm all for the last one, as this would give people options.

This IS a pet project. I never told anyone otherwise. I would start writing it even when I wasn't fed up with the tech industry. But I get angry about not being able to do anything about anything. And this is my way of trying to do something about it. It's the best I can do.

I think this project will not result in an actual browser. That's not why i'm writing this. I want people to see my code, either laugh at it, or get some own idea's to make things better. For instance, I LOVE the whatwg site where the whole html5 tokenizer and parser algorithms are step by step described. This means it should be easy(?) enough for anyone to write their own html5 parser. What would happen if google and/or microsoft decide to create their own custom html5 (html5, ghtml) as a closed format? Who would be able to stop them when they have such a market share?

I want to start for scratch - BECAUSE i want to know more about the underlying technical challenges.

love the name ... needs a 1980's Commodore BASIC visual :-)
(comment deleted)
As long as you're realistic about it, have fun.

Most of us elders have seen these personal browser projects come and go these past 25-30 years. Odds and history are both against them as a long term viable project.

But as a fun learning experience it's very impressive.

i'm 45 :) I consider myself elder as well.. and yes.. i've seen many come and go as well.. I just don't think that should be a reason to not do it.
Nice! Just go for it, man! History often needs only one person. Who would have known that Guido van Rossum would write the language in which most of modern AI would be written while the servers run on some operating systems created by Linus Torvalds. Both just had a crazy idea and started working on it.
> I get angry about not being able to do anything about anything. And this is my way of trying to do something about it. It's the best I can do.

This attitude is gold, and it's what changes the whole world.

What you said about the misery of "news" resonates with me. In psyops we call it "sapping". Propaganda designed to demoralise, dispirit and corrode resistance used to come from our enemies. The classic example was Lord Haw-Haw [0]. Today our own mainstream news channels and technology giants seem determined to keep the population in perpetual hopeless anxiety.

As you do, I find the discourse around tech to be a pit of dismissiveness, avoidance, denial, resignation, and learned-helplessness. I've been doing a lot of interviewing people lately, and careful sentiment analysis. The results are horrifying. The very word "tech" is becoming synonymous with "Resistance is futile".

To stand up and do something, anything, not because you hope for success, but as an example, and for your own sanity, is the most positive and human of responses.

[0] https://en.wikipedia.org/wiki/Lord_Haw-Haw

>> As you do, I find the discourse around tech to be a pit of dismissiveness, avoidance, denial, resignation, and learned-helplessness.

Do you think this is why people are abandoning the GPL license in favor of MIT/BSD? Something about the fight the GPL aims to win being a hopeless fantasy? In the face of the sentiment you and OP express, I'd think GPL usage would be widespread.

I think opinions around software licenses are limited to us hackers, and the actively code-publishing subset of us, moreover.

From my POV the GPL certainly seems alive and well, and the ideology of the Free Software movement remains sound and strong.

What I'm alluding to is the wider public. In <podcast-i-dare-not-mention> we literally walked around town interviewing young and old. Soon as I can, I'll share the results in a HN submission.

> Soon as I can, I'll share the results in a HN submission.

Please do!

As a developer my problem with the GPL is that it's less free than other licenses. It's an interesting legal hack, but it can only succeed in its goals by boiling the ocean. I just want to write things, and sometimes making money involves not publishing all of your source code. Having to choose between options and idealism limits the popularity of GPL projects.
Isn't that kind of the point?

The purpose of GPL and Free Software (which it has actually had resounding success in) is to develop a free commons which will stay free and not be exploited.

It's not for you to exploit to make a buck, and if that excludes your project, that's fine.

There are lots of things I would never consider free-licensing, but I think people badly miss the point of free software because they are stuck thinking only in terms of their own needs and personal benefit.

Again, if you don't want to use or contribute to free software, that is perfectly reasonable. But just bear in mind that the Linux kernel and GCC are incredibly valuable tools which are firmly in the commons and will remain free, and which you have benefited enormously from the use and free availability of.

The GPL is not required for such a commons to flourish. Most Rust projects are published under a permissive license, and that scene is flourishing just fine. I think that open source software as a whole, not the GPL specifically, is what has enabled the flourishing you mention. It seems to me that in the counterfactual world where Linus chose to use the BSD license for his kernel, Linux would thrive just as much as it does today.
I don’t like hypothetical counterfactuals but of course it is your choice to use them. It is hard to meaningfully compare recent programs, rust or otherwise, with established behemoths like Linux, gcc, Emacs, etc, that did the heavy lifting and allowed the playing field to remain even over multiple decades. If gcc did not exist it is not clear at all how a hypothetical computerized world would develop.
The reason we have custom roms on android phones, is because of Linux's copyleft license: Phone vendors are required to publish their kernel modifications shipped with their devices. This already reduces e-waste by lowering the purchases of new phones, when old ones are perfectly functional. Thus, copyleft helped the environment
To me this is also an example of how the GPL fails. The requirement for phone vendors to publish their Linux source trees does in part enable custom ROMs, but vendors still have found ways around the license in the form of proprietary kernel modules. This gives these phones a shelf life: after the latest OS version requires a kernel newer than the one the proprietary modules are shipped with, and efforts to write shims (which are always error-prone and hacky) start to fail, the phone can't even get updated versions of the custom ROM.
It's not GPL's fault, but greedy vendors which don't want to open source their drivers.
The point of copyleft is to protect the continued existence and welfare of such a commons. I'm not even necessarily saying it is the only way to achieve a healthy free commons, I'm simply explaining what GPL is for.

That said, do you think it is in fact protecting the user from exploitation, or promoting the health of a free commons, to use "free" software in nonfree products which do not provide their source code to the user nor guarantee the user's ability to study, extend, and modify the software that they are using?

I think the argument for Free Software is at the very least strong and good. There can be other approaches to solving the problems FSF wants to solve, too, but it is a totally valid and non-debatably historically useful position at the very least.

  It's not for you to exploit to make a buck
Of course it is... That’s what Google does, that’s what all companies who are large enough to know how to work around the GPL do. Every company who uses it on their own servers without telling you, or even compiles and distributes it hoping that no one notices, does. And when they do, they sometimes contribute resources back to the project, which helps it to thrive.

The GPL is very ideological, and there’s nothing wrong with that but you can see the cost of that right here: where someone pointing out there is a hidden cost is shamed for doing so. Given the chance of contributing code or community to two similar projects, I prefer the one that’s more about building than it is about contracts.

I'm simply explaining the point of GPL. Being able to work around the point doesn't mean it's not the point.

Do you really think it's fine and good for Google to take work explicitly intended by its authors to preserve free computing and work around the licensing to make money without preserving the intent and purpose of its license?

Shaming would be much stronger. I even pointed out that participating in it is totally elective and I personally would not in many cases.

Framing it in terms of your own cost/benefit is missing the point, though, and there is a meaningful and valuable purpose to it outside of maximizing your personal benefit in the moment of choosing a particular library.

>> As a developer my problem with the GPL is that it's less free than other licenses.

The freedom to deny other people the freedom you are enjoying is not compatible with the notion of freedom. It's hypocrisy.

That's not to say there is no place for MIT/BSD licenses, but it is not with general application software or libraries used to build such.

(comment deleted)
The fundamental problem I have with the GPL, and I think is echoed elsewhere here, is that the GPL is not about my code. It is trying to force my will on other people’s code. It is inherently less free because it is trying to exert dominance over things I do not own and have never been involved in. In theory, a 10 liner GPL Python script could infect an org with 20 millions lines of closed source code and try to dictate the licensing of those 20 million lines.

To me that is just wrong.

The GPL started when RMS wanted to fix his printer and Xerox said "No."
So are printer drivers GPL licensed these days or did the GPL fail?
Speaking as a GPL/"Free" software partisan, we failed. Although I don't like it, I think it's pretty clear. Most people have no idea what the GPL is, even most people who have heard of it don't seem to understand what it was trying to accomplish.

The farmers fighting for the "right to repair" their own tractors are the front of the battle now.

IANAL but I don't think your example is accurate. Unless you expanded that 20 line python script into your 20 million line application, the GPL is not going to cross over and infect your other code. It would mean that if you are distributing that python script to users then you have to include the source for it (not usually a problem with python, but it is for other languages).
From the GPL 2.0 license:

“You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License”.

That is pretty clear. If you distribute software that contains a GPL component, the whole lot is considered GPL. Whether the GPL is 20 lines or a million is irrelevant.

This is why the GPL and similar licenses are called viral. They infect other people’s code and try to impose license terms on it.

This is also why licenses like LGPL were created, to try to be a little more reasonable. But that seems to have failed almost completely.

Unfortunately you've fallen victim to years of anti-GPL propaganda and FUD. A 10-liner GPL Python script is not going to "infect" an org with 20 million lines of closed source code. Suggesting that it's possible, even "in theory", is absurd.

Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself.

And you also seem to think that if you screw up, and do depend on a GPL library (for example) in a proprietary code base, then you're required to give away the source for your 20 million proprietary lines of code. But that's not the case. There are many different remedies possible. One (common) remedy might be to cease distribution of the infringing code, remove the GPL component, replace it with something else, and re-release.

I think there are very few copyright owners who release their code under the GPL who would immediately push for the remedy to be your company releasing all of their proprietary code under the GPL. At least certainly not at first contact, if the company is capable of acknowledging their mistake and working in good faith to correct it. And even if a copyright owner did decide to push for this, it is ultimately up to a court to decide, and it seems vanishingly unlikely that a court would order that remedy, especially if the company was offering less-extreme, good-faith options.

> It is trying to force my will on other people’s code

I just wanted to call this out specifically, because, again: absurd. Please look at it from the default state: you do not get to use someone else's code at all. That's what copyright law says, in the absence of another agreement. Even if you have the source code to my library (or whatever), you cannot use it in your product unless I have given you a license to do so.

If you are considering using someone else's code in your project, one of the first things you should do is look at the license. If you see GPL, and don't want to abide by the terms of that license, you move on and find something else. That code is not trying to "force its will" on you. You are free to use it and follow its licensing terms, or move on. You are no poorer because that code is there, as you are not entitled to use it without a license anyway.

"Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself."

Yeah, apparently people moved on and the GPL is loosing significance.

Is it, though? I really don't think it has. There's still plenty of GPL-licensed software out there; most of the software I run on my laptop is still GPL, for example (the main notable exception being Firefox).

I think perhaps there's just a lot more open source out there these days than there was 10 years ago. A good amount of it was started by or sponsored by corporations, and sadly those types of entities are less likely to use the GPL.

But that's fine, no skin off anyone else's back.

Ok, I also have no hard data at hand, but in my impression the vast majority of projects even started by individuals today do not use the GPL, but rather MIT or alike. Me too, because I do not like the concept of copyleft. I like the intention behind it, a world with open source as standard - but I just think the way towards this, is by convincing people step by step and proofing that they can also make money with open source and not trying to force them to open source.

  Unfortunately you've fallen victim to years of anti-GPL propaganda and FUD. A 10-liner GPL Python script is not going to "infect" an org with 20 million lines of closed source code. Suggesting that it's possible, even "in theory", is absurd.
Unfortunately, intention is not how law works. The GPL is a legal contract, and how much of a company's IP will come under it will be determined by a judge after lots of expensive litigation. If a suit is filed they will pick apart every line in the license, subpoena every change that was made in every version that someone could claim "was distributed" (available at a public URL?), every email that was tangentially sent, every bug that was filed, every document written, etc, just to determine the extent of what is covered. If that sounds excessive and you haven't heard of it happening, that's because no one wants to go through this and would rather settle than spending the money and effort on defending themselves. To understand the potential, look at https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_....

The GPL purposely weaponizes source code in a way that other open source licenses do not, and personally I would rather hope that people decide on their own to release their changes than invite the lawyers into my code. Using code licensed this way is okay for projects that are already 100% GPL or aren't worth owning.

> I just want to write things, and sometimes making money involves not publishing all of your source code.

I've made lots of money and I publish every piece of code I've ever written to do it.

What you are describing must have been written by someone who does not believe in software freedoms.

Software freedom is an ideology, not a license. If you license part of your software as free software but not other parts of your software, you do not believe in software freedoms for the users of that software.

It's sort of like a factory that only uses slave labor for one step of production. Does that factory operator believe in human rights if their line is 90% respectful of the dignity of mankind?

> I've made lots of money and I publish every piece of code I've ever written to do it.

I'm curious to know what your personal method is. Consulting, paid support, proprietary dual-licensing maybe? There are indeed many ways to make money and still publish code as FOSS; the tricky thing, as always, is to work out which way is the right one for you.

For most people, a pile of software is not nearly enough. They need help of every sort to use it effectively.

  What you are describing must have been written by someone who does not believe in software freedoms.
That seems to be a common sentiment, that preferring non-GPL projects is about exploitation, and I don’t think it makes any sense. The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer? I understand the goal of wanting users to have rights that they would not otherwise have, but binding every developer in the hope of eventually binding multinational organizations seems like an awfully high price to pay.

  I've made lots of money and I publish every piece of code I've ever written to do it.
If only this were the common case. I once asked Stallman if he had any ideas on how we might make that more common, and all he said was it wasn’t his problem. I agree that it’s not his problem, but the prevailing solution seems to be to avoid the GPL. I think that many people would love to hear your thoughts on it.
> The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer?

It is not that simple. The GPL "takes away" some rights of the distributor of the software (their ability to restrict redistribution for example), but grants rights to the end user (the ability to modify and redistribute) of the software.

It's all perspective. As the developer the GPL may feel limiting, but as a user it is liberating.

I don't think you've really clarified anything. It is a trade: ensuring greater freedoms for the end user by adding restrictions -- by definition "not freedom" -- to developers/distributors.

I'm not saying that's a bad trade off to make, but it is absolutely a fact that the GPL takes away some rights. Or, since it is a copyright license, where the default in copyright is you get no rights, you might instead say it does not give all possible rights. I think it's important to recognize that sometimes "the greater good" comes at a price.

> it is absolutely a fact that the GPL takes away some rights.

Expressing it like you did is misleading. One man's freedom is another man's restriction. It's two sides of the same coin.

It is absolutely a fact that laws against murder take away some rights. Suddenly you are not allowed to kill other people. You do not have that "freedom" anymore. Flipside is that others now have the freedom to walk around without fearing that they can lawfully be killed by others. You pay for granting one "new" freedom by removing another, opposing freedom.

The GPL grants new rights for a party by restricting rights of another party. Just like all licenses do.

But you allowing yourself to not provide me with the code makes me less free, so you are the problematic one in this situation.

GPL's freedom is not about you as a dev, it's about me as a user.

Yeah, it strikes me a bit like, this will be hyperbole, complaining about forbidding slavery reduces freedom because you are not allowed to have slaves.
The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code. The original project is still there and still just as usable. Everyone still has the same freedoms as they did previously.
Yes, if you jeep your code closes then society is losing because everyone relies on you for everything. It's not about being usable, it's about being in control.
> The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code.

This is not true. What is harmed (and has effectively been destroyed) is the market to make money from selling libraries.

Many might be too young to remember, but it used to be that one could make a nice living selling libraries to companies.

In 1990 (just to pick a year) when BigCo Inc was developing a software project and needed library foo, they generally had two choices: build it internally or purchase one for money from a third party. This meant there was a nice market for small software houses to sell all kinds of libraries to BigCo.

Imagine for a moment a world where all open source is GPL. BigCo wouldn't touch the GPL libraries so they still either build or buy and we (developers) can continue to make money from our work.

Unfortunately it is no longer possible to make money from libraries because anything BigCo wants can be had for free in a BSD/MIT license so they get to take all the volunteer work, profit from it and give nothing back.

If that "someone" is backed by a large corporation whose goal is to extinguish the utility of the existing project, they might hire away some of the contributors and add features at a pace that the original project just can't keep up with.

While that's certainly capitalism at its finest, I don't think that's a good outcome for the user base as a whole, or of the community.

> As a developer my problem with the GPL is that it's less free than other licenses.

This is true for you, now. But that's not to say it does not increase freedom over time, over a couple of generations of software enhancements.

> I just want to write things, and sometimes making money involves not publishing all of your source code.

This is why I do both. I copyleft some projects. Others, I don't. It all depends on the balance of needs.

Although, for me, the issue isn't releasing source code at all. That's orthogonal to the issue of whether or not to use an open source license. I have yet to release software, open source or otherwise, where I haven't made the source available. For my non-OSS projects, that source is only available to people who have purchased the software, though.

I have the same problem with GPL, specifically in that as far as I can tell it doesn't give one the freedom of making a living out of making software as a product. I'd love to be proven wrong and find out that there are practical, viable ways to develop new GPL software and be paid strictly for doing this. However, what I tend to hear is that people don’t get paid for this, but rather for customizing that software (once it’s made) for individual clients, or setting up that software on a server and charging for access to that service. The few that do get paid directly for writing new GPL software seem to be funded by a patron who doesn't care about the software's direct commercial viability, either out of principle (e.g. the FSF and GNU) or because the software is a loss leader that bolsters the patron's primary business (e.g. Google and the Android codebase.)

To put it another way, as a software developer I would personally like to make a living analogously to how a successful book’s author makes a living. Such an author can make a living primarily or even exclusively from writing each book, not from giving away the book for free and making custom versions of that book for individual readers, or by offering and charging for live, public readings of the book, or by asking for voluntary donations from those that download the book, or by selling merchandise related to the book.

I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.

You might be surprised. Unless you are dealing with clients that have been burned by software licensing, or have attorneys knowledgeable in software patent/licensing law, you could charge clients for building software and release it as GPL. You then also provide the setup of that software, which you can include in the total cost. There is lots of GPL software out there, but not many people that understand how to setup or support that software. It is very possible to make a good living off the setup and support of GPL and other open source software.

If you don't feel right for open sourcing software you wrote for someone else, you could always offer your client a discount to let you open source the software. There are quite a few companies that now make their money supporting open source software, even when they aren't writing it themselves. I've done this myself, and I think it's a lucrative business model that still gives everyone involved freedom.

> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.

It's exactly the opposite!

If you want to make a living making software, you make it GPL. Any corporation that wants it will need to pay you for a commercially licensed version they can use (it's your code, you can license it in as many ways as you want). The hobbyists can use the free GPL version and the companies can pay you for your work. Win-win.

If you make your software BSD/MIT licenses you can't make any money, every corporation that wants it just takes it for free so you can't make a living out of it. You could try selling support but if your library is great and easy to use, not much money in that.

Unfortunately for you (and me) even if you make a really awesome library and license it as described above, you still can't make a living because there are other similar libraries with MIT/BSD license and the corporations will use those (even if they are inferior to yours) to avoid paying you. Thus, the market for selling software like this has been eliminated and we're stuck selling subscription services.

Dual licensing becomes very difficult once there is more than one person writing code, and that includes submitting bug fixes. Once this happens you need to track down every contributor and have them sign licensing terms. It's long, difficult, expensive, and you might prefer to rewrite the whole thing again. https://en.wikipedia.org/wiki/Contributor_License_Agreement
> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.

These two things are pretty unrelated.

For Android apps, a common model to have a paid version in the play store and still publish the source code on github with GPL. Here the GPL actively protects you against somebody coming, doing some minor modifications and then pushing their own paid-for version to the app store while not publishing the source code (which they could easily do with other licenses).

That’s the thing: the GPL isn’t there for you, the developer. The GPL exists to ensure freedoms for the user and it does this by requiring responsibilities of the developer.

This creates an interesting and important second-order effect that allows it to accomplish its goals without needing to boil the ocean by ensuring every user has the same ability to develop the same software, blurring and reducing the line between user and developer, creator and consumer. Practical considerations often prevent the expression of this effect but the opportunity doesn’t even exist in most other situations, particularly when you get to web services.

I didn’t reply to the important issue of money, the fundamental developer problem, because I’ve never been in a situation to sell my own code: my own projects have zero to do with my rent work.

I think a lot of distaste towards GPL comes from devs with corporate day jobs who feel frustrated that anything GPL licensed is functionally off-limits at work because there’s no way legal would approve of using it, and certainly would not approve of open sourcing whatever project is built with the GPL thing. I can see where such an individual might think to themselves, “I don’t want to put other devs in my position in the same pickle, so I’m licensing my thing as MIT/BSD”.
(comment deleted)
Right, corporate lawyers are ideological activists trying to kill GPL. But the campaign to denigrate the ideological activists on the other side is much more successful.
> Right, corporate lawyers are ideological activists trying to kill GPL.

This is a pretty cynical "assume the worst" outlook, and it badly violates Occam's Razor. I think a much more likely reason that corporate lawyers disapprove of the GPL is that one of their main jobs (in some cases their entire job) is to protect the company's IP, and the GPL is a huge threat to IP. Any lawyer who didn't advise avoiding the GPL would be negligent. I personally love the GPL and encourage its use whenever possible, but I avoid it in decisions for my employers and customers because of the risks. I think generally speaking the risks are not nearly as serious as most people I think, but they do exist (otherwise the copyleft philosophy of the GPL would be pointless!)

I've seen too many cases, recent example comes to mind is apple switching from bash to zsh, that are done not for technical or even business reason but ideological.
Absolutely. I'm personally a big fan of the GPL but I've felt that way before as well. When there's a great library that I want to use but it's GPL and the program I'm writing is IP, the request/proposal is dead on arrival. From that dev's perspective there's not much difference between an extant but GPLed library and a non-existent library.

That said, I do wish people would be a little more nuanced about it. IMHO (generally speaking) make libraries permissive, make applications GPL

Copyleft was a good idea, but its real world utility is a lot less than anyone would like.

I once inherited a GPL project, but I couldn't muster any community interest in working with it. Plugin authors would have been compelled to use GPL and no one seemed interested. We had to burn the project to the ground and start over with a new MIT licensed project. Now there's a flourishing community of plugin authors working with it.

GPL being a viral license is the core problem, I think. I get the intent behind that clause, but developers tend to not enjoy being mandated to like that.

I don't think GPL is bad, but it's not exactly pleasant either.

I don't think that's the fault of the license, its the fault of the world going in a less free direction.
That doesn't really add up. The core problem of GPL is that it's viral and takes away freedom from downstream developers in favor of upstream freedom.
Why would plugins have to also be GPL? The whole point of plugins is (typically) to allow distribution separately. IANAL but it would seem to me that unless you distribute your "plugin" as a statically linked binary that includes the main app, then the GPL would be irrelevant. If I'm wrong I'd love to be informed
I don't know if you are wrong or right. But to be sure, I just stay away from copyleft as it seems safer ... see the point?

Most people want to write software, not worry about licences. MIT seems easier, so people use it. For commercial as well as pure hobby projects.

According to the GPL FAQ, there aren't different license requirements for static linking vs dynamic linking. (The reason you can link glibc, stdc++, etc., which are licensed under the GPL, is because they carve out a "GCC runtime library exception" for such libraries, allowing one to choose a different license anyway).

The FAQ also says that if "establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth," then the that is essentially the same thing as dynamic linking, and so the GPL applies to your program as well.

Link to the FAQ: https://www.gnu.org/licenses/gpl-faq.en.html

The relevant FAQ questions:

----

> Does the GPL have different requirements for statically vs dynamically linked modules with a covered work? (#GPLStaticVsDynamic)

> No. Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

----

> When is a program and its plug-ins considered a single combined program? (#GPLPlugins)

>It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.

> If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

> Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

----

> Where can I learn more about the GCC Runtime Library Exception? (#LibGCCException)

> The GCC Runtime Library Exception covers libgcc, libstdc++, libfortran, libgomp, libdecnumber, and other libraries distributed with GCC. The exception is meant to allow people to distribute programs compiled with GCC under terms of their choice, even when parts of these libraries are included in the executable as part of the compilation process. To learn more, please read our FAQ about the GCC Runtime Library Exception (https://www.gnu.org/licenses/gcc-exception-faq.html).

The FAQ is just the FSF's wishful thinking, and not a legal document.

If your program can fork and exec another GPL-ed program, and exchange complex data structures with it, that is neither here nor there.

All that matters is whether or not you are redistributing the program, and if so, whether that is in accordance with its license, which restricts the manners of redistribution.

If you are not shipping that program, but your own GPL-incompatible program needs it (your program cannot be used unless the user has an installation of the GPLed program) then you're likely in infringing waters, because it could be seen as redistribution anyway. Though it you aren't physically redistributing the GPLed program on the same medium, redistribution of that GPLed program, carried out by someone somehow, has to take place for your program to work. It's as if you are redistributing it "by proxy". If the user doesn't have that program, you have to instruct the user on how to obtain it, thereby turning that user into an agent of redistribution, acting on your behalf.

But if you ship another program which is drop-in compatible with that the GPLed one, which allows your main program to run, then in all likelihood the GPL doesn't have a leg to stand on against you.

If you don't redistribute a GPLed program, in any manner, whether directly or "by proxy", you cannot be infringing on its license.

A GPLed program being combined with yours by the user, in their installation, has nothing to do with you, if that combining isn't a condition of your program being able to usefully execute. That is not redistribution but use, which the GPL does not restrict.

I don't use the GPL (and never have) because, like another poster said, it is less free. When I put work out there for someone to do what they wish with it, I don't think I should then say "oh unless you do xyz, I don't approve of that". That strikes me as hypocritical, and so I don't do it. I don't harp on anyone who uses the GPL, they gotta do what they think is right. But for me, the GPL was never a good choice for software licensing.

And before anyone says "someone can make a closed fork of your code and then charge for it", I am aware of this. I also don't see the problem. My goals when sharing code are to share my work and help others by doing so. If some company uses my work to profit, I still have accomplished my goals. Moreover, others can still download my original code if they wish and reap the same benefits as the for-profit company did. This is a great outcome. Everyone benefits, nobody is harmed. While this scenario is often used as an argument that permissive licenses are bad, I think it is a very poor argument indeed.

You're only looking at it from the perspective of the developer. The GPL freedoms are for the end user, not the dev.
To me the biggest problem with GPL is compatibility. The majority of coding effort is commercial and will be for the foreseeable future. If the frameworks are GPL then the commercial interfaces will likely be incompatible with free software. Thankfully they are mostly BSD so commercial software works on free software systems and vice versa.

For user-facing software, GPL is fine, but fewer people actually want to write that.

I choose MIT as my default license, because I don't like it when the license is longer and/or harder to understand than the program itself. Simplicity is underrated in software development; there's so much you can do with less.
> [0]: https://en.wikipedia.org/wiki/Lord_Haw-Haw

Honestly, my biggest takeaway from this article is that the guy was hanged for treason against a country he wasn’t even a citizen of…

It is terrifying to me how strong the public desire for retribution is. Despite over five years of conflict, the history books show that there will still many who wanted more bloodshed to 'get even'. As what might be considered an even greater tragedy, there were loyal members of the various French resistance groups who were summarily executed for their 'involvement' in Nazi or Vichy institutions, when in fact they were spying for the French against those very institutions.
For me it's a bit like the whole "woke-ism" thing.

The vast majority of people enjoy each other and don't subscribe to the vitriol that comes from both sides. In that manner, the internet is a bit of an echo chamber where if you get all of your impressions of the world from it, you'd think people were constantly at each others throats.

The news is the same way, they report negativity, so it has a real tendency to make you start thinking of the world in such a negative way.

That's not to say there aren't real threats out there, but the vast majority of people are just trying to get through their day.

This happens to police officers too, most of their interactions with people are negative due to the nature of their work, over time that starts being their default position towards people. I'll never forget the time I walked into a bakery and decided to get a cupcake for the police officer sitting in his car outside the shop (he was blocking the alley, unsure why). The change in his face from defensiveness to pure joy when I walked up to this vehicle was easily worth the money spent.

There's a positive aspect to employing police officers to be present even when there is no tangible risk of crime or danger.

Where I live, it's extremely unusual to ever see a 'bobby on the beat', so when I recently visited a city with thirty or more police officers with riot vans congregated at the docks, ironically I felt slightly uncomfortable - what mortal danger could be present around the corner to justify so much police attention? It turned out to just be a big football match, so there was not such a huge danger after all and the police would no doubt be able to diffuse any disturbance immediately.

If there had been no police around, it would never have occurred to me that there was a risk, even though I would have been tangibly less safe without their presence.

from the "assume ignorance before maliciousness" standpoint, a lot of the impression you speak of is just a fact of us humans reporting on the (perceived) more critical news, (perhaps also maybe the more profitable news) - but is more (in my opinion) a natural result of the news having limited time/bandwidth to report on a near-infinite content production source (the world)

A side effect (and the end result) is that we all end up having poor [Bayesian priors](https://en.m.wikipedia.org/wiki/Prior_probability) in our heads - this disproportionate reporting practice at large impacts our understanding of the world, as you describe. And I bet there's a feedback loop: the more skewed our model of the world, the more we will produce/consume skewed content.

I think this is not something you can ever truly do completely away with because of the many factors that it arises from, not limited to our psychological biases that tend us towards liking or interacting with certain form of content more than others... but certainly there should be more controls.

It’s unfortunate that the message discussing enemies was flagged. Maybe it needed to be said in a better way?

The US government is undeniably often working against the best interests of its citizens.

Corporations, corporate news, and advertisers are also working against our best interests. Im not sure any mindful and reasonable person would refute this.

However I will be charitable in saying that I don’t think they’re making us hopelessly anxious to subjugate us. They’re doing it because it’s profitable

I didn't flag/mod the comment, but I think it errs towards conspiracy theories.

I'm not American, and I understand the American government does evil things sometimes, but it also does a lot of good things for its citizens. It builds roads, keeps the skies clear, funds education, health systems, sues tech giants when they go too far, tries to manage the speculation/money markets, etc. To say "undeniably often working against the best interests of its citizens" is very hyperbolic. Most would probably argue that the government does not do enough, even conservatives (ex: controlling abortion or bathrooms, not that I agree).

The news are also not there to demoralize you, not as a primary objective. Anxiety and negative news do sell ads. I find public radio such as NPR do a wonderful job of balancing point of views, giving the facts, and provide some hope by explaining the underlying issues and possible solutions. Where I live, public radio is the only non-ragebait media that constantly puts pressures on whatever government is in power, and explains various points of views (while admittedly being more centrist editorially, angering both hard-left and hard-right).

I totally agree however with doing whatever it is you are good at, and that's a way to work towards improving the world.

Think about what kind of life our grand- or grand-grandparents had. They went from horse-drawn carriages and muddy streets, to modern cars on roads in their lifetime. Even us older neckbeards went from 8-bit computers to modern PCs on modern networks.

But I feel like this progress has reached the end of the S-curve and there is a feeling of bitterness and disappointment slowly seeping into our collective conscious, whether we realize it or not. The other things about propaganda and modern news I think are more side effects.

I understand the feeling. It could definitely be said for browsers (from Netscape to IE, to Firefox and now what might feel like a giant kludge). It could be said for cars (more expensive to own, complicated to fix, only to be stuck in traffic).

I don't think it's a conspiracy though. Certain things do reach saturation, or end of the S-curve, and sometimes society moves on to something else. I now use my old bike mostly instead of my expensive car, sometimes freezing my ass in winter, and I'm getting old and have kids. I could be bitter, but I'm actually quite happy that I can safely cycle in my city now.

(I know, I'm offtopic, though I do wish the downvote brigade would provide more useful feedback)

Looking at progress can't be attributed to the system of government. It's possible something like communism would have had us even further along.
Perhaps part of the situation is that with all the magnificent technology available, it is hard not for governments to do good for the citizens, even accidentally. After all, even if you were the most corrupt and self-centered individual to hold the title of 'President', you'd still probably order a road be built anyway, and that road will still improve citizens' lives at least on an economical level.
> it also does a lot of good things for its citizens.

> It builds roads

At insane costs and timelines while also lining the pockets of the politically connected

> keeps the skies clear

60% of power generation in the US is fossil fuels, which is horrible compared to any european country

> funds education

Much less so than any country in Europe, and the cost of education is sky-high

> health systems

Which is terrible compared to any European country, while also being the most expensive and some of the least accessible in the world for advanced countries

> sues tech giants when they go too far

Barely. And the revolving door of regulatory capture is a major problem

> tries to manage the speculation/money markets

Again, less so than many countries. Also the US is $33 trillion in debt

The bottom line is: no public healthcare for most, extremely expensive medical costs, extremely expensive education costs, extremely expensive infrastructure costs, horrible use of fossil fuels, and horrific workers' rights.

As I said, most would probably say the government does not do enough. My point was just that the comment could be seen as erring towards conspiracy theories, because it's quite common to hear "the government is against you". Maybe it was not op's intent.
> As you do, I find the discourse around tech to be a pit of dismissiveness, avoidance, denial, resignation, and learned-helplessness

I have a whole tirade on this, but I completely agree. It seemed while going through college that the whole prescriptivism and general attitudes in tech are built in such a way so as to discourage certain mindsets which the industry DESPERATELY needs, and my hypothesis is that not having representation of those mindsets across the board has contributed to a much of the degradation of UX over time (along with collective laziness of course; low level languages being more work to use, much as I enjoy high level conveniences myself).

An unfortunately large subset of too-comfortable tech workers have decreed the right way is to: never reinvent the wheel, always import, and avoid 'the hard stuff'.

The sad bit? They're well compensated for this learned inability, so arguably they made the truly smart choice here.

To the blessed few who reject this apathy and continue building new innovations? I salute you o7

An unfortunately large subset of tech workers have decreed the right way is to always reinvent the wheel, never import, and avoid 'reading documentation'. The worst bit? They're very well compensated for it, so arguably they made the true smart choice here. To the blessed few who reject NIH syndrome and use existing solutions? I salute you!
You got me this time, fragmede. :)
I am guilty of both, naturally :)
Both extremes are, of course, faulty.
> An unfortunately large subset of too-comfortable tech workers have decreed the right way is to: never reinvent the wheel, always import, and avoid 'the hard stuff'.

But these are obvious lessons, don't you think?

If your goal is to launch a product or deliver a feature, why on earth are you going to waste time, say, writing a message broker from scratch or an improved Redis clone or a fork of nginx that supports some feature? Is that where your value-added lies or what will get you to launch faster? No. That's stuff you can easily live without.

> This IS a pet project

I think that is a great attitude to start with.

When you build something with the attitude that it's for you and not "meant to be big and professional like GNU" to paraphrase Linus Torvalds, you can often achieve a lot with far less effort.

It allows you to be pragmatic and accept things that you otherwise might not, and you can get to something useful to you whether as a learning experience or to actually use with a tiny fraction of the effort you'd want to invest if you intended to build a "product".

A lot of my personal projects have involved stumbling over a project like yours and repurposing parts, and often veering off in entirely different directions, because it's often so much easier to pick up someones small pet project that is "close enough" than trying to pare down or adapt a huge, feature-complete beast.

With a browser, a huge part of the complexity comes from needing to support every site out there, and every usage scenario, but when you build for you, already just being able to focus on making sites you care about work well enough pares the problem back enormously...

And this is a long way of saying I think more people should take on "impossible" projects. Maybe the full thing won't be useful for other people anytime soon, but maybe parts of it will be, and sometimes something bigger comes out of what starts as a small pet project (like Linux did...)

Jaytaph, I really hope you can keep going and do something interesting with the work you learn from.

Reading someone else's codebase is very difficult because there's so much context and knowledge behind a web browser.

I have a very simple layout algorithm based on ORC Solver algorithm.

If you want to get to something that is useful you could implement rendering for simple HTML documents with <p>, <h1> <table> tags.

I wish more people gave a shot at browser implementations. You see a lot of comments that this in a herculean task, and maybe it is, but it's not _that_ bad.

You don't have to implement all of the functionality of modern web browsers. You don't need battery APIs, game controller APIs, USB, etc. Focus on what is important - HTML, CSS, JS.

Worst case scenario - you will learn something new.

Best of luck on this project!

I think it probably is that bad if you the approach it as this person is currently doing: not using any libraries at all. If you use existing libraries for HTML parsing, CSS parsing, layout algorithms, graphics rendering, etc, then I think I think it's doable.
Writing parsers honestly isn't that hard, especially when you have more or less step-by-step instructions for some of the formats, and test suites that independent 3rd parties have written that you can use to help verify your implementation.

Regardless, so what if it's "bad"? OP is using this as a learning experience too. If he wants to write parsers, and thinks that experience will be good for him, then he should write parsers.

I do agree that writing your own parsers isn't strictly necessary if you want to write an independent web renderer/browser. If I were tackling this project, I'd be more interested in and curious about how to write a renderer, and if there's a HTML or CSS parsing crate already written and available on crates.io, I'd probably use it.

Then again, writing a parser would also make me intimately familiar with HTML and CSS in ways that I'm probably not currently, and that might help inform how I build the renderer.

I wrote my own engine 15 years ago, when web was much much much simple.

It’s a Herculean task. What’s important - HTML, CSS, JS are highly complicated, even if you exclude other APIs.

It’s really cool pet project. But don’t expect anything usable as a result.

(comment deleted)
You shouldn't have to write this response on 'hacker' news, but good for you. Work on what you want. Some people do wood working, fix cars, or play video games. Others like coding. I have tons of partial projects I've started for various reasons, and enjoyed them all. Good luck and have fun. And, maybe your project does turn into something bigger.
Well said. I couldn't agree more!

Good luck to the OP!

Right? Whether or not it's practical, it's the way we learn.

I used to see that sort of haughty "well why do you want to do X" response all the time on stackoverflow/its ilk (I've basically deprioritized results from that entire network of sites now), which isn't even a good tack as there are plenty of others who might want to do X for other, valid reasons; "why" shouldn't even be a question as far as learning goes.

Agreed. This community has a tacit assumption that everything must make money or some other kind of return, otherwise it's useless, and that's not true. I love hanging out here, but I've posted projects for fun where people couldn't believe I didn't want to make money on them.

Money is great, but it's not everything. Good luck, OP!

I think a browser makes a GREAT personal project, because there are high-quality, public specifications for the stuff you need to implement. And these things are maintained in the open, you can even go and find meeting minutes if there are particular decisions you want to investigate further.

And it's not just specifications, there's test suites and reference implementations out there too. Of course it's still a huge task, but there should be no blind alleys to wander up.

You could do something back then, and it’s the same only thing you can do now: work with others. Drop the egocentrism, because collective action is the only way out, and it is possible.
If you’re doing it as a learning experience, then more power to you. But be honest with yourself about your motivations. As someone who usually takes on too much, and makes similar rationalizations, the road can be fun but it’s not going to a destination where you finish something. Don’t repeat my mistakes, examine the whys carefully.
Why does he have to finish anything? TFA even says "I don't expect to finish."

The Mona Lisa is unfinished and Leo spent 16 years on it.

He doesn’t, if he’s honestly ok with that.

But you only have so much time, why not pick a goal that is achievable? Seems like a waste.

Why have a goal?

Oftentimes it is the journey that is the most important, not the destination.

Not all journeys are equally valuable. A goal is critical to point yourself in a worthwhile direction.
"Not all those who wander are lost." -Tolkein

You and I obviously have different value systems so this thread will never coalesce.

Enjoy your travels towards your goals.

Likewise enjoy your wandering, and in your journey may you encounter a something worthy of setting as a goal, something that captures your heart.
This is great. Would you be interested to add support for a custom blockchain-based DNS instead of the current centralized hierarchical mess? I've been thinking about this a lot and it's clear that a multi-blockchain-based solution would be perfect for this (and far simpler than the current system). Each blockchain could have its own top level domain. People would buy domains using the blockchain's own tokens on the blockchain itself. The browser would just discover its own peers and query any node in the blockchain to convert domain names into IP addresses. The browser could check the results against known public keys on that chain to verify that the record is legitimate.

Blockchains are great for this use case as they are infinitely scalable in terms of reads (since you can always add more nodes which are exact cryptographically-verifiable replicas). While blockchains are constrained in terms of writes, this problem is dealt with via a transaction fee which increases with demand so it is naturally DoS-resistant and doesn't require special skills or trusted parties to operate.

Anyway, the current centralized DNS system of hierarchical resolvers is also constrained in terms of writes but it feels ad-hoc with many centralized entities which are given a substantial amount of trust.

Blockchain is a solution looking for a problem. DNS isn't it.

Sorry

Yet Bitcoin's market cap is $500 Billion and has a trading volume is over $10 billion per day and has been outperforming the markets for over a decade.

If the financial system is fine, then how is it possible that a 'scam' is worth $500 billion? What kind of financial system allows such scam to exist for over a decade and keeps attracting investors year after year?

If the financial system is not fine, then how could you say a blockchain like Bitcoin is a solution looking for a problem?

That position doesn't make sense from any angle.

And anyway, I've explained clearly what is the advantage of blockchain:

- It's a system which supports unlimited reads at scale.

- Spam-resistant when it comes to writes.

- Its data can be verified independently so there is no need to trust service operators.

Those are the most important characteristics of a DNS. Sadly the current system is missing the third point and that's why nobody truly owns their domain names. Everyone is merely renting from a TLD provider and hope that the laws of whatever country it's in are going to respect your claims.

I said Blockchain, not Bitcoin.

Bitcoins "value" it that it's a pyramid scheme along time, early "investors" profit when they get out. Market cap means nothing when you run out of difficulty ;)

Anyhow I'll leave you to your delusions and get on with my life. Toodle-oo!

>I'll leave you to your delusions and get on with my life

That's easy to say when you are living in a country with access to a healthy financial system, this is a luxury, not norm.

Thankfully you don't have any idea of my (current) location.

I could be anywhere in the world. Even nextdoor to you ;)

You and GP still would be deluded however.

> Blockchains are great for this use case as they are infinitely scalable in terms of reads (since you can always add more nodes which are essentially replicas).

Oh, right. Maybe they should modify the current DNS setup to allow for more than 1 node.

Current system does have many nodes in a hierarchy but they are operated by trusted entities and there is not much fluidity. Also nobody owns their domain names; just renting from the centralized providers and you just have to trust them with everything.

With a blockchain, you would provably own your domain name and nobody would be able to change your 'zone file' aside from you since they wouldn't know your private key. I mean it would be physically impossible even if they wanted to do it illegally (or if the TLD operated under a crooked government).

BTH, this has already been done by Unlimited Domains (.eth TLD) but for some reason it still hasn't been integrated into major browsers (aside from Brave which has it disabled by default though it definitely works).

The fundamental point blockchain fans miss is that most people don’t mind having centralized trusted entities. The fact that humans can intervene to change the owner of a domain name is a feature, not a bug, at least in non-authoritarian countries.
You also need some way to, you know, recover control of a domain after you lose your private key.
IMO, not being able to recover a lost private key is an acceptable tradeoff for fully owning your own domain in perpetuity. If we encounter a de-globalization event and international law starts to break apart, we would see a lot of value in not being beholden to foreign entities operating under foreign laws.
> IMO, not being able to recover a lost private key is an acceptable tradeoff for fully owning your own domain in perpetuity

You can hold that opinion and others like it, but the vast majority of other people don’t, which is why the only applications of blockchains that have ever become mainstream are (1) buying things that are illegal, and (2) speculating on token prices.

> If we encounter a de-globalization event and international law starts to break apart, we would see a lot of value in not being beholden to foreign entities operating under foreign laws.

If this prepper fantasy comes to pass I am going to have bigger things to worry about than a foreign country stealing my domain names.

I just want to thank you for sharing your politics views. These are the same ideas and views, as an American, that I’m struggling with. It helps so much to know other people in other parts of the world are going through the same thing and have the same thoughts and ideas.
This is an inspiring attitude. I used to be stuck in a rut of "there's no point starting to build / learn a thing because there will almost certainly never be a result of substance". After a while I realised that every unfinished thing results in learning, which is applied in the future, etc etc. What truly got me out of the rut was the realisation I was not only not finishing anything, I was not _doing_ anything. And one sure fire way to never finish anything is to never start anything. The corporate world is results-orientated, which is fair enough. Doesn't have to be that way all the time though - it's fun to be playful with technology.
> I used to be stuck in a rut of "there's no point starting to build / learn a thing because there will almost certainly never be a result of substance".

In my view, that's what people in power want to encourage, using crowed influencing dynamics [0].

There is an a loosely orchestrated effort to make people feel less powerful because that makes it easier for people in power (people with money or resources) to increase their self-interest endeavors.

This is why I don't watch the news, and take peoples opinions about the world with a grain of salt. Ideas are like viruses, the spread rapidly. The people with the most resources gets to set the tone about what the population thinks by using modern media to mold the narrative. If you don't understand your individual value, you will be swept into this mind set, whether you are aware of it or not.

[0]: Example https://cxl.com/blog/17-lesser-known-ways-to-persuade-people...

Ignore the naysayers, and keep posting back when you have major updates. Also keep in mind that it doesn't have to be full featured to be incredibly usable and useful. Would love to have a minimalist browser that can run HTML/CSS/JS, keep cookies/localStorage, and that's about it. Maybe an anonymous browsing mode.

I am rooting for you!

> I think this project will not result in an actual browser.

Maybe this project shouldn't result in a graphical browser. I still think there's value in text-based browsing, in the line of Lynx. I would think there's a higher probability of creating something really useful if you were to go that route.

> i want to know more about the underlying technical challenges.

I applaud this fundamental curiosity. We don't want a world where technologies that people use (must use) every day are opaque, proprietary solutions that spy on us.

Yet that is exactly what we have in the most popular Web browser.

I recommend RSS or just to scrape Web content (Python and Perl do this well) and read the bits that are interesting to you.

You are going to learn so much from this project!

I have had a lot of fun implementing (much smaller) web standards. I started with ones that had step-by-step implementation guides. It was one step in realizing that the web _is ours_! We can build it at every stage, from the web pages to the standards to the browsers.

Happy building!

> This IS a pet project.

Contrary to many comments here about not creating another browser, I'd like to encourage you continue!

Once, for example Linux was also pet project. In retrospective, it's obvious but we don't know how the world will look like in a couple of years. And who could predict the success of Linux in the early nineties?

I wrote a browser in Ruby yonks ago just to see what the hard parts were. It was great fun, and I learned a lot, so more power to you.
Scratch whichever itch you may have, especially the ones you can learn from. Some itches give birth and evolve into bigger things.
Idea -- pump the whatwg specs through chatgpt to generate the Rust code.
-"I'm building a hot rod!"

-"Why wouldn't you just go hang out on the factory line at Ford instead?"

The difference is instead of buying parts to build the hotrod you instead start by making an iron mine.

If you want to make something custom you don't need to start from scratch.

I don't think he plans to build his own processors and write it in machine code.
In the hierarchy of "from scratch", it goes more like "buy fast car", "build fast car from available parts", "machine own parts from stock", "make own castings from scrap metal", "mine ore and smelt it".

Just because my hot rod isn't made from existing parts does it mean I'm mining ore.

Many awesome hot rod projects involve machining from stock or even casting from scrap. What OP is doing is on this same level. He's not doing atomic layer deposition or anything. Just writing code on top of an existing OS and using existing programming languages.

Ignore the noise. So much crab mentality on HN sometimes.

If even half the time spent telling people that their project is pointless waste of time was spent doing something constructive instead, the world would have a lot more cool and interesting projects in it.

Better to fail at something bold and ambitious than not even try at all.

This!

Making >> Not Making, always.

You make, you learn, perhaps one day you will make something better, perhaps not — but at least you've been building something. Ignore the armchair critics, criticizing is so much easier than building.

I'm not upset at the OP, but I wouldn't say this is a golden rule. Some people make some really atrocious shit. People should, in general, be at least a little critical of what they're making.
It's fine to make atrocious shit though. Making something good takes practice. Often you need to see what sticks. Sometimes the only outcome is a lesson.

The master has failed more times than a beginner has even tried.

Sorry - I don't mean low-quality, I mean evil.
I don't think that GP is talking about the quality of production, but the quality of the concept. There are things that people with any sense of shame would not produce.
I've literally only had success with software I built to satisfy my own curiosities and needs. Not all of it took off, granted, but I think that's fine. Not everything needs to succeed.
Being critical of what you're making...is infinitely better than being critical of what other people are making while not making anything yourself.

The making part is the key.

As I said elsewhere, I'm referring to people doing harm. They should stop making things.
(comment deleted)
it might be easier, but that doesn't mean all criticism should be ignored.

In the spirit of cliched reductive "feel good" statements of this whole comment section, ignoring criticism is also easier than building something that ends up to be extremely subpar.

Basically anything you build, a lot of people will crawl out of the woodwork to inform you that they'd prefer you build something else.

The only sane option is to build for yourself, you can't win trying to please that crowd.

People inevitably will come and say this is futile because writing a browser that supports the "modern web" is just too big an undertaking. I would like to encourage you to ignore them and write a browser that works with a subset you decide to be useful and never feel bad if some pages don't work.

I know it is kind of hypocritical for me to say that, because I come from a generation that fought for standardization and against all the "This page works best with IE4", but I've come to the realization that while we certainly have progressed we've not really accomplished what we'd set out to.

Nowadays, I certainly would not refuse to use a browser just because it only supports a subset of pages and sites. Heck, a browser without Facebook and Youtube might even be a good thing.

I would say though that you have to pick your battles. On your path you might vanquish shitty web sites but just not being able to read them, but I think a real victory against enshittification involves breaking away from the web user interface which is some of why there has been so much bot blocking lately. It's not that people are going train an LLM on a shitty site but that you're going to get the LLM to read the shitty site for you, that is the real death of shitty sites. (e.g. agent posts your question to Reddit on your behalf, picks out and summarizes the best answer; instead of looking at craigslist every day for farm animals you get notified of the good ones; instead of seeing an ad for a Laurie Anderson concert on the bus when the tickets are all sold out the system tells you the moment the tickets go on sale...) But who knows? An HTML 5 parser is a good place to start towards that end.

I had similar motivations for developing my smart RSS reader and intelligent agent YOShInOn which has gotten me to work on filtering and "deshittification" right away as opposed to face a 1500 man x year project before getting to the stuff that matters to me.

For me the path not taken was developing a "reader" that works like archive.today, there was a summmer in the pandemic when my son and I were driving back and forth to Buffalo a lot and talking about missile defense systems and I did a "spike" project to develop something that would archive, process and deshittify web pages and I came to the conclusion that it was a long road to make something that was better instead of worse (every archiver I've seen is way slower than just browsing the page and sorry "slow X" advocates, slow = bad)

This winter I turned to the problem of end-to-end active learning for selecting articles and had great success as it. Sometime it sends me to archive.today but the goddamn CAPTCHAs never end when I use it from home so the question of the archiver/reader has come back but now that the thing has a workflow engine and could archive articles before I look at them the archiver/reader looks appealing if I can find something open source that is good enough.

There's a commercial product

https://www.getupnext.com/

which took the opposite approach of developing a reader and now they are working on recommendations. That's a path that makes sense because the reader cleans up the text which in principle is good for NLP but for what I am doing I think the signals in dirty text have enough value that I am doing just fine. They've got the issue that they're very unlikely to really develop content-based recommendation for a multi-user system because collaborative filter is such a good shortcut, also YOShInOn uses a Tik Tok style interface which for some reason has hardly been tried despite being a hit with Stumbleupon, this interface collects good negative samples and gets great results with a simple classifer... if you get a few 1000 judgements.*

Good to see someone do this.

Funny I was thinking about this recently - I've been trying to push for action from regulators / government here in NL (especially wrt Google) but there was very little appetite with the people I'd need to convince to stand with me to make something happen.

Considered briefly starting a new browser. However I've had experience attempting to design a very simple OS (a long long time ago, I got a mouse/pointer working on the C64 then realised that it wasn't worth it).. and modern OSes and browsers are of a similar level of complexity.

So now I'm focused first on family (due to working insane hours the last few years they've been neglected - pretty sure you worked a little bit on the same projects so know where I'm getting at) and a bit later in the year on something where I have a >50% chance of seeing results - fixing healthcare IT here in Europe. If I can say anything it would be to remember that as a parent - especially one who wants to be responsible and present - we don't have a lot of space available for serious side projects.

(oh and my side project is a C64 emulator, also in Rust, ground up.. only said being a parent thing means I'm only at the research phase, although to the point where I have all of the resources I need to begin productive work sans the 8-16 hrs of quiet time to start coding + get the write-test-deliver loop up and running)
OP you go write that code and profile and make sure you get some real world feedback on it. I hope it DOES result in a real functional browser.
I don't know why Linus is trying to write a new OS, we already have OSes. It's not like this Linux thing is going to go anywhere.
No one said that. At the time there was a massive gaping hole in the OS market begging to be filled. OS vendors were gouging everyone, and GNU/Hurd kept experiencing delays.
Of course nobody said that. Just like nobody should be saying anything to this guy about writing a browser.
Actually Linus himself proclaimed it as a hobby that would never be big and professional:

>I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

It’s like saying “Zuckerberg and Gates dropped out of school so why shouldn’t I?”.

Chances of replicating Linux success are as big as chances of being next Zuckerberg.

Doesn’t mean you shouldn’t do it, but align your expectations.

And most importantly, as OP said - it’s pet project. Success isn’t a goal.

Version 6 Unix was about 9000 lines of code; the first version of Linux was something similar. Firefox has 27 million lines of code. Linux has about that now, too, which is why one reason you don't see grad-school Linus #2 writing an OS and getting traction.
Did he write a blog post (or newsgroup post) in advance of writing the first version? I'm all for pet project tinkering, but seems strange to publicly make a pronouncement before starting. There's no "news" here, why is it on the front page?
(comment deleted)
Go for it OP, the more browsers the merrier! :^)
go for it!

The hardest part of a browser is rendering. The rest of it is easy, relatively speaking

The big problem with browsers is state. Specifically, the web page has an internal state that the developer is tracking, and the browser UI has a state that the browser is tracking. How do you keep those two in sync?

The current model is based on the sort of hack that Netscape did way back when. There are probably other ways to do it.

Specifically, the problem is: how do you give something access to a representation of the visual state (the DOM) while hiding your implementation of it...in a secure manner?

And how do you allow that client (the website) write access to that DOM representation securely and safely?

This site is called hacker news after all, so this is the attitude I love and welcome on here. Ignore the high-karma-naysayers, they don’t really contribute to anything.
To me the logical conclusion of what you write is not to write yet-another-web-browser, because browsers are rotten to the core by terrible protocol designs, terrible specifications, politics, greed etc. Browsers did not spontaneously start to degrade, it's what the key actors at different times did that made it happen.

The only hope, IMO, is to build something much more sane that cannot be abused. Something like Gopher or Gemini. Simple specs that make it possible for a single person or a small team to implement something decently working without them spending their like on it like Middle Age monks spent their life mapping and cataloging stars.

I would start with a feature-limited markup language that's good enough to display text - maybe images if you really insist - and leave all media and interactive stuff to external programs; if your browser ends up being a virtual machine and a universal media player, it is doomed to degenerate into a WWW browser if it ever gets popular.

But of course if one builds something that cannot be abused or monetized easily, the big content creators won't be interested. It will take a lifetime or two to gather a critical mass of users, and only if the WWW overloads abuse their power so much that the average WWW serf actively starts to look for a better place to be, and only if at this time the alternative has more and bigger advantages than drawbacks.

Gemini is an interesting educational project but the lack of ability to serve even static pictures or video is an absolutely crippling mistake.
Gemini can, in fact, serve up images, audio and even video. The specification disallows inline display of such types, but it can serve them fine.
Ah. I misspoke, but my assertion is the same - the lack of inline display is a hamper.
I prefer the lack of inline display; I would rather it not display the pictures inline in the document anyways. However, that is something that the client does anyways, rather than the server. (Also, I think it does allow inline display if the picture and the document linking to it are both local files (or are both inside of a ZIP archive which is a local file), although even then it should have the option for the user to disable them.)

(Furthermore, it seem to me that Gemini is not a very good protocol for serving a video file anyways, because it does not have Range requests and stuff like that.)

I was going to suggest something similar. Limit scope to something that is pretty (all of the pdf/ps display model?), but doesn’t support arbitrary code execution or surveillance.

Prodigy (a walled garden network like aol or compuserve) in the US tried to build this in the late 80’s / early 90’s (not with the same motivation—-they were trying to build a terminal with vector graphics for the masses).

For this sort of project, and the emotional reasoning you have for building it, I truly believe less is more.

The problem with gopher, Gemini, etc is a lack of people using the service. The point of a browser is to browse. What are you going to browse if there is nobody creating content? And vice versa, most people won’t put large amounts of time and effort into creating content nobody will see.

Gopher appears to have declined some 20% in content between 2021 and 2022.

I believe I’ve taken a peek at Gemini and there wasn’t much to do either.

The same problem exists for zeronet, i2p, and freenet, which is now apparently two or three separate projects?

Mastodon had a big jump in users when musk bought twitter, which tapered off significantly. They had another, smaller, jump with the Reddit fiasco. Which also tapered off.

But I guess that’s just me rehashing what you said about reaching critical mass.

> But I guess that’s just me rehashing what you said about reaching critical mass.

Yes. But one should remember that some services that are popular today started with a very small user base. Programming languages have to start from one user (starting from zero is orders of magnitude harder - if you are not the first regular user, your project will most likely fail).

One way to achieve that is to have a "killer feature" or maybe a unique combination of existing features. For instance, a subject related to browsers is discoverability and search. If you are going to compete with the WWW without funding or support from companies/institutions, there's little hope that someone will provide a search engine. This means that users will have to pay for that service with their time (that's how Wikipedia emerged). One could think, for instance, about a content tagging system that users could share, to solve this problem.

I remember first seeing Gemini a while ago, and thought, "cool project, but I probably won't ever use it". And I haven't. If I'd want to build a browser, I want there to be a lot of content for me out there already for me to browse.

It's funny, because I think designing a new protocol and markup language, and then building both server and client software for it, and then actually convincing millions of people to use it... well that sounds orders of magnitude harder than writing a web browser, even with all the crazy and terrible protocols and APIs I'd be expected to build.

And sure, I could set my sights lower and try to build something with much more modest ambitions, only hoping for a few thousands of people to use it -- at most! -- but that doesn't sound interesting to me. I'd still have to use the web for all the other things I need and want to use the web for. Maybe this sort of thing does sound interesting to some people. That's great, go for it!

There are HTTP to Gemini proxies/mirrors like gemini://gempaper.strangled.net/mirrorlist/ or Wikipedia mirror: gemini://vault.transjovian.org/en
I loved your comparison to how hackernews is turning into TV news.

> ... it’s all negative. Companies are pushing unwanted updates, breaking all promises, raising subscriptions, and buying up companies while doing everything in their power to figure out how much more personal data they can take (away) from us. Governments are banning encryption because of child molesters (they also use vans and candy. Let’s also ban them!). People in power with absolutely no idea of how the modern world works and people in power who DO know how it works

You nailed it. Thanks for articulating this.

I think it's amazing you're starting a new project. You stated two points in your blog post on this project: 1. To push back on Chrome almost-monopoly and 2. As a self-learn project.

You'll have to balance the needs between those two. You aren't hitting 1. until you have users picking up the browser. You'll be hitting 2. as soon as you start the project, potentially.

If you contribute to currently existing projects you'll be hitting 1. A lot more but may lack 2. compared to a new project.

Good luck! Btw this is reminding me of Serenity OS which includes a from-scratch browser. You should check it for inspiration :D

Great philosophy. What were the pain points so far - where's the real moat? In the not-too-distant future when we sick some AI coder programs on the problem to just mass-implement features in a banal repetitive way, which are the really complex ones they're gonna get stuck on? What are the ridiculous "this feature only exists to keep google in power" features you've found?

What made you want to make a browser instead of something much simpler like - an OS?

What I've found when you become a nuisance but read that as successful, you'll find all sorts of problems suddenly plague you in your off line world.

So I wish you the best of the luck, but keep an eye out, the world but in my experience the US and UK, is nothing like its "public persona".

On any tech forum, there's always a lot of "why are you writing your own Hello World program instead of contributing to an existing one?" energy.

As you note, the learning process itself is worth it. I'd encourage you to keep a blog / journal for others to follow.

Most innovation doesn't involve the most qualified expert in the field taking on a project that is a sure bet. In fact, qualified experts are often too cautious to try something crazy or shake up the status quo. Back in 1991, Linus wasn't the right guy to write an operating system either, and most experts probably felt we didn't need another OS to begin with. He probably should've contributed to GNU Hurd or Minix instead.

I think this project is a fantastic idea! I've toyed with the idea of writing a browser for years, but when I consider the amount of human-years that have gone into Firefox, Chrome, etc., I get scared and back off of it.

I wanted to give it a try, but it looks like main isn't building right now, so I'll check back periodically. Hopefully I will even find some time to contribute, as a Rust-based web browser sounds like a project I'd be interested in working on. One thing I'm a little bummed about is the license: I've gone back and forth on this topic a lot in the past couple decades, and more recently I have actually been releasing stuff under more permissive licenses like MIT. But if I were to work on a browser, I'd want to GPL that. For a work of that magnitude, someone forking it and making proprietary changes would be intolerable to me.

Regardless, I think there is absolutely room in the world for more than just ~2.5 dominant browser engines (Gecko, and Blink/WebKit, which I guess aren't the same any more, but have the same provenance, hence the extra 0.5). Sure, contributing to something that already exists would be "more efficient", but since when was efficiency a requirement for doing something that you believe matters?

I think there is a useful LLM based solution (chrome extension or something) here where you ask it (with some trial and error), to only list constructive responses, hhh. I am only half kidding, most of internet feedback is useless, even here, but the ones that matter do matter someone somewhat exponentially, so you'd want them. You can even allow it a margin of error.
> Yes, there are a lot of browsers out there where I can contribute to which would be more efficient. But that would result in just a few browsers instead of a lot of browsers. I'm all for the last one, as this would give people options.

IMO it's better to have few rock-solid open source systems than multitude of half-baked projects reinventing the wheel. But good luck!

Screw everyone else, it looks interesting and fun. I'll be following your RSS updates. Good luck!
I like your list of 100 opinions. Of course, not absolutely all of them ;-) but the effort you took to compile the list. Lots of things to think about.
I feel like this is something which a government should be developing and funding.

I understand that governments like to make rules and hope that the market responds with something that matches their vision, but as the EU demonstrated this just ends up with websites with user-consent pop-ups. A worse experience for everyone, and bad actors just find a way around it anyway.

Rather than relying on legislation to play whack-a-mole, why not just build something for everyone with tax dollars and open source.

funding, sure, developing? not so much. I rather create a foundation that the government can pitch in some money.
User consent popups are awesome. I never agree to anything, and I know exactly which sites are spying on me and which are OK.