Why don't we have more businesses following the JetBrains model specially if the product is not a service that needs to run 24/7. I buy the product once and use it for perpetuity. If I want updates, I pay more.
As a consumer, my data does not leave my perimeter, my data is not sold or used for ads and I am not hooking into a subscription that I am going to forget soon.
1) Personal photos and videos backup and viewer. - Just give me a cheap cloud for backup and a desktop app for viewing. 2) Personal budget - Just give me a desktop app that connects to my different accounts and gives me overview.
In some sense, every business dreams of wanting to be a recurring revenue business.
- Gyms want you to pay monthly, and discount annual plans (and sometimes discount again if you try to cancel your annual plan)
- Restaurants want you to come frequently, 6th time is a free sandwich or coffee
- Bars want you to come to happy hour, at the same time, every day
- Content creators often have a daily, weekly, biweekly, or monthly cadence
SaaS is all about recurring revenue. In theory, SaaS aligns incentives because you can quit once the product or service deviates from your expectations or no longer serves your needs. Of course, in practice, SaaS companies want to keep the monthly / annual drip coming and may make it hard to export your data or switch providers. Local first software could be one antidote to this (https://www.inkandswitch.com/local-first/) and perhaps there are others.
2. SaaS loosely resembles old-school semiconductor VC investing
SaaS is similar to old-school tech VC investing because the marginal cost is low but the upfront cost is somewhat high / fixed. A lot of investment houses think in terms of recurring revenue as well (e.g. your mortgage is a monthly payment). So if you want external funding, show a premise of recurring revenue!
You pay once for someone to set up a hard drive in the "cloud" you can put your photos on?
They charge you enough for a lifetime of transfer bandwidth?
What happens when the hard drive dies? Do you want redundancy so that if one drive dies the photos aren't lost? Who pays the tech to go change out the first drive when it fails so it can recover before the others in the array also die?
What's your personal risk aversion for losing this data? Even a two-drive RAID array can lose all of your data in some scenarios.
For 2), you want an app that connects to all of your accounts. How does it do that? Usually by using web APIs or a third party interconnect like Plaid.
What happens when they bank you use updated their API? Who is going to provide you with updates to keep all of these account connections working?
---
Both scenarios you describe have ongoing maintenance. Things weren't SaaS when they existed solely on your local computer and continued working without constant maintenance, but your two examples that come to mind show how our expectations of technology have changed and we expect things to work online, backed-up, and to keep working even as integration partners, OS vendors, etc. update their systems.
The two use cases you described don't work that way. Both of them have cloud components, which means they need frequent security patches, and they likely also need bug fixes and other updates.
"Connects to my different accounts" by itself is a huge undertaking that most people outsource to Plaid or a similar vendor.
So to answer your question: a lot (not all, but most) SaaS products are services because they are services. They are updated incessantly by developers and have rolling updates.
1. https://sales.jetbrains.com/hc/en-gb/articles/207240845-What...
I've also been thinking about this from an ecosystem standpoint that it is now very difficult to develop a software product that is not SaaS.
If everyone else is SaaS, and you are not, your business will be:
- Valued lower than equivalent revenue SaaS businesses, because revenue is lumpy and comparatively unpredictable
- Have greater difficulty raising capital, because investors aren't used to valuing non-SaaS businesses any more
- Have greater difficulty hiring engineers, as they know the next job they have will likely be SaaS related
- Slower sales cycle due to higher upfront price required (IE - Doesn't automatically fit on an employee card for land and expand)
- Higher customer acquisition costs, as most customers, other than those on HN, are used to the subscription model and prices, and would encounter sticker shock at the high prices required to make a one time purchase work
You can't hire devs per project like in construction. Developing commercial software requires maintenance, knowing the codebase, etc.
What I haven't seen mentioned are scenarios with non-technical customers. In the extreme use case of resource intensive software with completely non-technical customers, who is going to man the ship? It's like selling someone a car who is incapable of driving.
Even if you provide an on-prem system turn-key, who is going to manage and maintain the system? Yes, you can sell perpetual licenses with support agreements, but the delimitation of responsibilities will be difficult for non-technical customers to understand.
SaaS essentially allows customers to outsource their IT operations.
> 1) Personal photos and videos backup and viewer. - Just give me a cheap cloud for backup and a desktop app for viewing.
It sounds like you want a one time purchase for backup that lasts forever? I'm not sure who is going to rationally offer that service as there are ongoing costs.
> 2) Personal budget - Just give me a desktop app that connects to my different accounts and gives me overview.
At least in the US that means you have to directly work with banks (ala Quicken), use a third party service (like Plaid) or maintain your own scraping system that perpetually breaks and/or violates the bank TOS. Any of those options is going to cost the software provider ongoing costs. Again nobody is going to take a one time payment and be liable for ongoing costs.
I do think there is money to be made in the right industry for desktop apps that charge a decent amount ($100 and up) and offer 1 year of updates and then perpetual use with the final updated version for that year of use. This incentivizes the developer to maintain security updates and make feature additions so users are willing (but not required) to pay again in the future.
If all the code runs on the user's laptop, it doesn't matter whether it's a game or a productivity app and it doesn't matter whether it's cheap or expensive, it will be cracked and it will be pirated.
If a critical piece of the product runs on a server that you the business founder own, whether that's multiplayer lobbying or MMO sharding or some key part of your productivity app (like data storage or whatever), piracy ceases to be a crippling problem for your business and becomes a non-issue. You also have the opportunity to get a recurring revenue stream rather than a single payment, which is generally preferable for the business (and better aligned with the fact that you do now have monthly per-user costs because you're hosting part of the app on your servers).
As a data point to back up the importance of piracy in the equation, look at the distribution of start dates for successful software companies. There were lots of successful software companies started in the 80's and early 90's, but almost no successful software companies were started between 1995 (when the first web browsers made piracy easy for the first time because you didn't have to physically know someone with a physical copy of the cracked software, you could download the crack from anyone anywhere) and 2006 (when Salesforce.com showed the world what the games industry had already figured out, which is that hosting part of your app on your own server is a great way to stop piracy and get recurring revenues).
Once Salesforce.com showed the industry that "SaaS" works, all of a sudden people could start launching tons of profitable software companies again. Can you find a successful software company started during those dark ages of 1995-2006, of course you can, these are trends not absolutes. Was it far harder to be a software company in those dark days? Absolutely. That's why we have SaaS today and that's why SaaS is here to stay.
2. As many point out, subscriptions are best for a business because it's recurring revenue and you can grow. One off sales makes this harder.
3. The Jetbrains model is basically subscription model now. They only allowed you to have perpetual license because of backlash. However, I liked their approach of you can have a peretual license for the version that was available 12-months before your subscription ended. It's what I'm going to be using with my product with a slight modification.
4. As you point out, you're likely to forget about a subscription therefore the company makes money while basically providing nothing.
5. Overall, the problem is that everyone is accepting the current setup and paying for subscriptions instead of buying things so more companies are getting in on the gig.
1. The loop of just regular maintenance. How long is that version of Node supported? 2 years? Alright assuming you did literally nothing, no bugs, nothing else your software is already needing to be tested against a new major version in just 2 years.
2. External loops, integrate with XYZ platform? Oh version 1 is EoL in 2 years? Guess you need to get on upgrading to API version 2!
3. Someone uses your out of date software and runs into an issue, now they email you, tweet at you, complain that your software sucks and you should support it better. (My first job would get this all the time for software we released 6+ years ago) Oh you fixed that bug in the new version? "I should get it for FREE!!"
Who is going to do this work for free?
Even if you cut the support emails down to a minimum, that alone costs money to automate...
Another favorite of mine was complaining about price, "$5,000 for a perpetual license?!"
The same person who would think "do I really need this?" when faced with spending $1200 on a high-end automatic espresso machine wouldn't even think about spending $5 a day on a takeaway latte (which ends up being an order of magnitude per expensive once you amortise the cost of the machine over the number of cups produced).
And of course, the more guaranteed revenue you can demonstrate, the more valuable your business is going to be for potential acquirers. “Because a high percentage of the revenue of a subscription-based business is recurring, its value will be up to eight times that of a comparable business with very little recurring revenue,” claims Warillow.
https://www.techradar.com/news/how-recurring-revenue-can-inc...
For example, as a B2b software company, there is no way I'm offering customers any complex cloud functionality, especially involving data storage, if I can't guarantee that I will be able to cover the costs in the future. Thus recurring revenue is a must.
On the other hand, if you just need an offline app that can work fine without being updated frequently, probably a single upfront payment is better suited.
This is nothing new by the way, multiplayer games have worked this way for a long time. In general a multiplayer game that asks you a subscription fee has a much higher chance of being kept online for longer. See WoW. Without subscription fees they would have probably shut down a long time ago.
We're looking at subscription from the point of view of the customer in our start-up.
We're in the neurotech/sleeptech business, and competitors (Dreem, Philips) were selling products for $500+, and we see other start-ups in the space apparently doing about the same.
We're looking at a subscription cost because it lets us get into the hands of more customers, which means we can bring our production costs down, and everyone wins.
Yes, our LTV, should we have churn right, will be more than the up-front cost, but as we say "I can't help somebody sleep if I can't get them to try the product".
So please don't ONLY look at SaaS from the perspective of the business. For many businesses, it makes more sense from the consumer side as well.
What happened after I made the switch away from subscriptions?
I received a bunch of support questions asking for the subscription options back. People were truly confused/upset that hosted software wasn't being sold on a monthly or annual subscription basis - even though per-project was more flexible and cheaper for them.
My takeaway is that - for better or worse - the SaaS subscription model is just so expected among buyers these days that to defy those expectations is just going to shoot yourself in the foot.
The reason is that you do not want to start over each month sales wise.
Again, as a consumer you can "consume" what is offered in the market.
I.e. if you have an option to not buy, the seller has the option to maximize its profit.
I don't know about the second part, but they sure are trying to push the first. As many others here have noted, the reason is money, or more precisely, greed and control.
I'd add that this issue is affecting many other industries as well. Entertainment being a visible one. Hollywood has big budgets, big overhead, yet increasingly difficulty finding the big ideas. So we get "Men in Spandex Save the World #83." AAA games are behaving similarly. There seems to be less of an effort than ever to even feign that "Next Big Shooter" is essentially last years next big shooter, reskinned.
This is why I hold the certainly uncommon view that we are probably nearing 'peak big business', at least until the next great frontier emerges. It's difficult to imagine these increasingly widespread "solutions" being sustainable in the longrun. One issue, among many, is a tragedy of the commons with many solutions. Charging rent sounds great for the individual company, but the more companies that charge rent - the more intolerant consumers become of it. See how online streaming went from a golden goose to a bloodbath for everybody once "too many" companies got involved.
From a business perspective, a SaaS solution can be a ramp to platform lock-in. Once your customers have committed, and your software is part of their business workflows, it's expensive to move away from it.
Another reason is that (for sufficiently complex solutions) the software portion is just part of the service - the business can also offer consulting services for onboarding / migration and customization. That's an entire new revenue stream.
I use a lot of cloud stuff because there's no other choice. There's no P2P Tile or YoSmart. I'm not interested in hosting something as important as email myself when there are entire teams that focus on that full time. They kind of have the upper hand.
What's the alternative to google docs? Does it involve maintaining a server or saying the words "Ok, just download this app and type in this IP address"?
Open source and (Non-cryptocurrency) P2P is probably always going to be the best for this. Commercial software seems to have clearly decided that it wants to be SaSS.
Maybe there's a niche market for non SaSS, but so many people who want local stuff are concerned with privacy, or have a very low budget, and prefer open source if it's available.
Obsidian seems to be doing well as proprietary local first software. Now that SyncThing exists, it's a lot easier to develop and use this kind of thing.
Cloud providers and software engineers have of course come up with tons of new tools to make this outsourcing (or you could also call it renting + outsourcing) cheaper (autoscaling being a huge one) and this incentivizes moving to SaaS or PaaS infrastructure. However as these new products mature companies are also realizing they can use those same innovations in their own "on prem" infrastructure. Most of the time it comes down to how big the company is (do they hit the threshold where hiring a bunch of people to run their own datacenter or machines makes sense) and is their business long term focuses enough that they care more about the big potential cost savings vs the advantage of (from an accounting perspective) recuring regular costs per quarter vs larger occasional purchases of hardware.
Personally I think we are going to see a huge "private cloud" movement in a few years once the market matures and companies realize they did not need to give absolutely everything to AWS. I have always liked the hybrid cloud model and then using SaaS only for things that are a huge pain in the ass to manage (since with SaaS you are not just renting/outsourcing the hardware but also all of the software work as well). Email is a great example of this - its a huge PIA to manage yourself and often not that costly to just pay someone else to do it.
In my opinion the holy grail for many companies is having their big "regular" workloads (especially stuff computationally expensive or requiring special hardware or large storages) run themselves on their own hardware + seamless integration with a cloud provider for autoscaling that process up as needed.
Makes sense then that software among other things becomes a service.
Problem is same old conflict: I work for money, they own my work and take money, I resent that, they like it, then violence or legislation or something.
2. now imagine updating your software with new release/bug fix. royal pain. these two factors are enough to choose saas
With SaaS, you have full control over your product, at the cost of being limited to the in-browser (and mobile) front-end. Your backend can be written in any technology you want, and you can release new updates with any cadence you want, even continuously. And you can even replace the whole backend overnight, with your users being none the wiser (assuming it has full feature parity with the old one).
Small numbers are easier to sell. Before a company spends $20k on a PM tool, they would discuss it to death. But signing up for $299 a month and giving it a shot is easier.
JetBrains would have gone the SaaS route if they could get away with it. Seven years ago, they made an announcement[1] to go pure-subscription/SaaS, and the outcry[2] was so massive, they reversed course over a matter of days,id memory serves.
1. They proposed licensing term changes included bricking your IDE the moment your subscription lapsed, switching from their previous terms where you'd be stuck on a working then-current release forever.
First you need to works with different Linux OS (ubuntu, redhat, etc.), and nowadays, product may contain a lot of microservice, then you need a kubernetes cluster, which is very hard to maintain. And then, you need to find a good storage (object/blob storage) for kubernetes.
Then, you may need to often troubleshooting server issues (like, disk full, slow disk issue, out of memory, kubernetes network broken). And you need to often check whether the data backup system works.
It is much easier to operate as SaaS, and you can pick your OS and your machine spec, and your programing stacks
Software as a service becomes a rental property and owners can milk consumers for more money over time as well as introduce features to encourage lock-in. Basically, you're teaching frogs to boil themselves.
It's terrible for users who value their money, security, and privacy, but vastly more profitable for companies so most companies will offer it increasingly leaving users with fewer options for anything else.
When you need to increase profits to justify insane valuations, eventually you need to start wringing your customers dry.
That's the world in which you can buy the software you described without SaaS. As long as the vendor is running the server side, you're paying by the month.
* Do you want to build it for mac? And windows? And linux desktop (lol)?
And from the clients side, it's also easier:
* You just need to open your browser you're good to go.
* No need to install updates. Just imagine what kind of hassle rolling out updates for desktop software is in a company with more than a few employees. This used to be a dedicated job.
And feature wise, it's also better:
* Compare working with google sheets to excel files being sent around as email attachments.
It may or may not be what best serves the customer or represent consumer preferences, but it is (increasingly) how things are done in order for a business to compete (or exist).
"The brilliance of paying on a subscription basis is that a company can buy exactly what it needs, when it needs it, and no more."
From https://stratechery.com/2019/microsoft-slack-zoom-and-the-sa...
He's written about this in other posts too.
You answered your own question.
1. Higher total revenues. If you compare the subscription fee with the sale fee and how often sales happen.
2. More predictable revenue. There are many reasons people want that.
3. The more information (metadata/telemetry) they have on you the more they can use that for something else. That could be details on how you use the app. If they host your photos they may use those photos to train an AI. Things like that.
4. Finding and tracking unlicensed users is easier to stop and manage. Everything is tied to a SaaS. Less stealing software which cuts into revenue.
There are other reasons, too.
In a capitalistic society where the goal is constant revenue growth, SaaS provides a means to do that more effectively. Look at the goals.
They don't want to admit that they are part of the griftopia that they are creating; especially building a SaSS on-top of something that does not need to be a SaSS or that can be done for free.
Besides, managing servers is “undifferentiated heavy lifting”, why would most companies invest in infrastructure that “doesn’t make the beer taste better”
Pachyderm started off as a self-hosted offering, but we did try doing a fully-managed hosted solution, because it would be super easy for users to get started. You write some automation to make a perfect install in your preferred cloud environment, and then users click a button and have a perfectly configured, monitored, and backed up environment. If there's a problem, customer support can go play with the underlying resources (always with explicit user consent, of course; we were super strict about this), and that means that users get a solution instead of a fun debugging problem. Less surface for them to configure, less chance for configuration problems. Ultimately, this turned out to be unappealing to users, for many of the reasons that you list. People want to own their own data and not have to trust even the nicest and most competent people with it. For that reason, we doubled down on the self-hosted option.
There are many pain points with self-hosting. From the start, it's difficult to offer something like a free trial. We'll give you the software for free (hey, it's open source), but you're on your own to find a computer to run it on. You'll need to setup DNS. You'll need to get a TLS certificate. For our software, you'll need to run Kubernetes. Before you can even see what value we offer, you have to do a lot of grunt work. What this means is pretty long sales cycles (while we assist you in navigating all those requests through your organization), and a dropoff among people that just want to have their problem solved today. (You can see this yourself. I bet you'll click any link on HN that sounds interesting. But if I just said "download and run this .exe", you'd probably be quite scared, and it would take some convincing. And rightfully so! That's the difference between SaaS and self-hosted, at the earliest possible phase, "do I even want this thing they make?")
From a technical standpoint, the amount of work you have to do increases dramatically. We have to write code to talk to every variant of object storage. We have to provide configuration documentation and advice for 3+ cloud providers. (For example, we used to depend on etcd pretty heavily. etcd's performance is very heavily dependent on disk iops, and the standard storage classes in your average cloud provider's are woefully inadequate. So we have to get people's data from the inadequate storage to one that is fast enough, and that's just a lot of work.) We have to support customers' internal security initiatives. If you thought keeping up with changes to one cloud provider for one instance of your application was a lot of tedium, multiply that by 3 cloud providers, by ARM and AMD64, by 6 ingress controllers, by 5 Kubernetes versions, by Local SSD, networked SSD, spinning rust, by corporate-mandated HTTP proxies, etc. It is a ton of extra work to make software that fits the customer's environment over just making your own environment that is perfect for your software.
Users dictate the upgrade cycle, not software engineers. I have worked on teams where every commit to master just gets deployed to production within 5 minutes. It's awesome. All you can do when you self-host is to make available another version; if users want it, they will upgrade it. Upgrades are always risky, especially when you wait a long time. So every release has to provide value worth the risk, or the same bug from 2 years ago will be reported again and again. Because of the risk, we have to maintain stable and testing release channels. Customers that want to try a new feature in their dev environment can get a nightly build with the latest features, but we still have to maintain a stable branch for customers that are happy with the featureset and just need security and bug fixes. We have to do work to lower their ops risk. This is honestly twice as much work as just pushing master to prod every so often. Backports cleanly apply most of the time, but when they don't, you're just implementing the same fix against slightly different code. It's work. (I'm a "if the tests pass, there are no known bugs in the code" kind of guy, so I've never been worried about deploying master to production. Obviously, some care in your software engineering is required and this doesn't work for many people, but it does work for me with a very good track record of uptime. None of that matters when you self-host, nobody would simply trust my assurance that the new version is good to upgrade to.)
Even ignoring all of that, it's quite the change in how you as a software engineer operate. You can't reach out and touch the system, ever. You ship a build artifact, suggest that the customer install it, and wait for their feedback. If you need certain information to show health/non-health, you have to make that understandable to the operator (who is often different from the user, who has other health concerns). If you need to be able to debug something, you need to add code to your app to do everything that you would think of doing if you were debugging a live environment, and make the results understandable to the user.
The tooling around this is pretty much the wild west. I recently investigated using Bazel to build our software, because we have three parts that are pretty much completely coupled to each other bidirectionally; Go, Typescript, and Python. There just isn't tooling around all of our requirements (we support both AMD64 and ARM deployments, as customers like those cheap ARM instances and developers like M1s without binfmt_misc hacks), because big tech companies that make these tools have the liberty to dictate their requirements. As a result, we spend a lot of time hacking together tools that meet our customers' requirements, but as a startup, don't have the resources to build something perfect, so developer experience honestly isn't as nice as, say, writing an internal app at Google.
Finally, the hiring situation is complicated. Pretty much nobody is building software that users deploy themselves, so it takes a certain rare type of developer to be productive in this environment. Your code has to show its work; operators that didn't write the code will be running it in production, and your software has to lead them to a solution to their problems. (Even things like "my job ran out of memory" are hard to detect and convey to users and operators.) You can't just push a fix you think will work to prod to see if it fixes things; you have to reproduce the customer issue in your own environment and fully test it before your code goes into a release. It's slow going, and care is of the utmost importance. Code review has to be thorough; you need to understand your customers environment and ensure that a fix for one doesn't break some other. (Yes, we have tests for this sort of thing, but great care is the last line of defense against regressions.) It's not just software engineers; marketing types always want to run A/B tests, and customers don't want to be subjected to this sort of thing. We have to make the right decision in advance, we can't give 10% of users an experiment and see if they rage-unsubscribe over the change.
All in all, it's a very different world. If you feel like your job isn't hard enough just running one instance of your software in an environment you control, selling your software for self-hosting is the job for you. It's hard. It's a slog. But, it's great for your users.
We build a tool for Apache Kafka (https://kpow.io), it's not a SaaS product, it's a single docker container or JAR that runs in air-gapped environments, our users install it in their own network and it just runs. That's what we thought engineers wanted, and tbh it turns out we were right in plenty of cases.
Our licensing is an annual subscription however - but then again so is JetBrains (well at least for the Intellij product that I happily pay ~$150 a year for).
I think for us the recurring revenue is really important, we wouldn't be able to sell you a perpetual license as we have commercial costs that are ongoing and related to maintaining the quality of the product. Not only is it better for us commercially, but also we have only had one customer in the last three years request a perpetual license, and we we explained we don't offer that model they bought a subscription.
So I completely agree on the non-SaaS JetBrains model, and I love that you mentioned that company. We often get asked about Confluent in our area of expertise but quite honestly from day 1 in 2018 we've been aiming to be the JetBrains of distributed systems. We even followed their dark branding style.
Edit: Just to add one more bit of context now I think of it. Don't underestimate the power of the hive-mind.
We have spent four years building a boostrapped non-SaaS product. We spend all our time talking to customers, shipping features, squashing bugs - living the dream basically. That's a really rare path to follow this decade.
We've also had four years of often well-meaning people trying to intro us to low-information 'startup investors' or god-forbid another startup 'accelerator'. We stopped talking to all of them about two years ago, but for a while there we got told repeatedly to build a SaaS product.
And the single worst piece of advice I've ever received which nearly made me puke, when we were in year one of our product and already had a reasonable number of users / clusters:
"Just grab all their information and stick it in an S3 bucket, that information is what everyone wants! Number of clusters, users, version, etc - you can sell that!"
Some people just don't understand that you can sell a tool that does something valuable without making your customer base some side product that you sell on the open market.
It has been hard at times when we see startups raise tens of millions, but we're now in a position where we are miles out in front of the pack, have a rock-solid product, a great roadmap yet to go, and s stack of great customers who we respect. At no point would someone else's cash or terrible advice have left us in a better position - though we might have ended up with a SaaS product instead..
Most customers like it, it keeps the company able to push newer features and maybe up sell them.