One of the weird things about Erlang is that, rather than being something like Ruby or Python (or Scala), that was created, and then started to see industry adoption, Erlang first was adopted by a large company, put in production, then released, and only later began to see wider adoption. The good side of this was that Erlang had a lot of resources available that most fledgling languages didn't have. The bad side is that they can't change it:
> Removing stuff turns out to be painfully difficult. It's really easy to add features to a language, but almost impossibly difficult to remove things. In the early days we would happily add things to the language and remove them if they were a bad idea. Now removing things is almost impossible.
> The main problem here is testing, we have systems with literally millions of lines of code and testing them takes a long time, so we can only make backwards compatible changes.
> Some things we added to the language were with hindsight not so brilliant. I'd happily remove macros, include files, and the way we handle records. I'd also add mechanism to allow the language itself to evolve.
Instead of having external revision control systems like Git or Subversion I'd like to see revision control and re-factoring built into the language itself with fine-grain mechanism for introspection and version control.
Well it does seem like an odd idea, though when one considers the motivating app, telephony, where the goal is code that runs forever, it's not so far-fetched. I could imagine using such features to back off minor changes to running code on the fly. Another domain would be air traffic control systems.
> Removing stuff turns out to be painfully difficult. It's really easy to add features to a language, but almost impossibly difficult to remove things. In the early days we would happily add things to the language and remove them if they were a bad idea. Now removing things is almost impossible.
> The main problem here is testing, we have systems with literally millions of lines of code and testing them takes a long time, so we can only make backwards compatible changes.
> Some things we added to the language were with hindsight not so brilliant. I'd happily remove macros, include files, and the way we handle records. I'd also add mechanism to allow the language itself to evolve.