Hacker News new | ask | show | jobs
by jlokier 2130 days ago
A reasonable argument, and so I've upvoted.

But even taking into account removing unnecessary complexity, a web browser that users will choose is still complex, and has a very high compatibility bar, which is also a moving target.

You might say, does the browser need to much in it? Well, for users to choose it as a daily driver, it needs to work with web standards, formal and informal, and with nearly all sites. The web standards accrue complexity due to commercial development too. So do expectations, e.g. for smooth rendering, running games, etc.

An open source "small" browser which avoids that complexity is certainly possible to write, but few people would, or could, use it as their daily driver.

(Case in point. I used an open source-ish phone for a few years, a Nokia N900. It was great fun. But ultimately I had to stop using it because the browser increasingly couldn't handle ordinary sites.)

Do you know of any "serious open-source software" of comparable scale, which does not require big companies paying for it, even taking into account the argument around unnecessary complexity?

Not much comes to mind. Linux kernel, GCC, RISC-V, things like that are predominantly developed by paid workers, whether from companies or by government & academic grants.

Debian comes to mind as a possible exception but I'm not sure, because so much of it is on the back of big projects which are themselves funded.

1 comments

I agree that what I'm describing doesn't hold for a web browser. But I think it's important to remember that "web browsers" are a very unique category - I can't really think of any other software that accidentally became an operating system (and I mean that in an entirely serious way, not derisively).

While in retrospect it's understandable why it happened (economic forces etc.), it also means that the web-related specifications were never really designed with the consideration of "how could we build an operating system that doesn't highly centralize complexity". And so we're now effectively stuck with a huge pile of specifications that you pretty much have to implement to call yourself a browser.

But for most other software, this isn't true; because most software is implemented according to some pre-defined set of goals and/or requirements, and there is no external specification to satisfy, other than for some internals that can be outsourced to a library. This allows for much, much more reduction of complexity.

> Do you know of any "serious open-source software" of comparable scale, which does not require big companies paying for it, even taking into account the argument around unnecessary complexity?

The problematic part in this question is "of comparable scale". To put it bluntly, pretty much all of the software that meets that description has an inherent complexity problem, either having too broad a scope or reinventing too many wheels. So no, I don't think that at that scale corporate funding is avoidable; but I also think that the scale itself is the problem.

I do think that corporate funding is largely avoidable with a different approach to open-source development entirely; one that (re-)recognizes that open-source is about a shared public commons, not just freely downloadable software, and that prioritizes collaboration and modular, shared implementations over reinvented wheels.

Unfortunately we have a lot of cultural issues to fix to get there, not the least of which is the recent-ish appropriation of "open-source" by certain companies-that-shall-not-be-named as a developer marketing tool, paying basically no mind to the "public commons" part and calling it open-source merely because it's under an open-source license and it looks good on GitHub.

That's certainly not to say that this is entirely a corporation or commercial problem, though; there's definitely also an aspect of NIH culture and dependency avoidance among individual developers, where people have wildly inaccurate ideas about the costs and benefits of dependencies, and lacking knowledge in how to manage them effectively.

One typical example of this is the JS ecosystem, which gets a lot of flak for one-liner modules[1] but was actually well on the way to addressing this problem - right up until Node.js started getting hyped up, and an endless stream of shiny reinvented wheels from startups started showing up, many of them poor copies of tools that already existed and worked well. Webpack is a notable example here, which really is just a worse Browserify in every sense.

Ultimately, this is probably the only plausible solution to this problem that I can see. Modular projects with a well-defined scope, that actually have a reasonable chance to reach feature-complete status, where the implementations are widely available and reusable in a broad variety of different projects that can themselves become feature-complete. Where only one developer has to do the work and it is then forever done. Whether that's in JS or something else entirely.

[1] https://github.com/sindresorhus/ama/issues/10#issuecomment-1...