Suppose you lost your phone. How would you cope with this situation? What is your laptop failed to start up? Would you have backups? Have you tried to restore them? Do you have a plan on how to get back up and running quickly?
There are a lot of things that can (and will) go wrong when it comes to computers, life, work, holiday and cats. This project will send you disaster drills when you least expect it to see how well prepared you are. It contains tips and tricks and you can score yourself and match against others on your preparedness level.
I've set this up as a small weekend side-project for two reasons: first, because i fail too often when it comes to disaster prepping myself, and secondly, I was very curious to see if I could use LLM systems like chatgpt and deepseek to "generate" apps/sites. Turns out that it wasn't too bad, although i wouldn't fire my whole development team just yet.
I have always wondered if you REALLY could use LLM systems like chatgpt and deepseek to "generate" a complete website/app. I'd got an idea for a small side-project, so I decided to see if I can do it without coding myself (too much) and let most of the work be done by AI's. The outcome: maybe doable, but i wouldn't fire my whole development team just yet.
I was surprised with the actual code that was generated (symfony7), and even though it sometimes got things completely wrong, i found that with some nudges in the right direction, it ultimately could figure things out well enough for me to incorporate. Although, without any (deep) knowledge of what I'm wanting to do, or symfony knowledge, i would not have been able to create this project.
So about the project: Suppose you lost your phone. How would you cope with this situation? What is your laptop failed to start up? Would you have backups? Have you tried to restore them? Do you have a plan on how to get back up and running quickly?
There are a lot of things that can (and will) go wrong when it comes to computers, life, work, holiday and cats. This project will send you when you least expect it a disaster drill with a scenario to see how well prepared you are. It contains tips and tricks and you can score yourself and match against others on your preparedness level.
Good points.. we will definitely set up a FAQ with these kind of questions. But to be honest, we might not have an answer for all of them. Why not use Servo's CSS system and create our own, but using v8 javascript engine is mostly a question answered by: "don't know"..
Obviously we cannot write everything by scratch, but we don't know yet where we draw the line.. We like to keep things modular as possible so we can easily swap out the systems we use in favor of better ones in the future.
OP here. Thanks for the pos/neg/neutral comments everybody. Some remarks:
Yes, there are a lot of browsers out there where I can contribute to which would be more efficient. But that would result in just a few browsers instead of a lot of browsers. I'm all for the last one, as this would give people options.
This IS a pet project. I never told anyone otherwise. I would start writing it even when I wasn't fed up with the tech industry. But I get angry about not being able to do anything about anything. And this is my way of trying to do something about it. It's the best I can do.
I think this project will not result in an actual browser. That's not why i'm writing this. I want people to see my code, either laugh at it, or get some own idea's to make things better. For instance, I LOVE the whatwg site where the whole html5 tokenizer and parser algorithms are step by step described. This means it should be easy(?) enough for anyone to write their own html5 parser. What would happen if google and/or microsoft decide to create their own custom html5 (html5, ghtml) as a closed format? Who would be able to stop them when they have such a market share?
I want to start for scratch - BECAUSE i want to know more about the underlying technical challenges.
> I get angry about not being able to do anything about anything. And
this is my way of trying to do something about it. It's the best I
can do.
This attitude is gold, and it's what changes the whole world.
What you said about the misery of "news" resonates with me. In psyops
we call it "sapping". Propaganda designed to demoralise, dispirit and
corrode resistance used to come from our enemies. The classic
example was Lord Haw-Haw [0]. Today our own mainstream news channels
and technology giants seem determined to keep the population in
perpetual hopeless anxiety.
As you do, I find the discourse around tech to be a pit of
dismissiveness, avoidance, denial, resignation, and
learned-helplessness. I've been doing a lot of interviewing people
lately, and careful sentiment analysis. The results are horrifying.
The very word "tech" is becoming synonymous with "Resistance is
futile".
To stand up and do something, anything, not because you hope for
success, but as an example, and for your own sanity, is the most
positive and human of responses.
> As you do, I find the discourse around tech to be a pit of dismissiveness, avoidance, denial, resignation, and learned-helplessness
I have a whole tirade on this, but I completely agree. It seemed while going through college that the whole prescriptivism and general attitudes in tech are built in such a way so as to discourage certain mindsets which the industry DESPERATELY needs, and my hypothesis is that not having representation of those mindsets across the board has contributed to a much of the degradation of UX over time (along with collective laziness of course; low level languages being more work to use, much as I enjoy high level conveniences myself).
An unfortunately large subset of too-comfortable tech workers have decreed the right way is to: never reinvent the wheel, always import, and avoid 'the hard stuff'.
The sad bit? They're well compensated for this learned inability, so arguably they made the truly smart choice here.
To the blessed few who reject this apathy and continue building new innovations? I salute you o7
An unfortunately large subset of tech workers have decreed the right way is to always reinvent the wheel, never import, and avoid 'reading documentation'.
The worst bit? They're very well compensated for it, so arguably they made the true smart choice here.
To the blessed few who reject NIH syndrome and use existing solutions? I salute you!
> An unfortunately large subset of too-comfortable tech workers have decreed the right way is to: never reinvent the wheel, always import, and avoid 'the hard stuff'.
But these are obvious lessons, don't you think?
If your goal is to launch a product or deliver a feature, why on earth are you going to waste time, say, writing a message broker from scratch or an improved Redis clone or a fork of nginx that supports some feature? Is that where your value-added lies or what will get you to launch faster? No. That's stuff you can easily live without.
>> As you do, I find the discourse around tech to be a pit of dismissiveness, avoidance, denial, resignation, and learned-helplessness.
Do you think this is why people are abandoning the GPL license in favor of MIT/BSD? Something about the fight the GPL aims to win being a hopeless fantasy? In the face of the sentiment you and OP express, I'd think GPL usage would be widespread.
I think a lot of distaste towards GPL comes from devs with corporate day jobs who feel frustrated that anything GPL licensed is functionally off-limits at work because there’s no way legal would approve of using it, and certainly would not approve of open sourcing whatever project is built with the GPL thing. I can see where such an individual might think to themselves, “I don’t want to put other devs in my position in the same pickle, so I’m licensing my thing as MIT/BSD”.
Absolutely. I'm personally a big fan of the GPL but I've felt that way before as well. When there's a great library that I want to use but it's GPL and the program I'm writing is IP, the request/proposal is dead on arrival. From that dev's perspective there's not much difference between an extant but GPLed library and a non-existent library.
That said, I do wish people would be a little more nuanced about it. IMHO (generally speaking) make libraries permissive, make applications GPL
Right, corporate lawyers are ideological activists trying to kill GPL. But the campaign to denigrate the ideological activists on the other side is much more successful.
> Right, corporate lawyers are ideological activists trying to kill GPL.
This is a pretty cynical "assume the worst" outlook, and it badly violates Occam's Razor. I think a much more likely reason that corporate lawyers disapprove of the GPL is that one of their main jobs (in some cases their entire job) is to protect the company's IP, and the GPL is a huge threat to IP. Any lawyer who didn't advise avoiding the GPL would be negligent. I personally love the GPL and encourage its use whenever possible, but I avoid it in decisions for my employers and customers because of the risks. I think generally speaking the risks are not nearly as serious as most people I think, but they do exist (otherwise the copyleft philosophy of the GPL would be pointless!)
I've seen too many cases, recent example comes to mind is apple switching from bash to zsh, that are done not for technical or even business reason but ideological.
As a developer my problem with the GPL is that it's less free than other licenses. It's an interesting legal hack, but it can only succeed in its goals by boiling the ocean. I just want to write things, and sometimes making money involves not publishing all of your source code. Having to choose between options and idealism limits the popularity of GPL projects.
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.
Of course it is... That’s what Google does, that’s what all companies who are large enough to know how to work around the GPL do. Every company who uses it on their own servers without telling you, or even compiles and distributes it hoping that no one notices, does. And when they do, they sometimes contribute resources back to the project, which helps it to thrive.
The GPL is very ideological, and there’s nothing wrong with that but you can see the cost of that right here: where someone pointing out there is a hidden cost is shamed for doing so. Given the chance of contributing code or community to two similar projects, I prefer the one that’s more about building than it is about contracts.
I'm simply explaining the point of GPL. Being able to work around the point doesn't mean it's not the point.
Do you really think it's fine and good for Google to take work explicitly intended by its authors to preserve free computing and work around the licensing to make money without preserving the intent and purpose of its license?
Shaming would be much stronger. I even pointed out that participating in it is totally elective and I personally would not in many cases.
Framing it in terms of your own cost/benefit is missing the point, though, and there is a meaningful and valuable purpose to it outside of maximizing your personal benefit in the moment of choosing a particular library.
The GPL is not required for such a commons to flourish. Most Rust projects are published under a permissive license, and that scene is flourishing just fine. I think that open source software as a whole, not the GPL specifically, is what has enabled the flourishing you mention. It seems to me that in the counterfactual world where Linus chose to use the BSD license for his kernel, Linux would thrive just as much as it does today.
The reason we have custom roms on android phones, is because of Linux's copyleft license: Phone vendors are required to publish their kernel modifications shipped with their devices.
This already reduces e-waste by lowering the purchases of new phones, when old ones are perfectly functional.
Thus, copyleft helped the environment
To me this is also an example of how the GPL fails. The requirement for phone vendors to publish their Linux source trees does in part enable custom ROMs, but vendors still have found ways around the license in the form of proprietary kernel modules. This gives these phones a shelf life: after the latest OS version requires a kernel newer than the one the proprietary modules are shipped with, and efforts to write shims (which are always error-prone and hacky) start to fail, the phone can't even get updated versions of the custom ROM.
I don’t like hypothetical counterfactuals but of course it is your choice to use them. It is hard to meaningfully compare recent programs, rust or otherwise, with established behemoths like Linux, gcc, Emacs, etc, that did the heavy lifting and allowed the playing field to remain even over multiple decades. If gcc did not exist it is not clear at all how a hypothetical computerized world would develop.
The point of copyleft is to protect the continued existence and welfare of such a commons. I'm not even necessarily saying it is the only way to achieve a healthy free commons, I'm simply explaining what GPL is for.
That said, do you think it is in fact protecting the user from exploitation, or promoting the health of a free commons, to use "free" software in nonfree products which do not provide their source code to the user nor guarantee the user's ability to study, extend, and modify the software that they are using?
I think the argument for Free Software is at the very least strong and good. There can be other approaches to solving the problems FSF wants to solve, too, but it is a totally valid and non-debatably historically useful position at the very least.
The fundamental problem I have with the GPL, and I think is echoed elsewhere here, is that the GPL is not about my code. It is trying to force my will on other people’s code. It is inherently less free because it is trying to exert dominance over things I do not own and have never been involved in. In theory, a 10 liner GPL Python script could infect an org with 20 millions lines of closed source code and try to dictate the licensing of those 20 million lines.
Unfortunately you've fallen victim to years of anti-GPL propaganda and FUD. A 10-liner GPL Python script is not going to "infect" an org with 20 million lines of closed source code. Suggesting that it's possible, even "in theory", is absurd.
Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself.
And you also seem to think that if you screw up, and do depend on a GPL library (for example) in a proprietary code base, then you're required to give away the source for your 20 million proprietary lines of code. But that's not the case. There are many different remedies possible. One (common) remedy might be to cease distribution of the infringing code, remove the GPL component, replace it with something else, and re-release.
I think there are very few copyright owners who release their code under the GPL who would immediately push for the remedy to be your company releasing all of their proprietary code under the GPL. At least certainly not at first contact, if the company is capable of acknowledging their mistake and working in good faith to correct it. And even if a copyright owner did decide to push for this, it is ultimately up to a court to decide, and it seems vanishingly unlikely that a court would order that remedy, especially if the company was offering less-extreme, good-faith options.
> It is trying to force my will on other people’s code
I just wanted to call this out specifically, because, again: absurd. Please look at it from the default state: you do not get to use someone else's code at all. That's what copyright law says, in the absence of another agreement. Even if you have the source code to my library (or whatever), you cannot use it in your product unless I have given you a license to do so.
If you are considering using someone else's code in your project, one of the first things you should do is look at the license. If you see GPL, and don't want to abide by the terms of that license, you move on and find something else. That code is not trying to "force its will" on you. You are free to use it and follow its licensing terms, or move on. You are no poorer because that code is there, as you are not entitled to use it without a license anyway.
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.
"Yes, you need to be careful when you integrate GPL and LGPL code into your proprietary code base, and in some cases you just cannot do it. But so what? You are not entitled to use of that code. If you can't use it because of its license, then that's life: move on and find something else that you can use, or write it yourself."
Yeah, apparently people moved on and the GPL is loosing significance.
Is it, though? I really don't think it has. There's still plenty of GPL-licensed software out there; most of the software I run on my laptop is still GPL, for example (the main notable exception being Firefox).
I think perhaps there's just a lot more open source out there these days than there was 10 years ago. A good amount of it was started by or sponsored by corporations, and sadly those types of entities are less likely to use the GPL.
Ok, I also have no hard data at hand, but in my impression the vast majority of projects even started by individuals today do not use the GPL, but rather MIT or alike. Me too, because I do not like the concept of copyleft. I like the intention behind it, a world with open source as standard - but I just think the way towards this, is by convincing people step by step and proofing that they can also make money with open source and not trying to force them to open source.
IANAL but I don't think your example is accurate. Unless you expanded that 20 line python script into your 20 million line application, the GPL is not going to cross over and infect your other code. It would mean that if you are distributing that python script to users then you have to include the source for it (not usually a problem with python, but it is for other languages).
“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.
Speaking as a GPL/"Free" software partisan, we failed. Although I don't like it, I think it's pretty clear. Most people have no idea what the GPL is, even most people who have heard of it don't seem to understand what it was trying to accomplish.
The farmers fighting for the "right to repair" their own tractors are the front of the battle now.
> I just want to write things, and sometimes making money involves not publishing all of your source code.
I've made lots of money and I publish every piece of code I've ever written to do it.
What you are describing must have been written by someone who does not believe in software freedoms.
Software freedom is an ideology, not a license. If you license part of your software as free software but not other parts of your software, you do not believe in software freedoms for the users of that software.
It's sort of like a factory that only uses slave labor for one step of production. Does that factory operator believe in human rights if their line is 90% respectful of the dignity of mankind?
What you are describing must have been written by someone who does not believe in software freedoms.
That seems to be a common sentiment, that preferring non-GPL projects is about exploitation, and I don’t think it makes any sense. The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer? I understand the goal of wanting users to have rights that they would not otherwise have, but binding every developer in the hope of eventually binding multinational organizations seems like an awfully high price to pay.
I've made lots of money and I publish every piece of code I've ever written to do it.
If only this were the common case. I once asked Stallman if he had any ideas on how we might make that more common, and all he said was it wasn’t his problem. I agree that it’s not his problem, but the prevailing solution seems to be to avoid the GPL. I think that many people would love to hear your thoughts on it.
> The GPL is a contact that takes away some rights of the people using it, and that makes everyone freer?
It is not that simple. The GPL "takes away" some rights of the distributor of the software (their ability to restrict redistribution for example), but grants rights to the end user (the ability to modify and redistribute) of the software.
It's all perspective. As the developer the GPL may feel limiting, but as a user it is liberating.
I don't think you've really clarified anything. It is a trade: ensuring greater freedoms for the end user by adding restrictions -- by definition "not freedom" -- to developers/distributors.
I'm not saying that's a bad trade off to make, but it is absolutely a fact that the GPL takes away some rights. Or, since it is a copyright license, where the default in copyright is you get no rights, you might instead say it does not give all possible rights. I think it's important to recognize that sometimes "the greater good" comes at a price.
> it is absolutely a fact that the GPL takes away some rights.
Expressing it like you did is misleading. One man's freedom is another man's restriction. It's two sides of the same coin.
It is absolutely a fact that laws against murder take away some rights. Suddenly you are not allowed to kill other people. You do not have that "freedom" anymore. Flipside is that others now have the freedom to walk around without fearing that they can lawfully be killed by others. You pay for granting one "new" freedom by removing another, opposing freedom.
The GPL grants new rights for a party by restricting rights of another party. Just like all licenses do.
> I've made lots of money and I publish every piece of code I've ever written to do it.
I'm curious to know what your personal method is. Consulting, paid support, proprietary dual-licensing maybe? There are indeed many ways to make money and still publish code as FOSS; the tricky thing, as always, is to work out which way is the right one for you.
Yeah, it strikes me a bit like, this will be hyperbole, complaining about forbidding slavery reduces freedom because you are not allowed to have slaves.
The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code. The original project is still there and still just as usable. Everyone still has the same freedoms as they did previously.
> The difference is that nobody is harmed in the scenario where someone makes a closed source product with permissively licensed code.
This is not true. What is harmed (and has effectively been destroyed) is the market to make money from selling libraries.
Many might be too young to remember, but it used to be that one could make a nice living selling libraries to companies.
In 1990 (just to pick a year) when BigCo Inc was developing a software project and needed library foo, they generally had two choices: build it internally or purchase one for money from a third party. This meant there was a nice market for small software houses to sell all kinds of libraries to BigCo.
Imagine for a moment a world where all open source is GPL. BigCo wouldn't touch the GPL libraries so they still either build or buy and we (developers) can continue to make money from our work.
Unfortunately it is no longer possible to make money from libraries because anything BigCo wants can be had for free in a BSD/MIT license so they get to take all the volunteer work, profit from it and give nothing back.
Yes, if you jeep your code closes then society is losing because everyone relies on you for everything. It's not about being usable, it's about being in control.
If that "someone" is backed by a large corporation whose goal is to extinguish the utility of the existing project, they might hire away some of the contributors and add features at a pace that the original project just can't keep up with.
While that's certainly capitalism at its finest, I don't think that's a good outcome for the user base as a whole, or of the community.
> I just want to write things, and sometimes making money involves not publishing all of your source code.
This is why I do both. I copyleft some projects. Others, I don't. It all depends on the balance of needs.
Although, for me, the issue isn't releasing source code at all. That's orthogonal to the issue of whether or not to use an open source license. I have yet to release software, open source or otherwise, where I haven't made the source available. For my non-OSS projects, that source is only available to people who have purchased the software, though.
I have the same problem with GPL, specifically in that as far as I can tell it doesn't give one the freedom of making a living out of making software as a product. I'd love to be proven wrong and find out that there are practical, viable ways to develop new GPL software and be paid strictly for doing this. However, what I tend to hear is that people don’t get paid for this, but rather for customizing that software (once it’s made) for individual clients, or setting up that software on a server and charging for access to that service. The few that do get paid directly for writing new GPL software seem to be funded by a patron who doesn't care about the software's direct commercial viability, either out of principle (e.g. the FSF and GNU) or because the software is a loss leader that bolsters the patron's primary business (e.g. Google and the Android codebase.)
To put it another way, as a software developer I would personally like to make a living analogously to how a successful book’s author makes a living. Such an author can make a living primarily or even exclusively from writing each book, not from giving away the book for free and making custom versions of that book for individual readers, or by offering and charging for live, public readings of the book, or by asking for voluntary donations from those that download the book, or by selling merchandise related to the book.
I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
It's exactly the opposite!
If you want to make a living making software, you make it GPL. Any corporation that wants it will need to pay you for a commercially licensed version they can use (it's your code, you can license it in as many ways as you want). The hobbyists can use the free GPL version and the companies can pay you for your work. Win-win.
If you make your software BSD/MIT licenses you can't make any money, every corporation that wants it just takes it for free so you can't make a living out of it. You could try selling support but if your library is great and easy to use, not much money in that.
Unfortunately for you (and me) even if you make a really awesome library and license it as described above, you still can't make a living because there are other similar libraries with MIT/BSD license and the corporations will use those (even if they are inferior to yours) to avoid paying you. Thus, the market for selling software like this has been eliminated and we're stuck selling subscription services.
Dual licensing becomes very difficult once there is more than one person writing code, and that includes submitting bug fixes. Once this happens you need to track down every contributor and have them sign licensing terms. It's long, difficult, expensive, and you might prefer to rewrite the whole thing again. https://en.wikipedia.org/wiki/Contributor_License_Agreement
You might be surprised. Unless you are dealing with clients that have been burned by software licensing, or have attorneys knowledgeable in software patent/licensing law, you could charge clients for building software and release it as GPL. You then also provide the setup of that software, which you can include in the total cost. There is lots of GPL software out there, but not many people that understand how to setup or support that software. It is very possible to make a good living off the setup and support of GPL and other open source software.
If you don't feel right for open sourcing software you wrote for someone else, you could always offer your client a discount to let you open source the software. There are quite a few companies that now make their money supporting open source software, even when they aren't writing it themselves. I've done this myself, and I think it's a lucrative business model that still gives everyone involved freedom.
> I personally want to make a living making software products, not services. GPL doesn’t seem to offer me a way to do this.
These two things are pretty unrelated.
For Android apps, a common model to have a paid version in the play store and still publish the source code on github with GPL. Here the GPL actively protects you against somebody coming, doing some minor modifications and then pushing their own paid-for version to the app store while not publishing the source code (which they could easily do with other licenses).
That’s the thing: the GPL isn’t there for you, the developer. The GPL exists to ensure freedoms for the user and it does this by requiring responsibilities of the developer.
This creates an interesting and important second-order effect that allows it to accomplish its goals without needing to boil the ocean by ensuring every user has the same ability to develop the same software, blurring and reducing the line between user and developer, creator and consumer. Practical considerations often prevent the expression of this effect but the opportunity doesn’t even exist in most other situations, particularly when you get to web services.
I didn’t reply to the important issue of money, the fundamental developer problem, because I’ve never been in a situation to sell my own code: my own projects have zero to do with my rent work.
I think opinions around software licenses are limited to us hackers,
and the actively code-publishing subset of us, moreover.
From my POV the GPL certainly seems alive and well, and the ideology
of the Free Software movement remains sound and strong.
What I'm alluding to is the wider public. In
<podcast-i-dare-not-mention> we literally walked around town
interviewing young and old. Soon as I can, I'll share the results in a
HN submission.
Copyleft was a good idea, but its real world utility is a lot less than anyone would like.
I once inherited a GPL project, but I couldn't muster any community interest in working with it. Plugin authors would have been compelled to use GPL and no one seemed interested. We had to burn the project to the ground and start over with a new MIT licensed project. Now there's a flourishing community of plugin authors working with it.
GPL being a viral license is the core problem, I think. I get the intent behind that clause, but developers tend to not enjoy being mandated to like that.
I don't think GPL is bad, but it's not exactly pleasant either.
Why would plugins have to also be GPL? The whole point of plugins is (typically) to allow distribution separately. IANAL but it would seem to me that unless you distribute your "plugin" as a statically linked binary that includes the main app, then the GPL would be irrelevant. If I'm wrong I'd love to be informed
According to the GPL FAQ, there aren't different license requirements for static linking vs dynamic linking. (The reason you can link glibc, stdc++, etc., which are licensed under the GPL, is because they carve out a "GCC runtime library exception" for such libraries, allowing one to choose a different license anyway).
The FAQ also says that if "establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth," then the that is essentially the same thing as dynamic linking, and so the GPL applies to your program as well.
> Does the GPL have different requirements for statically vs dynamically linked modules with a covered work? (#GPLStaticVsDynamic)
> No. Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
----
> When is a program and its plug-ins considered a single combined program? (#GPLPlugins)
>It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.
> If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.
> Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.
----
> Where can I learn more about the GCC Runtime Library Exception? (#LibGCCException)
> The GCC Runtime Library Exception covers libgcc, libstdc++, libfortran, libgomp, libdecnumber, and other libraries distributed with GCC. The exception is meant to allow people to distribute programs compiled with GCC under terms of their choice, even when parts of these libraries are included in the executable as part of the compilation process. To learn more, please read our FAQ about the GCC Runtime Library Exception (https://www.gnu.org/licenses/gcc-exception-faq.html).
The FAQ is just the FSF's wishful thinking, and not a legal document.
If your program can fork and exec another GPL-ed program, and exchange complex data structures with it, that is neither here nor there.
All that matters is whether or not you are redistributing the program, and if so, whether that is in accordance with its license, which restricts the manners of redistribution.
If you are not shipping that program, but your own GPL-incompatible program needs it (your program cannot be used unless the user has an installation of the GPLed program) then you're likely in infringing waters, because it could be seen as redistribution anyway. Though it you aren't physically redistributing the GPLed program on the same medium, redistribution of that GPLed program, carried out by someone somehow, has to take place for your program to work. It's as if you are redistributing it "by proxy". If the user doesn't have that program, you have to instruct the user on how to obtain it, thereby turning that user into an agent of redistribution, acting on your behalf.
But if you ship another program which is drop-in compatible with that the GPLed one, which allows your main program to run, then in all likelihood the GPL doesn't have a leg to stand on against you.
If you don't redistribute a GPLed program, in any manner, whether directly or "by proxy", you cannot be infringing on its license.
A GPLed program being combined with yours by the user, in their installation, has nothing to do with you, if that combining isn't a condition of your program being able to usefully execute. That is not redistribution but use, which the GPL does not restrict.
I don't use the GPL (and never have) because, like another poster said, it is less free. When I put work out there for someone to do what they wish with it, I don't think I should then say "oh unless you do xyz, I don't approve of that". That strikes me as hypocritical, and so I don't do it. I don't harp on anyone who uses the GPL, they gotta do what they think is right. But for me, the GPL was never a good choice for software licensing.
And before anyone says "someone can make a closed fork of your code and then charge for it", I am aware of this. I also don't see the problem. My goals when sharing code are to share my work and help others by doing so. If some company uses my work to profit, I still have accomplished my goals. Moreover, others can still download my original code if they wish and reap the same benefits as the for-profit company did. This is a great outcome. Everyone benefits, nobody is harmed. While this scenario is often used as an argument that permissive licenses are bad, I think it is a very poor argument indeed.
I choose MIT as my default license, because I don't like it when the license is longer and/or harder to understand than the program itself. Simplicity is underrated in software development; there's so much you can do with less.
To me the biggest problem with GPL is compatibility. The majority of coding effort is commercial and will be for the foreseeable future. If the frameworks are GPL then the commercial interfaces will likely be incompatible with free software. Thankfully they are mostly BSD so commercial software works on free software systems and vice versa.
For user-facing software, GPL is fine, but fewer people actually want to write that.
It’s unfortunate that the message discussing enemies was flagged. Maybe it needed to be said in a better way?
The US government is undeniably often working against the best interests of its citizens.
Corporations, corporate news, and advertisers are also working against our best interests. Im not sure any mindful and reasonable person would refute this.
However I will be charitable in saying that I don’t think they’re making us hopelessly anxious to subjugate us. They’re doing it because it’s profitable
I didn't flag/mod the comment, but I think it errs towards conspiracy theories.
I'm not American, and I understand the American government does evil things sometimes, but it also does a lot of good things for its citizens. It builds roads, keeps the skies clear, funds education, health systems, sues tech giants when they go too far, tries to manage the speculation/money markets, etc. To say "undeniably often working against the best interests of its citizens" is very hyperbolic. Most would probably argue that the government does not do enough, even conservatives (ex: controlling abortion or bathrooms, not that I agree).
The news are also not there to demoralize you, not as a primary objective. Anxiety and negative news do sell ads. I find public radio such as NPR do a wonderful job of balancing point of views, giving the facts, and provide some hope by explaining the underlying issues and possible solutions. Where I live, public radio is the only non-ragebait media that constantly puts pressures on whatever government is in power, and explains various points of views (while admittedly being more centrist editorially, angering both hard-left and hard-right).
I totally agree however with doing whatever it is you are good at, and that's a way to work towards improving the world.
> it also does a lot of good things for its citizens.
> It builds roads
At insane costs and timelines while also lining the pockets of the politically connected
> keeps the skies clear
60% of power generation in the US is fossil fuels, which is horrible compared to any european country
> funds education
Much less so than any country in Europe, and the cost of education is sky-high
> health systems
Which is terrible compared to any European country, while also being the most expensive and some of the least accessible in the world for advanced countries
> sues tech giants when they go too far
Barely. And the revolving door of regulatory capture is a major problem
> tries to manage the speculation/money markets
Again, less so than many countries. Also the US is $33 trillion in debt
The bottom line is: no public healthcare for most, extremely expensive medical costs, extremely expensive education costs, extremely expensive infrastructure costs, horrible use of fossil fuels, and horrific workers' rights.
As I said, most would probably say the government does not do enough. My point was just that the comment could be seen as erring towards conspiracy theories, because it's quite common to hear "the government is against you". Maybe it was not op's intent.
Think about what kind of life our grand- or grand-grandparents had. They went from horse-drawn carriages and muddy streets, to modern cars on roads in their lifetime. Even us older neckbeards went from 8-bit computers to modern PCs on modern networks.
But I feel like this progress has reached the end of the S-curve and there is a feeling of bitterness and disappointment slowly seeping into our collective conscious, whether we realize it or not. The other things about propaganda and modern news I think are more side effects.
I understand the feeling. It could definitely be said for browsers (from Netscape to IE, to Firefox and now what might feel like a giant kludge). It could be said for cars (more expensive to own, complicated to fix, only to be stuck in traffic).
I don't think it's a conspiracy though. Certain things do reach saturation, or end of the S-curve, and sometimes society moves on to something else. I now use my old bike mostly instead of my expensive car, sometimes freezing my ass in winter, and I'm getting old and have kids. I could be bitter, but I'm actually quite happy that I can safely cycle in my city now.
(I know, I'm offtopic, though I do wish the downvote brigade would provide more useful feedback)
Perhaps part of the situation is that with all the magnificent technology available, it is hard not for governments to do good for the citizens, even accidentally. After all, even if you were the most corrupt and self-centered individual to hold the title of 'President', you'd still probably order a road be built anyway, and that road will still improve citizens' lives at least on an economical level.
It is terrifying to me how strong the public desire for retribution is. Despite over five years of conflict, the history books show that there will still many who wanted more bloodshed to 'get even'. As what might be considered an even greater tragedy, there were loyal members of the various French resistance groups who were summarily executed for their 'involvement' in Nazi or Vichy institutions, when in fact they were spying for the French against those very institutions.
For me it's a bit like the whole "woke-ism" thing.
The vast majority of people enjoy each other and don't subscribe to the vitriol that comes from both sides. In that manner, the internet is a bit of an echo chamber where if you get all of your impressions of the world from it, you'd think people were constantly at each others throats.
The news is the same way, they report negativity, so it has a real tendency to make you start thinking of the world in such a negative way.
That's not to say there aren't real threats out there, but the vast majority of people are just trying to get through their day.
This happens to police officers too, most of their interactions with people are negative due to the nature of their work, over time that starts being their default position towards people. I'll never forget the time I walked into a bakery and decided to get a cupcake for the police officer sitting in his car outside the shop (he was blocking the alley, unsure why). The change in his face from defensiveness to pure joy when I walked up to this vehicle was easily worth the money spent.
from the "assume ignorance before maliciousness" standpoint, a lot of the impression you speak of is just a fact of us humans reporting on the (perceived) more critical news, (perhaps also maybe the more profitable news) - but is more (in my opinion) a natural result of the news having limited time/bandwidth to report on a near-infinite content production source (the world)
A side effect (and the end result) is that we all end up having poor [Bayesian priors](https://en.m.wikipedia.org/wiki/Prior_probability) in our heads - this disproportionate reporting practice at large impacts our understanding of the world, as you describe. And I bet there's a feedback loop: the more skewed our model of the world, the more we will produce/consume skewed content.
I think this is not something you can ever truly do completely away with because of the many factors that it arises from, not limited to our psychological biases that tend us towards liking or interacting with certain form of content more than others... but certainly there should be more controls.
There's a positive aspect to employing police officers to be present even when there is no tangible risk of crime or danger.
Where I live, it's extremely unusual to ever see a 'bobby on the beat', so when I recently visited a city with thirty or more police officers with riot vans congregated at the docks, ironically I felt slightly uncomfortable - what mortal danger could be present around the corner to justify so much police attention? It turned out to just be a big football match, so there was not such a huge danger after all and the police would no doubt be able to diffuse any disturbance immediately.
If there had been no police around, it would never have occurred to me that there was a risk, even though I would have been tangibly less safe without their presence.
You shouldn't have to write this response on 'hacker' news, but good for you. Work on what you want. Some people do wood working, fix cars, or play video games. Others like coding. I have tons of partial projects I've started for various reasons, and enjoyed them all. Good luck and have fun. And, maybe your project does turn into something bigger.
Right? Whether or not it's practical, it's the way we learn.
I used to see that sort of haughty "well why do you want to do X" response all the time on stackoverflow/its ilk (I've basically deprioritized results from that entire network of sites now), which isn't even a good tack as there are plenty of others who might want to do X for other, valid reasons; "why" shouldn't even be a question as far as learning goes.
Agreed. This community has a tacit assumption that everything must make money or some other kind of return, otherwise it's useless, and that's not true. I love hanging out here, but I've posted projects for fun where people couldn't believe I didn't want to make money on them.
Money is great, but it's not everything. Good luck, OP!
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...)
Ignore the noise. So much crab mentality on HN sometimes.
If even half the time spent telling people that their project is pointless waste of time was spent doing something constructive instead, the world would have a lot more cool and interesting projects in it.
Better to fail at something bold and ambitious than not even try at all.
You make, you learn, perhaps one day you will make something better, perhaps not — but at least you've been building something. Ignore the armchair critics, criticizing is so much easier than building.
I'm not upset at the OP, but I wouldn't say this is a golden rule. Some people make some really atrocious shit. People should, in general, be at least a little critical of what they're making.
It's fine to make atrocious shit though. Making something good takes practice. Often you need to see what sticks. Sometimes the only outcome is a lesson.
The master has failed more times than a beginner has even tried.
I don't think that GP is talking about the quality of production, but the quality of the concept. There are things that people with any sense of shame would not produce.
I've literally only had success with software I built to satisfy my own curiosities and needs. Not all of it took off, granted, but I think that's fine. Not everything needs to succeed.
it might be easier, but that doesn't mean all criticism should be ignored.
In the spirit of cliched reductive "feel good" statements of this whole comment section,
ignoring criticism is also easier than building something that ends up to be extremely subpar.
I wish more people gave a shot at browser implementations. You see a lot of comments that this in a herculean task, and maybe it is, but it's not _that_ bad.
You don't have to implement all of the functionality of modern web browsers. You don't need battery APIs, game controller APIs, USB, etc. Focus on what is important - HTML, CSS, JS.
Worst case scenario - you will learn something new.
I think it probably is that bad if you the approach it as this person is currently doing: not using any libraries at all. If you use existing libraries for HTML parsing, CSS parsing, layout algorithms, graphics rendering, etc, then I think I think it's doable.
Writing parsers honestly isn't that hard, especially when you have more or less step-by-step instructions for some of the formats, and test suites that independent 3rd parties have written that you can use to help verify your implementation.
Regardless, so what if it's "bad"? OP is using this as a learning experience too. If he wants to write parsers, and thinks that experience will be good for him, then he should write parsers.
I do agree that writing your own parsers isn't strictly necessary if you want to write an independent web renderer/browser. If I were tackling this project, I'd be more interested in and curious about how to write a renderer, and if there's a HTML or CSS parsing crate already written and available on crates.io, I'd probably use it.
Then again, writing a parser would also make me intimately familiar with HTML and CSS in ways that I'm probably not currently, and that might help inform how I build the renderer.
People inevitably will come and say this is futile because writing a browser that supports the "modern web" is just too big an undertaking. I would like to encourage you to ignore them and write a browser that works with a subset you decide to be useful and never feel bad if some pages don't work.
I know it is kind of hypocritical for me to say that, because I come from a generation that fought for standardization and against all the "This page works best with IE4", but I've come to the realization that while we certainly have progressed we've not really accomplished what we'd set out to.
Nowadays, I certainly would not refuse to use a browser just because it only supports a subset of pages and sites. Heck, a browser without Facebook and Youtube might even be a good thing.
To me the logical conclusion of what you write is not to write yet-another-web-browser, because browsers are rotten to the core by terrible protocol designs, terrible specifications, politics, greed etc. Browsers did not spontaneously start to degrade, it's what the key actors at different times did that made it happen.
The only hope, IMO, is to build something much more sane that cannot be abused. Something like Gopher or Gemini. Simple specs that make it possible for a single person or a small team to implement something decently working without them spending their like on it like Middle Age monks spent their life mapping and cataloging stars.
I would start with a feature-limited markup language that's good enough to display text - maybe images if you really insist - and leave all media and interactive stuff to external programs; if your browser ends up being a virtual machine and a universal media player, it is doomed to degenerate into a WWW browser if it ever gets popular.
But of course if one builds something that cannot be abused or monetized easily, the big content creators won't be interested. It will take a lifetime or two to gather a critical mass of users, and only if the WWW overloads abuse their power so much that the average WWW serf actively starts to look for a better place to be, and only if at this time the alternative has more and bigger advantages than drawbacks.
I remember first seeing Gemini a while ago, and thought, "cool project, but I probably won't ever use it". And I haven't. If I'd want to build a browser, I want there to be a lot of content for me out there already for me to browse.
It's funny, because I think designing a new protocol and markup language, and then building both server and client software for it, and then actually convincing millions of people to use it... well that sounds orders of magnitude harder than writing a web browser, even with all the crazy and terrible protocols and APIs I'd be expected to build.
And sure, I could set my sights lower and try to build something with much more modest ambitions, only hoping for a few thousands of people to use it -- at most! -- but that doesn't sound interesting to me. I'd still have to use the web for all the other things I need and want to use the web for. Maybe this sort of thing does sound interesting to some people. That's great, go for it!
The problem with gopher, Gemini, etc is a lack of people using the service. The point of a browser is to browse. What are you going to browse if there is nobody creating content? And vice versa, most people won’t put large amounts of time and effort into creating content nobody will see.
Gopher appears to have declined some 20% in content between 2021 and 2022.
I believe I’ve taken a peek at Gemini and there wasn’t much to do either.
The same problem exists for zeronet, i2p, and freenet, which is now apparently two or three separate projects?
Mastodon had a big jump in users when musk bought twitter, which tapered off significantly. They had another, smaller, jump with the Reddit fiasco. Which also tapered off.
But I guess that’s just me rehashing what you said about reaching critical mass.
> But I guess that’s just me rehashing what you said about reaching critical mass.
Yes. But one should remember that some services that are popular today started with a very small user base. Programming languages have to start from one user (starting from zero is orders of magnitude harder - if you are not the first regular user, your project will most likely fail).
One way to achieve that is to have a "killer feature" or maybe a unique combination of existing features. For instance, a subject related to browsers is discoverability and search. If you are going to compete with the WWW without funding or support from companies/institutions, there's little hope that someone will provide a search engine. This means that users will have to pay for that service with their time (that's how Wikipedia emerged). One could think, for instance, about a content tagging system that users could share, to solve this problem.
I was going to suggest something similar. Limit scope to something that is pretty (all of the pdf/ps display model?), but doesn’t support arbitrary code execution or surveillance.
Prodigy (a walled garden network like aol or compuserve) in the US tried to build this in the late 80’s / early 90’s (not with the same motivation—-they were trying to build a terminal with vector graphics for the masses).
For this sort of project, and the emotional reasoning you have for building it, I truly believe less is more.
I prefer the lack of inline display; I would rather it not display the pictures inline in the document anyways. However, that is something that the client does anyways, rather than the server. (Also, I think it does allow inline display if the picture and the document linking to it are both local files (or are both inside of a ZIP archive which is a local file), although even then it should have the option for the user to disable them.)
(Furthermore, it seem to me that Gemini is not a very good protocol for serving a video file anyways, because it does not have Range requests and stuff like that.)
This is an inspiring attitude. I used to be stuck in a rut of "there's no point starting to build / learn a thing because there will almost certainly never be a result of substance". After a while I realised that every unfinished thing results in learning, which is applied in the future, etc etc. What truly got me out of the rut was the realisation I was not only not finishing anything, I was not _doing_ anything. And one sure fire way to never finish anything is to never start anything. The corporate world is results-orientated, which is fair enough. Doesn't have to be that way all the time though - it's fun to be playful with technology.
> I used to be stuck in a rut of "there's no point starting to build / learn a thing because there will almost certainly never be a result of substance".
In my view, that's what people in power want to encourage, using crowed influencing dynamics [0].
There is an a loosely orchestrated effort to make people feel less powerful because that makes it easier for people in power (people with money or resources) to increase their self-interest endeavors.
This is why I don't watch the news, and take peoples opinions about the world with a grain of salt. Ideas are like viruses, the spread rapidly. The people with the most resources gets to set the tone about what the population thinks by using modern media to mold the narrative. If you don't understand your individual value, you will be swept into this mind set, whether you are aware of it or not.
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?
In the hierarchy of "from scratch", it goes more like "buy fast car", "build fast car from available parts", "machine own parts from stock", "make own castings from scrap metal", "mine ore and smelt it".
Just because my hot rod isn't made from existing parts does it mean I'm mining ore.
Many awesome hot rod projects involve machining from stock or even casting from scrap. What OP is doing is on this same level. He's not doing atomic layer deposition or anything. Just writing code on top of an existing OS and using existing programming languages.
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.
Funny I was thinking about this recently - I've been trying to push for action from regulators / government here in NL (especially wrt Google) but there was very little appetite with the people I'd need to convince to stand with me to make something happen.
Considered briefly starting a new browser. However I've had experience attempting to design a very simple OS (a long long time ago, I got a mouse/pointer working on the C64 then realised that it wasn't worth it).. and modern OSes and browsers are of a similar level of complexity.
So now I'm focused first on family (due to working insane hours the last few years they've been neglected - pretty sure you worked a little bit on the same projects so know where I'm getting at) and a bit later in the year on something where I have a >50% chance of seeing results - fixing healthcare IT here in Europe. If I can say anything it would be to remember that as a parent - especially one who wants to be responsible and present - we don't have a lot of space available for serious side projects.
(oh and my side project is a C64 emulator, also in Rust, ground up.. only said being a parent thing means I'm only at the research phase, although to the point where I have all of the resources I need to begin productive work sans the 8-16 hrs of quiet time to start coding + get the write-test-deliver loop up and running)
Ignore the naysayers, and keep posting back when you have major updates. Also keep in mind that it doesn't have to be full featured to be incredibly usable and useful. Would love to have a minimalist browser that can run HTML/CSS/JS, keep cookies/localStorage, and that's about it. Maybe an anonymous browsing mode.
Nice! Just go for it, man! History often needs only one person. Who would have known that Guido van Rossum would write the language in which most of modern AI would be written while the servers run on some operating systems created by Linus Torvalds. Both just had a crazy idea and started working on it.
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 think this project is a fantastic idea! I've toyed with the idea of writing a browser for years, but when I consider the amount of human-years that have gone into Firefox, Chrome, etc., I get scared and back off of it.
I wanted to give it a try, but it looks like main isn't building right now, so I'll check back periodically. Hopefully I will even find some time to contribute, as a Rust-based web browser sounds like a project I'd be interested in working on. One thing I'm a little bummed about is the license: I've gone back and forth on this topic a lot in the past couple decades, and more recently I have actually been releasing stuff under more permissive licenses like MIT. But if I were to work on a browser, I'd want to GPL that. For a work of that magnitude, someone forking it and making proprietary changes would be intolerable to me.
Regardless, I think there is absolutely room in the world for more than just ~2.5 dominant browser engines (Gecko, and Blink/WebKit, which I guess aren't the same any more, but have the same provenance, hence the extra 0.5). Sure, contributing to something that already exists would be "more efficient", but since when was efficiency a requirement for doing something that you believe matters?
I think a browser makes a GREAT personal project, because there are high-quality, public specifications for the stuff you need to implement. And these things are maintained in the open, you can even go and find meeting minutes if there are particular decisions you want to investigate further.
And it's not just specifications, there's test suites and reference implementations out there too. Of course it's still a huge task, but there should be no blind alleys to wander up.
No one said that. At the time there was a massive gaping hole in the OS market begging to be filled. OS vendors were gouging everyone, and GNU/Hurd kept experiencing delays.
Version 6 Unix was about 9000 lines of code; the first version of Linux was something similar. Firefox has 27 million lines of code. Linux has about that now, too, which is why one reason you don't see grad-school Linus #2 writing an OS and getting traction.
Did he write a blog post (or newsgroup post) in advance of writing the first version? I'm all for pet project tinkering, but seems strange to publicly make a pronouncement before starting. There's no "news" here, why is it on the front page?
On any tech forum, there's always a lot of "why are you writing your own Hello World program instead of contributing to an existing one?" energy.
As you note, the learning process itself is worth it. I'd encourage you to keep a blog / journal for others to follow.
Most innovation doesn't involve the most qualified expert in the field taking on a project that is a sure bet. In fact, qualified experts are often too cautious to try something crazy or shake up the status quo. Back in 1991, Linus wasn't the right guy to write an operating system either, and most experts probably felt we didn't need another OS to begin with. He probably should've contributed to GNU Hurd or Minix instead.
I think it's amazing you're starting a new project. You stated two points in your blog post on this project: 1. To push back on Chrome almost-monopoly and 2. As a self-learn project.
You'll have to balance the needs between those two. You aren't hitting 1. until you have users picking up the browser. You'll be hitting 2. as soon as you start the project, potentially.
If you contribute to currently existing projects you'll be hitting 1. A lot more but may lack 2. compared to a new project.
Good luck! Btw this is reminding me of Serenity OS which includes a from-scratch browser. You should check it for inspiration :D
I loved your comparison to how hackernews is turning into TV news.
> ... it’s all negative. Companies are pushing unwanted updates, breaking all promises, raising subscriptions, and buying up companies while doing everything in their power to figure out how much more personal data they can take (away) from us. Governments are banning encryption because of child molesters (they also use vans and candy. Let’s also ban them!). People in power with absolutely no idea of how the modern world works and people in power who DO know how it works
Great philosophy. What were the pain points so far - where's the real moat? In the not-too-distant future when we sick some AI coder programs on the problem to just mass-implement features in a banal repetitive way, which are the really complex ones they're gonna get stuck on? What are the ridiculous "this feature only exists to keep google in power" features you've found?
What made you want to make a browser instead of something much simpler like - an OS?
This site is called hacker news after all, so this is the attitude I love and welcome on here. Ignore the high-karma-naysayers, they don’t really contribute to anything.
> Yes, there are a lot of browsers out there where I can contribute to which would be more efficient. But that would result in just a few browsers instead of a lot of browsers. I'm all for the last one, as this would give people options.
IMO it's better to have few rock-solid open source
systems than multitude of half-baked projects reinventing the wheel. But good luck!
I think there is a useful LLM based solution (chrome extension or something) here where you ask it (with some trial and error), to only list constructive responses, hhh. I am only half kidding, most of internet feedback is useless, even here, but the ones that matter do matter someone somewhat exponentially, so you'd want them. You can even allow it a margin of error.
> i want to know more about the underlying technical challenges.
I applaud this fundamental curiosity. We don't want a world where technologies that people use (must use) every day are opaque, proprietary solutions that spy on us.
Yet that is exactly what we have in the most popular Web browser.
I recommend RSS or just to scrape Web content (Python and Perl do this well) and read the bits that are interesting to you.
If you’re doing it as a learning experience, then more power to you. But be honest with yourself about your motivations. As someone who usually takes on too much, and makes similar rationalizations, the road can be fun but it’s not going to a destination where you finish something. Don’t repeat my mistakes, examine the whys carefully.
> I think this project will not result in an actual browser.
Maybe this project shouldn't result in a graphical browser. I still think there's value in text-based browsing, in the line of Lynx. I would think there's a higher probability of creating something really useful if you were to go that route.
I just want to thank you for sharing your politics views. These are the same ideas and views, as an American, that I’m struggling with. It helps so much to know other people in other parts of the world are going through the same thing and have the same thoughts and ideas.
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 like your list of 100 opinions. Of course, not absolutely all of them ;-) but the effort you took to compile the list. Lots of things to think about.
You could do something back then, and it’s the same only thing you can do now: work with others. Drop the egocentrism, because collective action is the only way out, and it is possible.
I would say though that you have to pick your battles. On your path you might vanquish shitty web sites but just not being able to read them, but I think a real victory against enshittification involves breaking away from the web user interface which is some of why there has been so much bot blocking lately. It's not that people are going train an LLM on a shitty site but that you're going to get the LLM to read the shitty site for you, that is the real death of shitty sites. (e.g. agent posts your question to Reddit on your behalf, picks out and summarizes the best answer; instead of looking at craigslist every day for farm animals you get notified of the good ones; instead of seeing an ad for a Laurie Anderson concert on the bus when the tickets are all sold out the system tells you the moment the tickets go on sale...) But who knows? An HTML 5 parser is a good place to start towards that end.
I had similar motivations for developing my smart RSS reader and intelligent agent YOShInOn which has gotten me to work on filtering and "deshittification" right away as opposed to face a 1500 man x year project before getting to the stuff that matters to me.
For me the path not taken was developing a "reader" that works like archive.today, there was a summmer in the pandemic when my son and I were driving back and forth to Buffalo a lot and talking about missile defense systems and I did a "spike" project to develop something that would archive, process and deshittify web pages and I came to the conclusion that it was a long road to make something that was better instead of worse (every archiver I've seen is way slower than just browsing the page and sorry "slow X" advocates, slow = bad)
This winter I turned to the problem of end-to-end active learning for selecting articles and had great success as it. Sometime it sends me to archive.today but the goddamn CAPTCHAs never end when I use it from home so the question of the archiver/reader has come back but now that the thing has a workflow engine and could archive articles before I look at them the archiver/reader looks appealing if I can find something open source that is good enough.
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.*
This is great. Would you be interested to add support for a custom blockchain-based DNS instead of the current centralized hierarchical mess? I've been thinking about this a lot and it's clear that a multi-blockchain-based solution would be perfect for this (and far simpler than the current system). Each blockchain could have its own top level domain. People would buy domains using the blockchain's own tokens on the blockchain itself. The browser would just discover its own peers and query any node in the blockchain to convert domain names into IP addresses. The browser could check the results against known public keys on that chain to verify that the record is legitimate.
Blockchains are great for this use case as they are infinitely scalable in terms of reads (since you can always add more nodes which are exact cryptographically-verifiable replicas). While blockchains are constrained in terms of writes, this problem is dealt with via a transaction fee which increases with demand so it is naturally DoS-resistant and doesn't require special skills or trusted parties to operate.
Anyway, the current centralized DNS system of hierarchical resolvers is also constrained in terms of writes but it feels ad-hoc with many centralized entities which are given a substantial amount of trust.
Yet Bitcoin's market cap is $500 Billion and has a trading volume is over $10 billion per day and has been outperforming the markets for over a decade.
If the financial system is fine, then how is it possible that a 'scam' is worth $500 billion? What kind of financial system allows such scam to exist for over a decade and keeps attracting investors year after year?
If the financial system is not fine, then how could you say a blockchain like Bitcoin is a solution looking for a problem?
That position doesn't make sense from any angle.
And anyway, I've explained clearly what is the advantage of blockchain:
- It's a system which supports unlimited reads at scale.
- Spam-resistant when it comes to writes.
- Its data can be verified independently so there is no need to trust service operators.
Those are the most important characteristics of a DNS. Sadly the current system is missing the third point and that's why nobody truly owns their domain names. Everyone is merely renting from a TLD provider and hope that the laws of whatever country it's in are going to respect your claims.
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!
> Blockchains are great for this use case as they are infinitely scalable in terms of reads (since you can always add more nodes which are essentially replicas).
Oh, right. Maybe they should modify the current DNS setup to allow for more than 1 node.
Current system does have many nodes in a hierarchy but they are operated by trusted entities and there is not much fluidity. Also nobody owns their domain names; just renting from the centralized providers and you just have to trust them with everything.
With a blockchain, you would provably own your domain name and nobody would be able to change your 'zone file' aside from you since they wouldn't know your private key. I mean it would be physically impossible even if they wanted to do it illegally (or if the TLD operated under a crooked government).
BTH, this has already been done by Unlimited Domains (.eth TLD) but for some reason it still hasn't been integrated into major browsers (aside from Brave which has it disabled by default though it definitely works).
The fundamental point blockchain fans miss is that most people don’t mind having centralized trusted entities. The fact that humans can intervene to change the owner of a domain name is a feature, not a bug, at least in non-authoritarian countries.
IMO, not being able to recover a lost private key is an acceptable tradeoff for fully owning your own domain in perpetuity. If we encounter a de-globalization event and international law starts to break apart, we would see a lot of value in not being beholden to foreign entities operating under foreign laws.
> IMO, not being able to recover a lost private key is an acceptable tradeoff for fully owning your own domain in perpetuity
You can hold that opinion and others like it, but the vast majority of other people don’t, which is why the only applications of blockchains that have ever become mainstream are (1) buying things that are illegal, and (2) speculating on token prices.
> If we encounter a de-globalization event and international law starts to break apart, we would see a lot of value in not being beholden to foreign entities operating under foreign laws.
If this prepper fantasy comes to pass I am going to have bigger things to worry about than a foreign country stealing my domain names.
I find myself failing projects over and over again due to loosing interest in them. This in turn seems to be because of "doing it alone", where there is none to a very limited amount of involvement by other people.
I seem to have a good amount of ideas, and the know-how to get projects up and running, but without the help of others everything those projects seem to be dead on arrival.
Now that I'm trying to focus more on monetizing projects, I seem to missing the people around me to deal with the sales, the marketing, the reachout to other and getting people enthusiastic about my next project. And quite frankly, I have no idea how to find them..
thanks. Fixed the first one. About storage gateway: as far as I could see (haven't tested it) you get a iscsi path which you can connect to from your own device. It uses S3 as the backend store for files from and to this device. Will try and take some more time to look into it (never used this myself)
EBS is actually part of the EC2 service. It's not listed explicitly in the console service menu. So I did not add it. (same goes with loadbalancing, security groups etc)
I think just expanding it would be more helpful. I had seen the term before and knew exactly what a Virtual Private Cloud was once being reminded what VPC actually stood for.
There are a lot of things that can (and will) go wrong when it comes to computers, life, work, holiday and cats. This project will send you disaster drills when you least expect it to see how well prepared you are. It contains tips and tricks and you can score yourself and match against others on your preparedness level.
I've set this up as a small weekend side-project for two reasons: first, because i fail too often when it comes to disaster prepping myself, and secondly, I was very curious to see if I could use LLM systems like chatgpt and deepseek to "generate" apps/sites. Turns out that it wasn't too bad, although i wouldn't fire my whole development team just yet.