I'm fed up with it, so I'm writing a browser(adayinthelifeof.nl) |
I'm fed up with it, so I'm writing a browser(adayinthelifeof.nl) |
Less work, more result.
Good way to help ensure we're not stuck in some local maximum.
GoSub will be used by tens of people. If he makes a contribution to Firefox it will be used by millions of people.
"This blogpost starts with me switching of my car radio..."
of != off
If anything would rile the regulators, Google making Gmail compatible only with Chrome would do it.
I’m sure it will batter your brain and crush your soul as these large projects tend to do, but declaring war on a problem and then getting featured on HN doing so is old school hacker and you deserve street cred for it.
Congratulations on your new baby. Can’t wait to see what college you choose! ;)
https://upload.wikimedia.org/wikipedia/commons/7/74/Timeline...
I've been considering doing something similar. I can't find a browser that really makes me comfortable or happy, so my thought is that the only solution is to write my own.
It would certainly not be full-featured or be able to deal with the full HTML spec -- but for me, that's a positive, not a negative.
Qs: wouldn’t an, potentially better, approach be to use an existing rendering engine, say WebKit or Gecko, and then build the rest on top first. And, then decide if the needs are met and then decide to rewrite or fork the rendering engine?
Disclaimer, I don’t have a deep understanding of browsers.
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.
I would love a browser that sticks to the original use, to render simple html documents.
No Javascript or bloated features. Would break a lot of websites but that is ok.
It might even be good for accessibility on some sites
Maybe consider hosting the source code in an open-source alternatieve to GitHub?...
this isn't the first frustration-funded browser post i've seen, i think this is a common phenomenon. individual people want to gain control and this is a good sign.
I've looked into the browser space, and its history, how we got here, and where else we might have gone, and might still get to.
Regarding browser history, there's the question of how we ended up with a single monolithic application which handles the many different elements of Web interaction, from HTML rendering to JS interpretation to identity and security to managing bookmarks and history, to multimedia (video and audio playback), and the often strongly conflicting roles of document reading and discourse versus commerce and transactions versus media playback versus general application support. (I've long thought that those four principle roles might best be split out.)
One of the more interesting (and obscure) early browsers was ViolaWWW, initially released in 1992, which was a graphical browser with scripting and stylesheet support, and introduced or provided an early exemplar of bookmarking, browser history, images, tables, frames, and other features that now define the modern browser.
<https://en.wikipedia.org/wiki/ViolaWWW>
<https://web.archive.org/web/20160303174535/http://www.viola....> (original seems dead: <http://viola.org/>)
I've long wondered why browsers don't offer the option to simply cache and store content locally rather than rely on remote lookups for all access. There are some sites for which this doesn't work especially well, but for many static sites, the ability to browse offline and search locally would be a powerful bonus. Similarly, why isn't it possible to run a search across content from my recent browser history rather than across the entire Web? If I know I'd read something in the past hour, or day, or week, constraining a search to recently-accessed content would be a strong bonus.
(How to deal with content changing over time by saving snapshots and diffs of websites could also be interesting.)
Or why isn't the notion of a discussion --- threaded, flat, sorted, weighted, whatever --- a first-class entity within the Web world? There have been an untold number of reinventions of what was essentially Usenet-plus-something, and the notion that discussions must be fully specified by each individual website (including HN) makes increasingly less sense to me.
I've toyed around with the notion of the Web as a filesystem-addressible space. Plan9OS with its 9P protocol has something like this. The notion is that Internet and Web space could be navigated as a filesystem using both existing and newly-developed shell and other tools to directly access and manipulate objects.
A modular approach to Web tools would mean that we could disaggregate HTML parsing, various proxy services, caching and storage, ad-blocking, privacy indirection (Tor, VPN, or other forwarding mechanisms), interactions (editing and such), among a suite of tools. Some of this now exists, but the hurdles to general use are still fairly high. Parking something like Readability.js directly in the mainstream content parsing flow would be an interesting option.
Working off Readability, I've had a notion that a set of predefined document types, to which user-selected styles could be assigned, would be an interesting change-up to the present Web. A specific URL would specify what its document type was (article, index, gallery, discussion, multimedia, catalogue, application, custom, ...), and the person accessing the site could define what style they prefer for viewing the site. The templates would be fairly tightly defined, but would allow for limited branding elements, think of how pre-printed paper letterhead looked back in the day.
Another Web element that might be interesting to disrupt would be search. If websites themselves could provide indices to their content, crawlers would not be necessary (though audits to guard against keyword stuffing or other deceptive practices would remain). Indices could be distributed in a mechanism similar to DNS. Reputation and ranking would remain issues (though those might be achieved through third-party or federated services). But much of the present infrastructure that's presently required to build search engines, and the entrenched incumbent advantage, would be broken.
I'd love to see a new set of Web architects play with ideas such as this, and am trying to do so myself.
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…
I'm in a similar place, where for the most part I'd rather be in a kitchen washing dishes for minimum wage than managed by a tech guy (and have primarily been out of tech for 6 years, occasionally freelancing). Although I am strongly called to build my vision of tech and continue to do so on my own time.
There are similar solo "built by a crazy person" projects out there like TempleOS where you could find synergy. I'm another "crazy person" who's building a stack with early-2000s web tech ("web 1.5"), so if you look hard there's even synergy there... support 2005-era web and I'm on board.
Cheers.
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.
What matters is that this project gives the author a meaningful sense of agency in the world and we all need that in order to be psychologically healthy.
Humans were not meant to sit passively consuming media that makes us feel bad all day. We're animals and animals live by doing.
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
People who can't or are unwilling to do something themselves often try to project that unwillingness onto other people.
Good Luck!
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.
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.
For example, CSS seems like a constraint solver that has nothing to do with parsing HTTP requests. Even parsing CSS itself has nothing to do with laying it out. Rendering is another step altogether that also has very little to do with anything. I can see these things being split into standalone and testable libraries with limited scope. Maybe I'm wrong though. I often am.
A "browser" seems like an "operating system". There is so much going on and I can see how a "browser" could be made out of myriad existing components in various amounts. A bit like the various Linux distributions and their particular choices of underlying tools and frameworks. You don't do it all at once, you got a million separate small chunks working together (if you're a Unix kind of guy..)
Maybe we should all work on creating as much small composable components as possible and then let the other guys slap a nice UI on top of it and put a bow on it. This is probably not practical, but a guy can dream.
I'm not involved in this space at all but I would guess that the main problem with writing browsers isn't that they're all obfuscated monoliths, but that the amount of work to create an entire browser composed of solidly interconnected parts is still a huge amount of work, because of exactly what you said, it's almost an operating system, at least when you look like fully featured browsers like Firefox and Chrome.
We need more QuickJS and libcss and rendering backends, not “browsers”.
In about 3 or 4 weeks the author here has managed to implement about 2% of a very poor parser for html. Parsing HTML is probably one of the least labor intensive parts of writing a browser and is a task that would be suitable as a project for an undergraduate student majoring in CS as a project for a class. Writing a javascript engine that is fast enough to allow current web pages to work is not even comparable in complexity and effort. Projecting to what it would take to build a very poor browser, we are looking at about 150 years or more.
Then he got annoyed at tech news being bad, and came to the opposite conclusion. That all the negative tech news must be correct, and that they have the agency to change it.
But the reality is the opposite. Just like for general news, tech newd has a bias for the negative, and the reality is a lot better than you'd think if you just take the HN frontpage at face value.
The scenarios that motivate the author are so improbable that they border on absurd. And if they were to happen, the plan of writing your own browser wouldn't help anyway, or at least would not be anywhere near the best way of addressing it.
Want to write your own browser as a hobby? Great, go for it! But the justification isn't even internally confident.
> I do like to follow tech news, and for me, this is done 98% through Ycombinator’s hacker news. But I started to get the same feeling I had ten years ago: it’s all negative.
That's followed by the list of some sample categories negative tech news that they are concerned about. Most of them have nothing to do with ads. Even for browsers only one of the things they are concerned with is ads (and it's not something that actually happened, it's something the author imagines could happen).
> the ONLY thing you hear on the news.. any news.. are bad things(tm). War, corruption, you name it.
Way to go. Godspeed.
Feelings aside, why do you think this?
...On the way to writing a new hypertext protocol that uses ASN.1, of course.
...Which I can then write a browser for.
I, too, am not sure if this will ever finish, but I figure that at least, at some point, I will definitely be able to tell you why ASN.1 didn't win the protocol wars. :-)
I've been thinking of how I can help, that I should stop reading so much negative news, for my own mental health, and do something to move the needle back towards the positive.
"This time, I DO have some influence because I am a programmer. I can develop software ..."
It was jarring to see the blogger go to "I'm going to write a browser". This isn't helping, this isn't even "a way to push back" ... it's a hobby project, like woodworking. Pushing back would be helping out with one of the open source browser projects already out there or something else productive.
I mean, "you do you", it was just quite the twist.
You ARE in a position to make the world a little bit better. We all are. Start with simple things, like thinking about using cc-by license and think about why, when and what FOSS license to use. A FOSS license is just a tool but make it work for your goal(s)... And why not just ask your local government to use FOSS software on websites to be a bit more compatible with every home baked browser. Your privacy and freedom is limited year after year.
(So the text of the link is correct, just not where it points to. You have to manually copy it as text and paste it in your URL bar.)
Source: wrote a browser[1]. I enjoyed it and learned a lot. My motivation for starting it is that the open source browser landscape was bleak at the time. There was khtml, which seemed fairly solid, but that was KDE and I was firmly in the Gnome camp. Mine was very fast and lean, but wouldn't scale to embrace what's now considered the basics of a web browser: JS and CSS. Motivation tailed off sharply when Mozilla announced they would be open sourcing their browser. If I had known it would take them over 4 years to ship Firefox 1.0, I might have kept at it.
Gambatte!
Didn't like the doomerism about the news in this post. Yea, you as an individual can't do much, but joining a social movement organization would make you not an individual. I think a lot of people here just don't want to take that step or were never invited to do so and so write off things as impossible.
Rumors (I did not check rust syntax specifications) say rust syntax lost itself like c++ (and what is happening with latest C syntax additions from ISO).
Is this true?
Because, personally, I am not interested in a browser written with a beyond sanity complex language syntax. I would have prefered a web engine written in plain and simple C (without the latest tantrums from ISO). Without bazillions of deps, SDK included.
That said, a modern web engine, beyond a javascript engine (for instance quickjs), is tens of millions of lines of code (Big Tech made sure Small Tech could not reasonably follow).
In the end, in my opinion, the most reasonable option is to go noscript/basic (x)html where it does a good enough job, bridges with super simple protocols you can navigate to with URIs (for instance irc://... mailto://...), and really in the worst case scenario a semantically optimized network protocol (the leanest possible) with a rich GUI client (for instance sliding maps, even though you can browse maps ok with a noscript/basic (x)html browsers).
Genuinely, why not? What’s wrong with being an activist fighting for a better world?
I see your kind of disclaimer all the time and I’m baffled that anyone would actively reject this nearly universally accepted pro-social perspective.
Someone help me here
Is the risk of being seen as Naiive really so strong as to overtake the highest ideal of humanity?
Negative confirmation bias being a big one. Do a half-assed job of trying to change someone's mind and they become even more recalcitrant.
I long ago realized I'm not the person who should be leading a group or a club. I respect people who can, and I support them as best I can. It's important work, but it's not for me. Which sucks when the club doesn't exist (I'm currently trying to encourage a couple of people to start one and it's not going well)
That's a perspective I didn't have before so thank you!
Turn off the news. We are living in unprecedentedly peaceful and prosperous times, and it's only getting better day by day. That is a fact. If you feel otherwise, that means you are consuming something not based in reality that is causing you to feel that way. Most likely mainstream news.
There are a lot of people who are a definitely NOT more prosperous or peaceful. Democracy is decreasing world wide. Young people in the US are NOT as prosperous as their parents and grandparents were at their age. Global warming is causing serious issues which we are only beginning to address.
Maybe things are getting better for you and me but that is NOT universal.
The Deputy Secretary-General of the UN begs to differ [1]. I like a positive attitude, but outright ignoring the reality is not the solution to handle negative developments in the world imo. Sure, statistics can lie but saying things are better than ever and always getting better is also not a fact as you say.
Just because we're doing good in absolute terms compared to wars and plagues of the past doesn't mean we're doing great.
Ever heard of climate change and mass extinction? That is super bad, and unprecedented. Society may well not survive it, in a timeline of a few decades. I think there are reasons to be worried.
Peace in Europe is shattered. The former President of the United States has been indicted for attempting to overturn an election. R&D on the killer robots + AI from RoboCop and Terminator is nearing completion, almost ready to go into production. Full 1984-style surveillance totalitarianism has been rolled out in occupied China and is at the pilot stage in most western countries.
According to the SlaveVoyages project, almost 13 million people were captured and sold as slaves between the 15th and 19th centuries:
https://www.slavevoyages.org/assessment/estimates
Today, 50 million people live in slavery, according to the Walk Free Foundation:
https://www.walkfree.org/global-slavery-index/findings/globa...
Are those sources "not based in reality"?
Can you find any chocolate bars that aren't made from cocoa beans harvested by child slaves in west Africa? (Only ones I've found: https://manoachocolate.com)
Are you saying U.S. police officers extrajudicially executing more Americans in 2019 than mass shooters murdered is something pushed by the "mainstream news"?
https://en.wikipedia.org/wiki/List_of_mass_shootings_in_the_...
https://en.wikipedia.org/wiki/Lists_of_killings_by_law_enfor...
The Bank of England reporting that real wage growth in the 2010s was back to the slowest since the 19th century, that's "getting better day by day"?
https://web.archive.org/web/20161206225850/http://www.bankof...
Even if you only take the racket this project made here, the inspiration resulting from it is bound to make the world a better place.
Even the author said: "I want others to be inspired by it and make their project. And those projects will inspire others, and so on, until we DO reach a point where we have a browser that can topple the big players.".
A journey of a million miles begins with the first step. This is a step. It might not be in the ideal direction, but it is a good direction. Feel free to push back in a way you feel is more effective, but I think it's worth it even if it only improves the author's mood.
Yeah, I think (hope?) it will be good for them. Just weird to frame taking up a hobby as "pushing back".
It is ok to be inefficient. And it is ok to change your mind later.
But abandoning helplessness is a big and wonderful first step
Especially giants like China and India are doing very well.
the conclusion of this author is that the profit motive will drive companies to build ads into browsers. (microsoft is already putting ads into windows. browsers will be next)
- Impossible to repair without going to the vendor.
- subscription for seat warmers and "full accelerating curve" (https://www.theverge.com/2022/11/23/23474969/mercedes-car-su...)
- random feature disabling (https://www.wired.com/story/fight-right-repair-cars-turns-ug...)
Nevertheless, these statistics are globally better than any previous century: rate of people dying in war, poverty, child mortality, child education, female education, access to clean water, access to food, access to medical care, economy, life expectancy, crime rate, number living under democracy.
It will always be possible to point at one or another thing and truthfully say that thing is worse than it has been for a long time.
However, as bad as things are, as truly grim and miserable and precarious the lives of some people, we do indeed live in times of unprecedented peace and prosperity.
2. Yes, violent conflicts are increasing. That does not mean we are not living in historically the most peaceful times. This is indeed a case of statistics, while not outright lying, being selectively singled out to present a narrative. How many people are dying in these violent conflicts? How many people are being displaced? Child mortality, war crimes being committed, lasting negative economic impact, negative impact on international relations, etc, etc, etc, are all factors in whether or not the world is becoming more peaceful or not, and the overwhelming majority of those factors are improving.
3. "things are better than ever and always getting better is also not a fact as you say." - I challenge you, in your own time, to disprove that statement. That exercise does wonders for a persons outlook on life.
That press release is some fear-based BS.
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.)
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.)
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.
"Doomscrolling"? "Mental wellbeing"? Everything is great, a-okay for me, the problem is I've read enough history and know enough about contemporary technology to see quite clearly where this all is going. Don't you?
I strongly recommend you read something by, say, Vandana Shiva or Arundhati Roy and consider decalibrating from the authoritarian agenda.
I hope you are not (I saw this a loooot) one of those people that to correct democracy things we should tell people what to do, think or say or not or what to love, hate, like, dislike or how to behave. I say this because I lived in Asia for 12 years and I see the westerner world collapsing on those premises.
Greetings.
So you concede all the other points?
"This revision represents 11 million more people living in extreme poverty, largely driven by South Asia (5 million) and the Middle East and North Africa (4 million)."
World Bank is claiming there are 11 million more people living in extreme poverty in 2023[1].
[1] https://blogs.worldbank.org/opendata/march-2023-global-pover...
> It is still the case that global poverty has been falling since the 1990s, and at a slower rate since 2014
There is no distinct trend line for the U.S.A., but it seems like it is part of the "Other High Income" group, which is hovering around the 0.5% mark. Your citation:
> This revision represents 11 million more people living in extreme poverty, largely driven by South Asia (5 million) and the Middle East and North Africa (4 million).
Is comparing 2022/2023 data to 2019, which is clearly less than a single generation difference, let alone two.
Looking at the article's cited source, <https://www.worldbank.org/en/publication/poverty-and-shared-...>, the overview shows a massive drop from roughly 50% in 1980 to a mere 9.3% in 2020 (TBF, up from 8.4% in 2019).
Yes, the pandemic did cause a rise in poverty, but the rate is projected to recover. And even despite the pandemic the poverty rate is still far below what it was 25, let alone 50 years ago. It will be worth checking the data next year to see what effect the war in the Ukraine has, but it seems very unlikely that the poverty rate will shoot up to the level it was back at the turn of the millennium.
No, I simply did not consider points made from a US-centric worldview to be valid in this discussion.
> World Bank is claiming there are 11 million more people living in extreme poverty in 2023[1].
Compared to when?
Either you are insanely optimistic (to a point where it is actually ridiculous), or you lack information.
You do realize that climate change is, right now, going to make entire parts of Earth unlivable (the most humid ones, around the equator), right? As in "human beings won't be able to survive outdoors on their own because it is too warm"?
You do realize that this means billions of climate refugees, which in turn means global instability, wars and famines, right?
Or, option #3, you've been on a diet consisting almost exclusively of negative news and have adopted a doomer mindset as a result.
The world is actively combating and will fix climate change.
This is the part I'm disputing. You are moving the goal posts to "generations" ...
There is a fair amount of evidence that we are currently in a down swing in some key areas.
At this point, that's faith :-).
Look at the numbers: CO2 emissions are increasing every year. Climate change is happening faster than the models predicted. Biodiversity is dropping, we are living a mass extinction right now, it is an observed fact and not a prediction. Fossil fuels are not unlimited, we passed the peak of conventional oil production in 2008, the general peak is expected soon, same for LNG. We don't have any sustainable energy that can remotely replace fossil fuels.
The one thing that is pretty clear is that we must consume less. But we are not doing that, instead we are consuming more every year. Hiding behind some sort of "others will fix it, I have faith" Silicon Valley religion, or something.
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.
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.
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).
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.
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
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…
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.
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.
Money is great, but it's not everything. Good luck, OP!
https://en.wikipedia.org/wiki/History_of_Linux#The_creation_...
Good luck to the OP!
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...)
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.
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.
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!
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.
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.
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.
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!
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.
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.
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...
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?
-"Why wouldn't you just go hang out on the factory line at Ford instead?"
If you want to make something custom you don't need to start from scratch.
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!
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.
I am rooting for you!
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 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?
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.
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.
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.
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.
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
> ... 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.
What made you want to make a browser instead of something much simpler like - an OS?
IMO it's better to have few rock-solid open source systems than multitude of half-baked projects reinventing the wheel. But good luck!
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.
This sounds like Linus' original announcement of Linux on comp.os.minix:
> Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-) Linus (torvalds [at] kruuna.helsinki.fi) PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(. —Linus Torvalds
*installs Linux on literal spacecraft*
You never know where a project will go. And in a way it doesn't matter, if you're doing it for your own reasons.
Even at Microsoft. Truly incredible.
So I wish him luck and hope he succeeds. (RSS feed followed, so I can take a look at his project now and then)
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!
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.
I'm about two and a half years in, now my project can render HN and simple blogs reasonably well. Is it objectively better than w3m (that I was going to replace)? Not exactly, so I still return to w3m for some tasks. But I've found use of it for tasks that I didn't even think it would be useful for, learned a lot about programming in the process, and find it cool that it works at all.
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.
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.
"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.
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.
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...
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.
[1] https://en.wikipedia.org/wiki/Servo_(software)#cite_note-202...
I recently bought a Kobo ereader, and the gorgeous, text-focused, crisp design of the OS is what got me thinking in this direction.
The existence of Reader Mode in Firefox and Chrome points to a common understanding that, for articles anyway, most of the web fluff is totally unnecessary. Imagine Reader Mode, but maintaining navigation and slightly more complex layouts. There are plenty of extensions that allow you to theme specific sites, but I haven't found any that try to create a unified, pleasant experience from the current chaos.
As usual, the ad-based web can be blamed. The argument that it is of utmost importance to preserve the ability to make this button 5px bigger than the other, rounded, and blue, only makes sense if you're an ad-based company trying to manipulate people into specific behaviors. By leaving the design client-side we would enable experiences tailored to providing the best experience for the user.
I don't know if or how we could ever get there, but it seems to me that mass adoption of css and Javascript in the majority of websites was a mistake, when most sites could easily be built of a much simpler set of standard widgets. This need is currently filled by pages hosted with hostile third parties like Facebook, or middleware editors like squarespace.
This kind of framework would also give online privacy to all in one fell swoop. There is no reason browsers need to be finger-printable. The reason they still are is because the company for which this state of affairs is highly lucrative is also the company making the leading rendering engine.
Perhaps what I'm actually asking for is a splinter net, or maybe something like this is still achievable by just parsing html.
While I relate to OP's fed-uppness, building a browser seems to me like trying to play catch up to a system that will never have your interests at heart. Not that I think the project isn't worthwhile, it just triggered the above thoughts.
Better to stay home and program. This + ChatGPT have made me more productive than ever before.
Pretty cool of them to contribute $100k to the project.
https://awesomekling.substack.com/p/welcoming-shopify-as-a-l...
From https://awesomekling.substack.com/p/welcoming-shopify-as-a-l...
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.
My recommendation is to go to https://news.ycombinator.com/newest and try to find personal projects and other interesting post that need an upvote, and perhaps make some comments to the author. I like more the discussion when there are 10 comment than 100 comments.
I'm a firm believer in the idea that no matter how much experience you have, you should practice.
Every skill that isn't practiced wanes over time. Commercial projects usually don't provide the sort of regular stimulation needed to improve one's abilities. Sometimes it's not even enough to maintain them.
Even if they do, you should probably not rely on that, because it leads to design decisions that scratch that itch instead of getting the job done.
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.
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.
I applaud the effort and wish you the best luck - also I imagine myself eventually joining you in my own attempt too :P
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!
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.
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.
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?
It’s still a little buggy and I have to reboot now and again … but not much more than usual.
At least I control much of the experience now and for the rest of my life. And I’m learning a lot of fun stuff. It’s been a huge time waster but in a very good way. And it’s very snappy. And all of the configs/settings/code synchs with git (eventually lol).
So the news is contraceptive? I can easily believe that.
Not much actual good content here.
Not much of a contribution to the discussion here.
> I do not expect ANYTHING to come from this project. I do not expect to finish this project.
So... good luck with that. :)
We need something that's designed from the ground up to be a remotely loaded application layer for operating systems. But to get to that point, we need to throw away the decades of legacy requirements.
I've changed my browsers to load all websites in reader view by default, and it is shockingly better than the old way. You get your text, hyperlinks, images and even embedded video in a clean and legible format. Sites that need more advanced functionality can be added as exceptions, such as HN.
There is a reason why people are spending almost all their online time inside standardized experiences. It is easier and better. That's why people look at images on Instagram and shop on Amazon.
You are correct that this would be the better^tm solution. But it's so far from reality that it might as well be impossible. Branding, UX Design and Marketing are far too entrenched to give up their turf. What you end up with is another Gemini Protocoll that a few nerds use and the rest of the world doesn't care about.
We need a solution that can deal with the same level of complexity as browsers but in a cleaner, easier to implement and far less legacy loaded manner. Something like a combined new HTML CSS frontend layer, with a decent sandboxed webasm-like virtual machine (preferably hardware virtualized) with clear boundaries and a decent, forward looking standard.
My name is Peter Sherman. I wrote a non-HTML, non-CSS, non-JavaScript browser several years ago (in theory, it could be easily adapted to those standards by including code and hooks for the appropriate parsers and interpreters. (Software Engineering side-observation: Why aren't browsers delivered as independently functional component parts, that is, why are the codebases for most browsers that use a lot of libraries typically tightly coupled to those codebases?))
Anyway, point is, I may be able to help you with your quest if you reach out to me... my email address is:
peter.d.sherman@gmail.com
I can give you all of the basic theories with respect to what you're trying to do, and hopefully make the software engineering process a little bit easier by showing you how to appropriately divide ("divide and conquer") the entire task into much more managable, approachable, and understandable subcomponents...
Let me know, and I'll try to help you!
Anyone else who is similarly curious can also reach out to me, via email, too!
If more than one person is interested -- perhaps we should put together a group?
Actually, independently component parts is what I think should be done, would be better, that you can exchange each part, add new parts, or wire them together differently, e.g. you can much more easily change some features in ways which are not as easily done, e.g. replace the TLS implementation with your own that allows non-TLS proxies, or to change some CSS commands, or add new HTML commands, without changing everything else too.
The Mona Lisa is unfinished and Leo spent 16 years on it.
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.
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?
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
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.*
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".
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.
Sorry
Oh, right. Maybe they should modify the current DNS setup to allow for more than 1 node.
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.
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.
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.
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?
You don't speak for everybody.
What percentage of user driven web traffic is done through 'web "apps"' and what percentage is 'actual websites'
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
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.
site: https://www.ladybird.dev
code: https://github.com/SerenityOS/serenity/tree/master/Ladybird
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.
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.
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.
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.
Maybe we need Mozilla (and others) to make an independent Javascript "VM" that everybody can use.
https://en.wikipedia.org/wiki/List_of_ECMAScript_engines
Mozilla's:
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.
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.
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
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)
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.
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.
Web browsers and the web are gloriously human.
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 agree. I often find that some formats are too simple and the rest are too complicated (for example, this is the case with the Ogg container format, and also with Gemini file format and Gemini protocol), and sometimes other problems.
> In my mind, there is no reason for every website to dictate its own layout and appearance when 99% of sites could be broken down into procedural elements that could be rendered however the client preferred.
I agree that too. Often I just disable CSS.
I think that ARIA might be able to help a bit, together with HTML. (This way, nonstandard form fields can still be displayed even if the styles are disabled, if those nonstandard form fields are using ARIA, which is something that I sometimes see.) (It would be better to just design it properly the first time, but that would be difficult when everyone else does not want to do it in a better way, although using a common accessibility feature such as ARIA seems more likely to me.) So, a client program can include a mode to display the document using HTML and ARIA instead of CSS.
Rendering just how the client preferred is also making it more portable across different screens, etc, and better accessibility, than using CSS and then having to make separate mobile version and those mess.
> it seems to me that mass adoption of css and Javascript in the majority of websites was a mistake,
I think you are right. I sometimes write web pages that do not use CSS and JavaScripts (although often I will just write plain text instead of HTML, anyways).
> building a browser seems to me like trying to play catch up to a system that will never have your interests at heart
There are some features that I would want to deliberately exclude (or implement in extensions instead of the core features), and some that may be helpful to be deliberately differently. (Actually, I would move many core features into extensions instead, and some features that would usually be implemented in extensions (such as request/response overriding) into core features. Flipping around many of these things might help a bit, too, I think, to allow more versatility for extensions, better security, and better user controls, etc.)
So throw that all away
A Reader Mode Browser with some small quality of life features seems like the perfect project. Thanks stranger
This, in combination with their incentive to make everything seem like a huge problem that might lead to the end of the world, is a pretty toxic combination.
You should look up who gives money to people who do that, and what political movement they represent. You should then look up this book [0] and who also gets money from the same group of people. I'm sure a lot of things would become more clear to you.
[0] https://en.wikipedia.org/wiki/Foundations_of_Geopolitics
> Someone burns a koran? It is only news if it is reported. If someone does it in their basement alone, it would not matter at all.
Yes, of course. But that's exactly what a protest is. It has nothing to do with the burning of the book itself, and everything to do with doing it in public and letting people know. Even if you live in the most rigid dictatorship, you can criticize the president as much as you want in your own basement. It becomes something completely different when you do it on a public square with a crowd watching or participating. But still there are those who want to make what happened in Tiananmen in 1989 become not news. Then it wouldn't matter at all, as you wrote.
As for Quran burnings, a person in my country - that is not Islamic - was sentenced for spitting at and burning the Quran as a protest against a recent Islamic massacre against people in his group. Imagine the situation: Your people are being killed because of a holy book, but you are not allowed to protest against that book. In that case the news media chose to be silent about the protest and about the sentencing of the man. Just an example.
The bigger problem with news media in my opinion is delivery. I can't stand any TV news, because the way the reporters talk is just sickening. They have adopted this kind of venomous and angry voice that just reeks with contempt against the viewer. I remember many years ago I had been out on travels and spent months far away from TVs. I the airport there was a TV with CNN on broadcast, and I was just shocked at how hateful the voices and demeanor of the presenters were. Like, why would anybody voluntarily watch and listen to this? But if you're used to it you might not notice.
But focus on negativity does also get exaggerated in TV news, such as when they are showing clips of traffic accidents far away, or floods in foreign countries that have floods every year, as well as murders in foreign countries that have no international impact. I think it is like you say to keep people in a negative mindset, because that makes them weak and ready to be influenced, not least by advertising that promises to make them feel good if they just buy this product.
It may be news, the preview movies on a Disney DVD, commercials, advertisements, billboards and whatnot. I absolutely hate enforced media. I do know it pays the bills/makes other things cheaper because of its revenue, but i stopped caring about those business models a long long time ago. They are all in it for the money and nothing more.
I will pay for products, as long as they leave me the f alone. No enforced "you should try this or buy that!" stuff. So i use pihole, duckduckgo, etc. It is my infrastructure and i will use it as how i see fit.
I eagerly await this browser.
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.
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.
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.
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.
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.
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
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.
>I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.
Seems like it would be possible to write a formal proof that "X" is the worst possible brand. It's like he just walked into Walmart and grabbed https://www.walmart.com/ip/Letter-X-Branding-Iron/485919721
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.
Reader view is already half way there, and it is as mainstream as it can be, as it comes on all iPhones and Macs. But you're right, my idea doesn't have much to do with the underlying protocols.
Speaking of branding, marketing and UX design, I would say that most businesses have already completely given up on that, and are content to sell their stuff online through portals that are completely controlled by third parties such as Amazon, Booking.com, Doordash, Instagram, etc. Very few make a decent effort to have a website where their customers can easily purchase their products, even though it isn't hard at all.
Could a user-centric browser extract the HTML results of everything made by javascript and present it in a standardized way? Because text, images and videos are already solved problems with reader view. The interesting part would be if HTML input elements could also be thrown in, even though they're usually quite javascript connected. Any website more complicated than that is more of a web app, and should be rendered as the designers intend, in my opinion.
In the end, I think even a folder structure would be the right way for front-end as well as back-end for most websites. Here's your articles in HTML, here's your images, here's the product you can purchase as some kind of standardized json-object. Does this make sense?
(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'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.
> 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.
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 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)
Sounds like Andreas Kling: https://www.techgamingreport.com/new-ladybird-web-browser-wh...
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.
Will you? I very much doubt this is the case.
The master has failed more times than a beginner has even tried.
The making part is the key.
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.
The only sane option is to build for yourself, you can't win trying to please that crowd.
But you only have so much time, why not pick a goal that is achievable? Seems like a waste.
Oftentimes it is the journey that is the most important, not the destination.
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).
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.
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!
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.
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.
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.
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.
I could be anywhere in the world. Even nextdoor to you ;)
You and GP still would be deluded however.
It's ok if you don't like to use PWAs but that doesn't mean nobody does or that they're worthless.
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".
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 and I obviously have different value systems so this thread will never coalesce.
Enjoy your travels towards your goals.
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.
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 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.
[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...
That said, I do wish people would be a little more nuanced about it. IMHO (generally speaking) make libraries permissive, make applications 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!)
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.
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.
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.
To me that is just wrong.
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?
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.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.
GPL's freedom is not about you as a dev, it's about me as a user.
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.
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.
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.
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.
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.
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).
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.
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.
Please do!
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.
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.
For user-facing software, GPL is fine, but fewer people actually want to write that.
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.
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).
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.
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.
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.
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.
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 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'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.
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.
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.
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.
Yeah, apparently people moved on and the GPL is loosing significance.
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.
“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.
The farmers fighting for the "right to repair" their own tractors are the front of the battle now.