This entire discussion brings up a larger issue to me. As a newbie to the community, looking objectively at it from the outside, I think Erlang has come to a crossroads of sorts. It's on the verge of realizing a vast potential. Choices that are made now are going to affect whether it ends up on a path to fame or obscurity.<br>
<br>It's the only language out there that really offers the feature set necessary to easily take full advantage of the emerging multi-core/multi-CPU/distributed setups that are soon going to be the norm for hardware environments.<br>
<br>By virtue of being a functional language, it's never going to be adopted as a "code monkey" language like C# or Java. Typical enterprise-level outfits aren't ever going to have their rank and file developers using Erlang. I believe Erlang's niche will expand into a middle-ware platform that is used to abstract away the details of traditional multi-threaded and distributed architectures. It will be the mid and high level developers and architects, or 3rd party developers, who engineer this. Code monkeys will continue to do their work in imperative and OO languages that plug into the Erlang-based middle-ware. So, in this respect, demand for competent Erlang programmers will remain high, as well as the salaries they can command.<br>
<br>What's going to make or break this deal is polish and marketing. Annoying terms to be sure. As a lone, individual programmer, I love Erlang. Imagining it from a product manager's perspective, though, I would never choose it in its current state. Most enterprise-level managers won't take a language seriously and adopt it for their project if you tell them the standard dev tool is Emacs or an Eclipse plugin maintained by a couple people.<br>
<br>The official documentation available for Erlang/OTP right now is only just adequate and painful to slog through and decipher. Compare it to Sun's or Microsoft's or even PHP's web documentation, though, and it appears lacking and less clean. The community is slowly growing, but good tutorials are still few and far between, are usually full of grammatical errors, and are usually very difficult to locate via Google searches.<br>
<br>It seems to me that all the pieces are there. Erlang has support for all the little things that make or break a platform (unit testing comes to mind). What it lacks most right now is integration of all those pieces into a unified, standardized, and understandable whole. Managers and developers like to feel secure and looked out for. They like to feel as if there's competent, powerful support out there for the language they've chosen and that it has strong, directed leadership guiding it towards a definite vision. This convinces them that it's not just a fly-by-night fad and that they won't be left hanging out to dry.<br>
<br>Joe does a great job of generating enthusiasm about what Erlang has to offer technically. What Erlang has right now though is an image crisis. It has no marketing or polish or pizazz behind it. It lacks an efficient, organized committee-based senior community. It lacks tools with support for the things Erlang does best. (Is there any reason why Erlang tools can't or don't support something like Intellisense for the patterns a function or receive block is able to match; or the possible patterns returned from a function?)<br>
<br>Is there any reason why no one has asked for an interview with Charles Ying about his team's experiences? You've got AMAZON using Erlang. That's a big deal. How about the guys over at Vendetta Online? You've got the entire video game industry (*cough*Blizzard*cough*) waiting to be sold on the virtues of Erlang. What about the YAWS people? You need to all be scratching each others' backs here. If all you get out of Amazon running simpleDB on Erlang is a blog post by Ying stating the fact and suggesting you read Joe's book, you're missing out on a lot of hype.<br>
<br>This string as lists debate is a perfect example and is much needed. Any modern language that doesn't have powerful, unified, built-in support for something as simple as a string will be laughed out of the industry. Does Erlang have an official User Experience team looking at this stuff? A "higher authority" that sets standards that both minuscule and massive things like method naming conventions, APIs, or new features must pass through before being adopted?<br>
<br>Is anyone working to update the Erlang website to give it a more modern face lift? Hell, 50% of why Ruby and RoR got popular was because they had some glossy buttons and gradients on their page.<br><br>Please understand that these criticisms are coming from a total Erlang newbie that really does enjoy and care about the language. Most of the questions are rhetorical. They are just things I'm throwing out, as a newbie, that other average newbies will be considering and asking about when they themselves look into Erlang. I hope you understand how important little things like this are to the further success of the language. I really want to see Erlang realize its full potential.<br>
<br>-Colin<br><br>