There has been an active good thread about what's not great about Elixir. I come from Python/Django background, I've been thinking to rewrite a serious project of mine to Go because it's much faster and economic in terms of memory footprint. I need to know some the disadvantages of the language.
You are absolutely right to ask about possible downsides of a language before deciding to make the switch.<p>However, there is a problem with your question: Define "not great".<p>Every programming language has - and lacks - specific features, and this can be either great or not great, depending on who you ask.<p>For example, Go has no OOP type hierarchies and hence no inheritance and no polymorphism in the OOP sense.<p>Ask two persons about their opinions on this, and one will answer, "What, no inheritence? Total crap!", and the other one says, "Wow, that's great! No more projects that have gone unreadable and unmaintainable due to blown type hierarchy trees." Both of them may be right - from <i>their</i> perspective.<p>It also depends greatly on what you plan to use the language for. Take generics as an example. If you work in the data sciences realm, you would want generic programming for your numeric libraries, or for generic data containers. So Go would not be the language for you. On the other hand, many would never need generics at all in the area they work, and many even <i>love</i> the absence of generics and other complicated language constructs because it's precisely this what keeps the language definition small and the compiler blazingly fast.<p>Bottom line - take a closer look at the language features - both the ones that exist and the ones that were left out - and decide for yourself if this this is what <i>you</i> need for <i>your</i> project.<p>I chose Go in 2011 as my favourite "personal" programming language, and I don't regret it. Finally, I have a language that is clear and easy to read, that has no "magic" features that you never really can completely explain how they work, that compiles insanely fast, that cross-compiles to other architectures, that needs no pre-installed VM (ever struggled with Java VM version incompatibilities?), that has first-class language support for concurrency, and so on and so forth. I know about the downsides but they never have been an issue <i>for me</i>.
You're asking three questions:<p>1. What is wrong with the language syntax?<p>2. What is wrong with the implementation?<p>3. What is wrong with the community (other people's code, libraries, packaging, docs)?<p>Question 1 would lead to a pretty boring discussion, dominated by third-year CS students and fanboys of esoteric languages. Question 2 is almost as bad as question 1.