Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There’s still no good way for me to write an open source web application and have its users bear the cost of running it.

This is a major regression from open source desktop software, and IMO is the reason open source web applications haven’t taken off more.



Forget open source—there never was a simple way for users to self-host web ~servers~ applications that gained any traction whatsoever.

Opera gave it a go more than a decade ago with Opera Unite, but that went nowhere. Like a sibling comment mentioned, Sandstorm was a push in the right direction, but it also eventually failed. Docker and current container solutions are still way too complicated for the average user.

The fact web founders focused so much on making the consumption of web content easy rather than producing/serving it is partly the reason why the web is so centralized today.


This is a weird take on history and divorced from the reality we live in even now.

The first ever web browser written by Tim Berners Lee at CERN on a NeXt computer was a web editor as well.

He envisioned that every web user would be a web creator. He is quoted many times as saying this.

Today: you can still stand up a web server at your house and forward the ports on your router. Unless you’re behind a carrier grade NAT (as those are becoming much more common now that IPv4 is exhausted).


Seems like you agree that there isn’t a simple way to do it.

The browser-as-editor didn’t even survive into the next generation of web software — Mosaic already was read-only. And that’s because Berners-Lee’s vision lacked any unified solution to hosting the web creations.


There was https://en.wikipedia.org/wiki/Amaya_(web_editor)

I've used that until about 2010 for clicking together concepts of pages, to refine them manually, if at all.


> Today: you can still stand up a web server at your house and forward the ports on your router

And you just lost 97%+ of the Internet userbase. They have no idea what you just said.


Yea. Talk about being "divorced from reality".


Then we should really be focusing on getting IPv6 everywhere so that the firewall can be a single click "expose website from this computer".


It's not just a matter of exposing the service to the internet. That's only part of the solution. The usability difference between consuming web content via browsers and creating/exposing it via web servers is vast. Most web users wouldn't even know where to start with today's tooling, and what's worse: even if such tooling existed, you'd have to convince them why they should use it in the first place. This is partly why adoption of any decentralized platform is an uphill battle.


Idk about web hosting and web servers, but a significant portion of the population at some point used torrenting software.

I feel like at the very least it should be possible to make tutorials for how to make and seed torrents (and why you might want to), and people can send or post torrent files or at least magnet links in places that already exist, like telegram (the app, not telegraphs from before phones were common) or email or sms text messages or forums or qr codes or anywhere that you can post at least a magnet link.

I feel like if people want bad enough to share and receive large files they can learn the basics of using torrent programs (and I've also seen more than one Android app (Libretorrent being one of them, and you can get it on the free/libre/open source Fdroid store if you want to))

Another thing to consider is that irc and matrix exist and I think they claim to be peer-to-peer, but I'd suggest taking a good look at whether that's true and what their limitations are, with irc seeming particularly limited when I tried it years ago (what do you mean it doesn't keep any history? I can't see what the convo was right before I showed up? That's dumb. Oh, and I can't see any messages somebody was trying to send me if I wasn't online and in that irc room at the time? That's super dumb. And where's the edit button? You mean I can't edit what I sent if I did a typo or sent a message before it was ready or something? And I can't even delete a sent message so I can redo it and replace the messed up message? What decade was this written in? Oh, like decades ago? Ok, maybe that makes some sense, but we have standards for our communication apps today) Oh, and it was very obviously made by people with a commandline-first mentality, and you either know what command to tell it or you don't, and if you don't and you don't understand any help text there may or may not be, you're at the mercy of whoever introduced you to irc, especially if you're not used to thinking the way hardcore/old programmers think (which makes help text less than helpful).

No, I think those aren't exactly what I'd be looking for


Sandstorm was a beautiful idea. I hope it’s time will come.


I think we need something like micro payments. Take lichess for example it's the biggest open source chess website completely ad free and runs by donations. If you divide the total monthly costs to run the servers by the number of games and you get a tiny fraction of a dollar cent. I don't remember the exact number, but it has been in the order of 1k chess games equals 1$. If you could charge 0.1 cent per game, then this website could run without any extra donations.

Another idea that comes to mind is that the server side could be somehow run by the connected users. Users have storage + cpu cycles. Similar to torrent as long there's enough users (seeders) the game server will continue to work. Lichess for instance has tens of thousands players online 24/7.


"How to pay" always seemed like the easy half of the problem to solve, "how to manage what should be paid" seems much harder as nobody wants to deal with sorting through fraction of a penny payment approvals. Is 0.01 cent per game acceptable? 0.05? If you accept at 0.01 and it goes to 0.05 do you have to re-accept? If everyone decides sets 0.1 cents as an auto-approve boundary does that mean every site is now going to try to charge 0.0999 cents? Does some centralized entity try to set these rates instead? How does the system protect against the equivalent of collect call scams? Does it protect against that in a way that doesn't limit actually using a service very quickly?

It's like the permissions problem (really easy to prompt, really annoying to do so, really really bad to just assume yes or no all the time) except worse.

In regards to distributed serving using the client endpoints it has a strong tendency to be more work, less reliable, and not as scalable (see peertube). What has seemed to work is offloading as much of the functionality for that user as you possibly can to that user's device. E.g. want to play a game against the computer? Run the chess engine WASM bundle on your device instead of the server (lichess does this).


> "How to pay" always seemed like the easy half of the problem to solve

With the cut payment providers currently keep it still seems like an unsolved problem for micropayments


A model that is similar to donations that I feel has not been fully explored is charging for cosmetic items. Reddit essentially does this now by allowing people to buy reddit gold, silver, or other awards.

This revenue model has turned out to be quite profitable in gaming and creates an experience where most people can use the software for free but a long tail of users spend lots of money to have icons next to their name or elsewhere on the site.

For chess you can imagine how this might work, for other software it is not always as clear.


https://www.businesswire.com/news/home/20220127005808/en/Fed...

still has a 5.5 cent overhead but that's a lot better than whats currently on offer


The micro donations idea kind of exists for the use case you mention in the form of the service Flattr.


Sandstorm.io was basically doing that, and it’s the direction I’d want to see as a user. Unfortunately it isn’t attractive to application providers who want to monetize their applications, and without enough applications it’s also not attractive to users. Maybe it needs to be combined with a platform like NextCloud.


There's the SAFE Network that will do exactly that. It's pay on put. You as a developer would have to pay a one time cost to store the app on network, but that should quite cheap. Users would then pay to store their own private data through the (web)app. It uses its own browser and protocol as sites are stored on a peer to peer network.

It's still in somewhat unstable test versions, but I think there's hope it can be out within the next year or so.



There's actually a lot of open source apps that have this property in a particular category: web3 apps. Users (or other intermediaries, not necessarily the app dev) pay the cost of transactions, and thereby pay the cost of the data storage / computation layer.

HN doesn't seem to like web3 very much yet, but one of the most positive innovations it brings is giving open-source apps a direct business model (instead of the usual "pro" and service org or hosted-version model). There are plenty of open-source apps making hundreds of millions or billions in revenue in this space!

Even utility open-source projects receive significant funding through projects like Gitcoin (https://gitcoin.co/).


web3 apps do have high transaction costs, but that's not really reducing the costs that the web3 app would have otherwise paid to have a local database. So it costs money, but the developer doesn't really earn anything because of it.


> but that's not really reducing the costs that the web3 app would have otherwise paid to have a local database

I'm not sure what you mean? It literally makes the cost to the developer 0 per user.

And the original developer can absolutely earn money this way. In fact, in web3 it's possible for frontend devs to earn money by creating better frontends to existing protocols utilizing referral fees that can be specified in calls to the protocol!


This is unfortunate because a couple of attempts get _so close_.

You've got public docker repositories, terraform, aws service catalog (or cloudformation), all of which could fill this gap directly or via their own services if they had a slightly more beginner-accessible workflow...


How do any of these things help?

"docker repositories, terraform, aws service catalog (or cloudformation)"

These are all part of the problem, and can never be the solution.


What is the problem they are a part of, and what makes them part of that problem? They don't seem problematic to me.


You can't solve problems of complexity by piling on more and more layers.

Layers need to be collapsed


Terraform is roughly the equivalent to a Makefile. If anything it reduces complexity by encouraging operations to be run in a reproducible and testable fashion. Is it a layer? Sure, but little more than a shell script is a layer.


Citation needed.


You can.

If you write it in Go and package it as a single binary.

You can't if you write it in a scripting language that requires tons of programs to already exist on the system (a specific version of the language interpreter + a database server + other servers like redis and memcache etc etc etc).

This is a problem with programming languages, not with computer systems.

Computer systems already allow you to package and ship programs as self-contained units. That's their default mode of operation.

The prolifiration of scripting languages that require an entire environment to be configured before it can a program is something that programmers have done to themselves.


> If you write it in Go and package it as a single binary. ... > You can't if you write it in a scripting language that requires tons of programs to already exist on the system

You are close, but you are not exactly right.

If consider real case of application, which create some value (I don't mean just money, may be for example community value or scientific), you will need to depend on some libraries or tools.

This is how our civilization works, we don't create all things from scratch every time, but instead, we take ready parts and construct something new from them, possibly adding our new parts.

Some parts could been compiled/linked statically inside your big one file package, some only dynamically.

Scripting languages difference is just that they usually shipped with rich development library, and in many cases it is possible to cut unused parts of these libraries.

For example, Python now shipped even with sqlite database included, sure this is not tiny package, but it is used in many applications.

To be more precise, python for android (p4a), when compiled as helloworld, results in approximately 6mbytes .apk. As I said before, there all python standard library compiled with cython.

Sure, if you will compile helloworld native, will got something within 200k, but if add any library, it will grow, and for real application, 6mb is not to much currently.

If add functionality to p4a helloworld, it grow very slowly, because compiled Python representation is relatively compact.

BTW it could be interesting project, to add to Python/Cython possibility, to create single binary package, so it will not decompressed to fs hierarchy, but read all from those binary as need.


> If consider real case of application, which create some value (I don't mean just money, may be for example community value or scientific), you will need to depend on some libraries or tools.

> This is how our civilization works, we don't create all things from scratch every time, but instead, we take ready parts and construct something new from them, possibly adding our new parts.

This is very dubious.

If all you do is compose parts that already exist, then anyone can do it and your value add is almost nothing.

Sure, if you try to build everything from zero, it will take you forever.

But obviously, if you do what I said (what you quoted me), you are not building from scratch.

First of all, you are using the Go language and compiler. Second, you are relying on existing operating systems (likely linux) to run your program. Third, you are relying on the internet to exist so that your program can reliably serve content to users. Forth, you rely on the fact that your users have a reliable web browser that can display this content. Fifth, you are free to use any library in your source code.


> If all you do is compose parts that already exist, then anyone can do it and your value add is almost nothing.

Looks like you believe to Marx theories, that anybody could JUST make value. I mean, on such markets, you really could start sells from zero or with very limited resources.

But this is true only for very early stages of market, when competition does not matter. - On developed markets, competition is very significant, so to make moderate success, you have to use external resources - grants, credits, crowdfunding, etc.

What Marx don't said, that people divided to two big groups - passionaries (mostly entrepreneurs), and ordinary humans. They different in very important thing - passionaries have from nature need to change world (ordinary does not have such need at all), and on some moment of passionary life, earlier better, he switches to famous circle: 1. accumulate resources. 2. invest resources to some project to change environment. 3. when project on 2 approaches to some endpoint, have strong signs of success or failure, return to 1.

Ordinary people just satisfy their needs of mostly lowest levels of Maslow pyramid, they don't accumulate resources, they don't try to invest, and so they have not any success in projects, even when I agree, that many projects need very little resources to start profitable business.

Only exception, when ordinary human face some very easy to enter and extremely profitable opportunity, which does not include any risks or responsibility, than greed could defeat laziness.

But such things don't happen frequently. As I said before, most real opportunities include risks, include need to build circle of trust (so people will give their resources for free), or just get somewhere resources with conditions, like credits from financial entities.

So, return to our technical things, you are right, that exist totally free things, which could use anybody, but in most cases, they are not enough to make value, in many cases they are useless or they used to create barrier to enter this business.

I even must accent, I've been involved in few opensource projects, and in near all successful projects, their lead constantly made decisions, which features will not include in free version, to motivate people pay for them.

Most known example of free project, created as barrier - Eclipse IDE, which destroyed really big markets where lived lot of businesses - Borland, Watcom, Tiny C, etc, and when appear Eclipse, they become unprofitable.

So, life is struggle, but I repeat - technically you are absoultely right, in that near anything possible, if somebody else pay for it :)


I love how you make a faulty assumption and then go on a huge rant disproving it as if that matters.


There is probably room for a consumer appliance (like a souped-up NAS) that puts a facia and marketplace around Docker, letting end-users run self hosted apps. I know QNAP (at least) tried something similar to this, but it seemed to be fairly constricted.

Or to take it further, the same thing running in the cloud, but costs could pretty easily blow out of proportion with end-users not being fully aware of the costs of their actions.


I think that running a marketplace application on DigitalOcean is pretty easy (done in a few clicks, but depends on the application). If the image contains common sense security measures, then for the average user this is safer than a 3rd party SaaS.


A theory: When declarative IaaS gets to a certain point, we can distribute the cloud hosting version of a one-click install. Then use federated auth so people can choose any instance of the app to host their identity.


Isn't the solution just to use ads to have users fund the site? What were you thinking of?


That requires running a pile of nonfree/intrusive tracking code, and many people block this kind of thing


How is peertube these days


I think s/he wants something that the users hosts together.

Ads can be blocked, reduces the value of your service and do not pay enough to cover infra cost unless you have many users.

In comparison - the resources needed to run a desktop app is 100% provided by the user.


What's wrong with subscription fees?


One of my big realization of 2021 is that this is exactly what blockchains can provide. You can have permanent hosting of your website on Arweave[1] and interactions with the website could save your state on Ethereum or similar. You pay once to host the website, and then it's free to browse and users pay whenever they want to change the state (e.g. post something on your website). Ethereum is like this big world computer that anyone can publish to and users pay to interact with it. You don't have to worry about hosting or uptime and it will be up there forever.

[1]: https://www.arweave.org


How large is ETH overhead? I expect it to be atrociously massive.


It's massive right now, yes. Especially because of proof of work. It will get better, but I don't think we can expect it to be as good as everybody hosting their own services in the cloud. That is a big disadvantage of Ethereum, but I still think it is pretty interesting that it essentially handles devops for you forever.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: