With Eve, you still have to learn their home-grown programming language. That is non-trivial. If you didn't have to learn a completely new programming language along with its own non-standard terminology and idiosyncrasies then I would agree.
I am aware of what they are trying to do -- I've been following the team for the last 4 years. I liked their approach of starting from first principles, but at some point they lost the plot.
The important bit from that line of thinking is that there's a cost to adopting it and the benefits have to outweigh that cost. We haven't talked much about what those benefits are, so I get where you're coming from - it may indeed look like we've "lost the plot." :) Most of our content is geared toward people who are already interested in what we're doing and want to follow along with the work. It's very much not a pitch at the moment, that will be coming in a couple of months. You can pick up on some of it from what we have shown though:
- Eve programs are naturally tiny (no tricks/golfing/epic one liners). The CLJS libs you mentioned all have TodoMVC implementations that are ~5x as large as Eve's (just 63 lines!).
- There's no incidental ordering in the language, which means you're free to organize your program however you want. As a result, it enables truly literate programming.
- Another result of a lack of ordering is that programs grow very organically through composition. Want to react to an event on a thing someone else created? Write a block that matches for it. Want to add some fake data into the system? No changes needed, add a block that adds some data. Want to visualize where all the active users are in your app? Write a block anywhere.
- Eve programs aren't talking to a database, they are the database. That means no plumbing, no impedance mismatch, and no extra infrastructure is needed. A practical example of this from one of my tweets[1]: I can take our todomvc add three @global tokens (changed from "all") and we now share todo lists. No server setup, no client->server transport, etc.
- Eve's semantics were built for concurrency, asynchrony, and distribution. There are no promises, or thread synchronizations, or borrows.
- Correctness can be defined globally through integrity constraints, allowing people to safely contribute to an application without worrying about checking every possible invariant locally. No more null checks and Joey can't check something in late at night that allows people to have a negative salary.
- Everything is data. The file system, http requests, the DOM... That means everything can be queried and everything can be reacted to. Want to be alerted when the machine you're on is running low on memory? Write a match against the machine's memory and commit an email when it dips below a certain threshold. Want to know how many open http requests there are? It's just a query away. With no indexing, no passing things around, no real effort at all, you can ask any question about your system you want.
- Since everything is data, we can provide amazing tools. A very simple example here: [2].
Excitingly, the list continues on, we're just focusing on making Eve a lot more real before we tell people about it. It's up to us to prove and communicate what Eve brings to the table and we're taking that very seriously. My blog post about Light Table was never meant to be a big deal - I did it on a whim. Eve, on the other hand, is deliberate, well researched, and well grounded. As you suggest, it will take a lot to convince folks that there's a net gain to the switch and so we're collecting lots of evidence. Amusingly enough, in some ways we're actually returning to the original "plot" - one of the demos I want to do in October is a recreation of the LT demo. We finally have a language with the semantics necessary to fulfill that vision. :)
[1]: https://twitter.com/ibdknox/status/755450540104884224 [2]: https://twitter.com/ibdknox/status/760963855296016384
> Out of curiosity, would you say the same thing about Clojure? ...
Fair enough. :)
What is the largest thing you've written in Eve? I've found that Clojure strikes an amazing balance between semantics that help you reason clearly about problems and the flexibility to do things that the language creators didn't imagine. I guess I just haven't seen that with Eve.
However! If you tell me to stay hopeful about Eve, I will. :)