The road block for adoption will be Dart. Why they didn't just choose Typescript or go with native javascript is beyond me. No one uses Dart. It was probably the poorest design decision they could make.
Dart 2 is a very solid language. It's primarily an OO language but does have some functional elements in it. It's very similar to Java and C# and most dart developers think it's a better version of Java and C#. It has more features like stream, asynchronous and mixins built into the language. It's in fact a full stack language as you can write server side code in dart as well.
I think Google's long-term goal is to make dart/flutter compatible with mobile (iOS and Android), web, desktop (macOS, Linux, Windows). It will be truly write once and run everywhere.
Because then the Flutter team couldn't ask the language team to make extensive changes to the language when nobody had even heard of the Flutter team yet. Popular languages are popular because they already have a killer app.
You might as well ask why Brendan Eich invented JavaScript.
The project originally started with JS. It wasn't possible to make it run fast enough on iOS. iOS requires AOT, or a byte code interpreter. JS isn't very suitable for AOT, and JS byte code interpreters tend to be pretty slow too.
Also quoting one of the project founders:
"FWIW what we've seen in usability studies is that people who know JavaScript can pick up Dart without even noticing. (Literally, after an hour in a usability study we'd ask people what language they'd been using and they would respond with surprise, having not even noticed that it was a new language."
> Why they didn't just choose Typescript or go with native javascript is beyond me
Whether it was a good idea or not I'll leave for you to decide, but the reason that they landed on is that the Dart VM allows for AOT compilation, which is required for iOS, while still being flexible enough to do Hot Reload.
Tangential to your point, but I'm pretty shocked that dart didn't take off more than it did. JS is an awful language, and it was even worse at the time of Dart's introduction.
Perhaps people will pick it up. I would like to think that people will eventually stop religiously sticking to JavaScript. Right now, they are forced to use it because the alternatives are more or less worse.
I would like to consider it a beginning of something better.
Row polymorphism and algebraic data types if we want to talk about things Dart does not have, with an enormous ecosystem at your disposition.
If we want to prioritize a sound type system, why then go for a language that is for the most part Java but with no ecosystem, instead of something like Reason/OCaml, Haskell, PureScript which absolutely blow Dart out of the water as languages; or even if your number one priority is targeting Java devs with something more palatable, why not Kotlin even?
Why give artificial life to a language that was on its deathbed and brings absolutely nothing useful to the ecosystem yet will contribute to the amount of churn suffered in the industry?
Dart team is already working on some nice additions to the language. If ADTs are something many community members are looking for, I'm pretty sure it'll be added.
> and brings absolutely nothing useful
Dart is a language that's predictable (no WATs), performant, has the best built-in tooling to facilitate quick iterative development, the best package manager and can be used to build web, mobile and desktop apps with high level of shared codebase between them.
It's not the best language by any means but it's already a good language. And it's getting better and better.
Well that is a non-answer on every front. Of course, if devs start pouring effort into Dart it will get an ecosystem; but why would I want to when Dart offers nothing over other languages?
And yes, we can submit feature requests, and the language authors may and may not add them. I'd rather go for a language that further aligns with the expectations of a modern language from the start rather than plead with the authors to turn it into something it's not.
> Dart is a language that's predictable (no WATs),
Ok, so it beats the raw JS with no dev tooling development experience. That's the bare minimum.
> performant
Plenty of performant languages to go around, including many more performant ones.
> has the best built-in tooling to facilitate quick iterative development
What does it bring over any other language with a semi-decent REPL?
> the best package manager
You'll have to expand on this, it's a very bold claim.
> and can be used to build web, mobile and desktop apps with high level of shared codebase between them.
So can any compile to JS language, Kotlin, C#, Clojure, among others, and since you place so little value on ecosystem I'll throw a special mention to Idris in too, which can compile to performant JS, the JVM (no bridge necessary on Android), C (usable on iOS) and pretty much whatever; and almost guaranteed blows any other language you can name out of the water when it comes to modern features and being pragmatic.