Phoenix is practically built with this idea in mind. My startup is built out of a single phoenix monolith. Only external dependency is postgres. Despite this, I've managed to completely avoid all the typical scaling issues of a monolith. Need a service or background worker? I juts make a Genserver or Oban worker and mount it in the supervision tree. The Beam takes care of maintaining the process, pubsub to said servi…
this sounds really neat and I'm going to go read about it! I also wanted to call out that this ~sentence has just... a bunch of things that seem like jargon/names within the community? As an outsider, I have no idea what they mean: > make a Genserver or Oban worker and mount it in the supervision tree. The Beam takes care of maintaining the process it sounds very sci-fi :)
Write libraries instead of services, where possible
251–260 of 328 posts
Re: Write libraries instead of services, where possible
#252I agree you shift work to users, but at what cost?
Either an angry or resentful user base or jumping through countless complex edge cases to deal with usage problems you didn't forsee or intend to happen.
I'd happily take managing and maintaining a centralised service over a lib in most cases.
Re: Write libraries instead of services, where possible
#253Earlier quoted context omitted.
There is a hidden problem here, which is app store policy (all of them, afaik). Setting up a subscription? Easy. Selling software once.. and just once? Also easy. But if you want to follow the classic version model, where users pay for upgrades? Now you have problems. The app stores see a new version as a completely new piece of software, so you have to build up reputation for it from the ground up, and if you want t…
This, a million times this! The app stores made the most sensible model extremely cumberstone! I want to buy a software and own it forever. On the other hand, forcing the developer to provide upgrades for free forever is not sustainable. Maybe there is a clever way to work around this issue using in app purchases ...
For one utility app that I sell, I just build a new version every couple of years when it's no longer compatible with the latest OS, and people still buy it. There really is no need for updates for some apps.
If there is demand for updates (eg. because customers want new features), then you can just sell it as a new app. People who want to upgrade can get the new version. And people who are happy with the old version can just continue using that.
The folks who complain that they can't sell yearly updates on the app store are basically just trying to sell subscriptions without calling them subscriptions. They should just sell their apps as a subscription instead. It's not really pay-once if users have to buy an upgrade every year.
Re: Write libraries instead of services, where possible
#254Phoenix is practically built with this idea in mind. My startup is built out of a single phoenix monolith. Only external dependency is postgres. Despite this, I've managed to completely avoid all the typical scaling issues of a monolith. Need a service or background worker? I juts make a Genserver or Oban worker and mount it in the supervision tree. The Beam takes care of maintaining the process, pubsub to said servi…
Re: Write libraries instead of services, where possible
#255Phoenix is practically built with this idea in mind. My startup is built out of a single phoenix monolith. Only external dependency is postgres. Despite this, I've managed to completely avoid all the typical scaling issues of a monolith. Need a service or background worker? I juts make a Genserver or Oban worker and mount it in the supervision tree. The Beam takes care of maintaining the process, pubsub to said servi…
this sounds really neat and I'm going to go read about it! I also wanted to call out that this ~sentence has just... a bunch of things that seem like jargon/names within the community? As an outsider, I have no idea what they mean: > make a Genserver or Oban worker and mount it in the supervision tree. The Beam takes care of maintaining the process it sounds very sci-fi :)
https://erlang.org/download/armstrong_thesis_2003.pdf
> supervision tree
See chapter 5 "Programming Fault Tolerant Systems" & section 5.2 "supervision hierarchies"
> genserver / generic server
See chapter 4 "Programming Techniques" section 4.1 "Abstracting out concurrency" and chapter 6 "Building an Application" section 6.2 "Generic server principles"
Re: Write libraries instead of services, where possible
#256> A service has constant administration costs which are paid by the service provider. A properly designed library instead moves these costs to the users of the library. I agree with the articles point, but this introduction, right there, is why it's not happening. SaaS turns your startup into a unicorn and yourself into a rich person. Or at least that's what you are hoping/aiming for. A library is not going to make y…
You're right. The fact that people can make outsize rewards from subscription services are the reason that even small single use tools are now 'services'. I have a piece of software that removes the background from my video feed. It's a subscription, and it regularly phones home. I have a piece of software that lets me visually combine, rotate and reorder pdfs. It's a subscription. Even the simplest things, like a 't…
Re: Write libraries instead of services, where possible
#257- an auth service that keeps up with security bugs
- a recsys that keeps deploying newer and better recsys into your app
In these cases the service continues to fulfill the same contract, but they keep getting better independent of your dev cycle.
In effect a service is a kind of “push” model of dependency. I push my improvements into your app as soon as they’re ready. Crucially you let me do this because it’s an area you’ve given complete trust to another team to manage for you for a variety of reasons.
Libraries, OTOH, are a “pull” model. You pull the dependency into your code base when you’re ready to absorb the changes. There’s less benefit to letting the dependency evolve on its own and you want to decide when to pull in updates.
Crucially in services the promise is more abstracted. I’ll give you “good recommendations” whereas libraries can be more “add two numbers”. With the service it’s more about the interface being stable over time, and while this is true with libraries, the API can evolve more fluidly.
These aren’t hard and fast lines, it I think both are valuable and have their pros and cons.
Re: Write libraries instead of services, where possible
#258Earlier quoted context omitted.
Why do you think it's limited to the FOSS world? Surely most SaaS companies (and certainly the most profitable) are business-to-business companies, and presumably they're quite a lot more valuable than the average library vendor. I would also hazard a guess that onprem services occupy an intermediate tier both in terms of profitability and in terms of integration model: they're a whole service (as opposed to a lib) b…
Because a large majority of those developers feels entitled to get everything for free. If I want to get money (not donations) I rather target traditional corps.
Re: Write libraries instead of services, where possible
#259Earlier quoted context omitted.
So write your own software for your needs and sell it for a one off price? But you presumably won't because the incentive isn't great enough. Which is exactly why people milk subs. And if you're not willing to do it for the incentive of a one off price, why should anyone else be?
> So write your own software for your needs and sell it for a one off price? Should he tailor his tshirt too? It is totaly fine to whine about something without fixing the industry by yourself. I for one don't like the movement of commercial software to forced cloud integration. Big or small business. What would have been shareware or naggware would today be SaaS and be gone the day the server shuts down.
No, because t-shirts are already available for one-off prices. He's already willing to pay enough to motivate people to make them for him. He and/or wider society are not willing to pay enough to motivate people to make him one-time-purchase software, apparently.
Re: Write libraries instead of services, where possible
#260Earlier quoted context omitted.
I don't think either of those subscription services are unicorns or making billionaires. If anything I'm happy to see indie developers able to maintain a decent income making useful (but often niche) tools that other people can use. Of all the SaaS services I pay for, it's one like these that I'm the least apprehensive spending money on. Video codecs are hard. PDFs are a labyrinth of a file format with traps everywhe…
Video codecs are hard, but the reason video utils become services is because the best (by a mile) video codec libraries are (L)GPLed. I suspect the same is true for the best PDF libraries that would be integrated into desktop applications (meaning compiled like SumatraPDF's library, since there are plenty of JS/Python permissive licensed libraries). All the developers I know immediately jump down a level to ffmpeg co…