You can do that with any language and any serverless stack around, but it still requires work. I'm struggling often to make my teams accept that this little extra setup work will let you iterate faster and often it's not that obvious that it would, since the overhead of the process is non-zero (for some value of zero).
I can't wait to try darklang; I'm really curious. I just need to think of a pet-project that would be suitable for the beta.
Like how is that a 10x improvement on modifying a Lambda function in something like Netlify and clicking "Deploy"? And just "Rollback" if it goes wrong? For most products, which have relatively small user counts, they don't gain much from gradual rollouts.
Right now I'm looking at it for what it is: food for thought.
For me this gradual deploy matters because:
1. it generalizes local development and production and possibly also staging/testing environments in between. I don't have to setup some docker-compose environment that sets up the whole shebang locally. I don't have to setup complex CI systems that spin up an env for integration tests. And I don't have to bend over backwards to ensure that both local and automated test envs are reasonably similar so I can troubleshoot when stuff fails only on CI.
2. even if I don't have that many users, and even if my uptime is not that important; I still don't want to unduly break the application. Somebody will be watching and complaining, if only your boss. What usually happens is that people tend to batch changes and have periodic pushes to production. I've seen products with relatively small user bases have very time consuming release processes. Starting weekly, then biweekly, then monthly. The more the pain, the less frequently you ended up doing them . The less frequently you ended up doing them the more painful they become. Then you end up with somebody dedicated on that because this "release engineering" is becoming clearly a bottleneck. And you do more of it, because now it's somebody's job.
Ah, so "Dark" as in "dark launch"?
When we were thinking about the scope for Dark, we briefly thought about trying to remove all the complexity for frontend too. However, when thinking about how Meteor went, and specifically about how much stuff is going on in the frontend world, we thought it would be simpler to understand if we stopped at the HTTP boundary.
Bear in mind that there are tons of applications that dont have frontends, especially ones that are just APIs.
But how many people are writing APIs and either
1) aren't experienced enough to figure out how to write a Lambda function (using a wrapper FaaS like Netlify), or
2) are experienced and are willing to sacrifice the ecosystem you get from open-source/widely adopted languages/frameworks for a marginal amount of convenience over something like Netlify, where they can use whatever language they already know.
Maybe I don't see it and it's actually a lot of people. But in all my time working on APIs, I've never heard of someone writing an API who wasn't already a decently experienced developer.
Typically the front-end facing solution would come first for them, because why would they build something people like themselves would have trouble figuring out how to use? Which is where most no-code/low-code solutions are targeted for that reason.
Obviously, no one is going to leave something that's good for something that's slightly better with a ton of downsides.
So either: 1) Dark is a lot better, like way way way better than what's come before, or 2) it's not, and no-one will use Dark.
We can probably agree that one of these two are true, right?
If we're talking about a front-end dev, they're probably using React, in ES/Typescript. Any backend product targeting these devs would be nuts to not start by offering a JS environment, I would think.
Hence why every FaaS thus far starts with a Node env.
Well, I think this whole idea is wrong, but at least you quit while you were ahead with that one.
Dark being a proprietary language means most "experienced" or "full-time" software engineers probably won't touch it. You can get pretty close to "deployless" with FaaS services now anyways in whatever language you like.
So if this is being targeted toward low-experience/no-experience developers that just want to get something running, how is it addressing the problem much better than all the no-code/low-code solutions?
For that market, I don't think having them even deal with a separate "backend" and "frontend" is a good idea, they should just be dealing with logic only and have that whole concept abstracted away.