hostile is maybe too strong a word. a better way to characterize it might be a perceived immaturity where all discussions are life-or-death and there is little room for compromise or consensus. any criticism or even suggestions are met with a passionate defense rather than any attempt at empathizing with the other point of view
I have to pay more attention to this. Do you mean the discussions around new Elixir features, or do you mean critique of rebar ?
I don’t really see a monoculture—It might be true that there are some solid implementations that most people are using, but anyone is free to do their own alternative implementations: plug/raxx, ecto/moebius, etc. There is no guarantee that people will use it, but nobody is stopping anyone, and I don’t see people like Peter Saxton (creator of Raxx) being banned from speaking at conferences because he dared to build an alternative to Plug.
And what other software ecosystems do we lack integrations for?
Speaking of solid implementations. It is true that the barrier to implement alternatives is getting really high. Projects like Phoenix, Ecto, and Absinthe all have books written about them—so you would have to make the alternative and write a book.
I am (personally) not going away from the BEAM world and Elixir, actually I am enjoying my stay here
Management in general perceives that it’s more difficult to find “Elixir devs” (note the double quotes) and they maybe heard about it, not always.
It’s true that the management should not choose the tech stack, but this happens in certain companies.
Not sure what to do about this. And sometimes a startup or a company follows a success case… (even the technology that they use)
Building a team that works on the BEAM
My here tip would be, to have at least one experienced person that can bootstrap a dev coming from any programming language.
And usually this happens in a kind of speedy way compared to learn it by yourself during the evenings after your official job (surprise?)
One other point is that people usually don’t grasp OTP because it’s kind of unique to the BEAM world, albeit you don’t have to use it directly in full power to be productive on the BEAM IMHO.
i.e. using a functional language seems to me already a maintenance boost compared to classical OOP languages.
Regarding this point, one person might ask: Why should I use Elixir, instead of rust, go or whatever? What advantages it brings in day to day development?
Someone in this thread mentioned devopsing on the BEAM, which might be perceived as a barrier (?)
As a side note, some people (friends) mentioned that they would take advantage of k8s instead of the BEAM with another tech stack (I am not that confident with k8s, so )
Last note: sometimes the community might be perceived as too advanced (regarding certain topics)
Maybe more introductory material that are explaining the use cases, the whys, the hows etc might be useful?
mm, maybe I went a little bit off topic, anyway these are my 2 cents
I moved on from a team using Elixir to a new gig using F#.
Although I still think BEAM is the best platform for stateful services
I also felt like I was risking becoming an ‘Elixir Developer’ rather than a well rounded software engineer.
I still love Elixir and try to stay in touch with the community by maintaining some open source packages.
Definitely, interesting stuff is happening with F#, though I am more of an OCaml guy, if I should look closer into that space.
Personally I have been using mostly Elixir/Erlang for the last couple of years, and I have never felt as “well rounded” as I am now. I don’t think I would ever pick up a Java/C++ style object oriented language though…I think I should be able to pick up any functional language if needed be in fairly short time, even an odd one like Eff.
I guess more explanations of how stuff is done in the Beam, and how others go about it would be interesting for the community (I think this happens to some extend already)
Thanks for clarifying.
I’m not sure labelling it as immaturity is fair either tbh. If you’re talking about your ideas not being actioned upon as you might like, my thoughts on this is that generally those who create languages, frameworks, libraries etc, are usually fairly smart - smart enough to spot a good idea when they see one - so if I have a suggestion that I am convinced makes sense, but I am ultimately unable to persuade them to incorporate, I see as a personal failure on my part.
We have to remember that people who make popular languages/frameworks/tools get lots and lots of feedback and suggestions, as well as having to consider things that we might not ourselves (such as the on-boarding of newcomers) so we really do need our ideas to stand out and ‘make sense’. Sometimes that means doing all the leg work, by properly researching and analysing what we want to put forward and by making our case in as convincing a way as possible - to the point where what we are suggesting is so compelling that they can’t not want to incorporate it
If you feel very passionately about something, sometimes changing your tact and trying again is worth a shot. Other times we just need to accept that we did all we could (or rather, did all we were willing to) - it really does depend on how much it means to us and how much time and effort we want to put into it. On the whole, I have found the Elixir and Phoenix core teams very receptive to ideas, in fact we have a history of changes being made due to comments and discussions on this very forum
(one could argue this is a good thing!)
That’s the thing! It’s a balance - on the one hand you want robust discussion and perhaps a somewhat clinical dissection of ideas to truly see whether they are worth pursuing, and on the other, you don’t want endless debate.
For me the priority is always progress, and when it comes to discussions, each post should ideally be measured by whether it adds something of value to the discussion (i.e. hopefully helping move things forward)
I liked your reply, not because I share your sentiment, but I think you should be allowed to share your opinion and be taken seriously.
a hostile community that reacts poorly to criticism
Personally i don’t think it is hostile, but there is a percieved pushback culture to a lot of small libraries, usually commented with “why should I use this if I can just implement it myself instead of introducing another dependency?” I am certainly guilty of that myself and I have been trying to reduce the amount of homebrew solutions in favor of packages lately, mainly because I came to the realization that every single line of code I write, I have to maintain. I am more than happy to load that burden on the community
a monoculture around libraries and frameworks (phoenix, ecto, mix, cowboy)
Probably a direct result from Problem A Those libraries are awesome and usually there is no need to even look for something else, and even if someone attempts to develop an alternative, the first question will always be “but why? Can’t you just use X like everyone else?”
lack of support for integrations with other software ecosystems
Nothing to say here, valid point.
Overall I am very, very pleased with Elixir and the community. Whenever there is a question, it is answered very competently and thorough, sometimes backed up by an almost comical amount of scientific papers, talks, blogposts and books. But yes, i sometimes get the impressions that some of those experts have lost touch with the troubles a new developer goes through and as a result people are hesitant to present a new library for the fear of being picked apart as “useless” or “unnecessary.”
However, I think that is kind of a “self healing disease” it would probably go away the more newbies get involved in the community.
On that note, I’ve been enjoying learning the Elixir language, its ecosystem, and the interaction with the community. So, I’m not planning to move away from it any time soon
However, I can tell you why I decided not to build a graphql endpoint with Elixir just today. In brief, the couple of ecto adapters that exist for Oracle are still lacking some important features, e.g. the ability to export a full database structure. In general, it was a surprise to me that there’s no “official” adapters for the major commercial DBs in the ecosystem. I mean, we all love open source, but Oracle and Microsoft are not going away any time soon. Since I deal mainly with large corporations, this is not a small issue for me.
Anyway, sorry if this is slightly off-topic
I still could not call it immaturity. And I don’t see any life-or-death discussions here, can you point us to one?
As for compromise or consensus, these are kind of like beauty – it’s in the eye of the beholder. I assume that you attach some context to those terms; a context that for you is implied and obvious but is invisible to the rest of us. I’m curious to be pointed at a discussion you would call non-compromising and non-consensual?
This is, above all, a technical forum – sprinkled with camaraderie and constructiveness, too. What do you define as a “passionate defense”? The main arguments in most posts are revolving around technical merits or if they bring something new and interesting to the table. They don’t focus on the good intentions of the author of a fledgling library. Whether they should is a separate discussion but I am mostly leaning to “no” – and I know that others lean to “yes”.
If you are aiming at the arguments against alternatives to the mature libraries, there are several factors to consider:
- Pieces of software like Phoenix, Ecto and Absinthe (and Elixir itself) are made by some seriously smart people who have proven themselves and have a lot of credence – and on top of all that they also wrote books. This gives the working programmers a peace of mind and they prefer those libraries.
- Any new library/framework will be immature at the start and will lag behind the established libraries for a while. This is normal; the author(s) will have to pour a lot of labor to start getting even remotely close to the de facto libraries. I believe this is why many OSS maintainers give up – it gets tiring to fight an uphill battle. Obviously I don’t have any evidence to support these sporadic observations.
- Programmers with day jobs who cannot spend most of their time on R&D rarely see a reason to disrupt their chosen stack – or be interested in the would-be disrupters. Many of us want to get our job done and move on to the next tasks, to our leisure time, to the paycheck.
- Nobody is stopping anyone from discussing and making alternatives to libraries or tools. Maybe you got disappointed that not many people showed interest to a topic of yours? Sorry if that’s the case. It’s still not the same thing as a community being hostile or immature however.
If you feel under-appreciated, I’d never claim it’s your fault. Not at all! Give the benefit of the doubt however. There are many factors about why certain posts are either never responded to or simply “shot down” – time of day, day of the week, and yes: the overall incline of the community (to me this community seems really practical).
Sorry that you felt disappointed. But I cannot agree in clear consciousness that this community is immature. Both sides should try and clear up the confusion that led to your disappointment. Are you up for trying? Would you point us at the posts that let you down?
Where are you located?
Are you a freelancer?
If I were to leave Elixir/Erlang it would likely be because of the dynamic type system. Over the last few years my development style has changed and I’ve found myself more comfortable and productive with static type systems.
I’ve not yet left Elixir/Erlang because the productivity boot I get from Elixir/Erlang and the BEAM is greater than that I get with static types. Hopefully one day I’ll be able to have both types and the BEAM
a monoculture around libraries and frameworks (phoenix, ecto, mix, cowboy)
I hear that. It would be great if the alternatives to Phoenix, Ecto, and Cowboy had more momentum.
I think rebar3 is an good alternative to mix, so I’m happy there, ignoring the problem of Elixir libraries (IMO) miss-use of Mix.Config.
Why though? What exactly is to be gained?
Apart from Raxx which claims to address the streaming sockets paradigm better than Plug – something I cannot confirm or deny because I haven’t used websockets yet – I have never seen libraries that are able to disrupt Phoenix, Ecto and Absinthe in a compelling manner.
There are many others that don’t aim at disrupting them. And most of them are doing very well.
Not getting into the details of any specific libraries, I think ecosystems benefit when there are multiple teams collaborating and competing in the same problem space.
On your spreadsheet/poll mark my vote only to: "Improve correctness."
(Static type system. Catching errors before execution not after.)
Thanks for asking! =]
I dont see myself moving away from Elixir anytime soon. Over the last couple years I usually start attempts at learning a new language, and have yet to find one that can match the ergonomics that Elixir can provide.
I’ve been fortunate to have pushed Elixir fairly early at my company. And to have been in a position that my voice can be heard. Started with microservices, and have since moved on to going through the full development cycle of 2 fairly large applications. We were mainly a Ruby shop before - and I dont think we could have really achieved the same results as what we currently have in place. Certainly not in terms of server costs. We have another largish Ruby app that is similar in scope to one of the Elixir apps - and it easily costs 10x what the Elixir app costs. Those are numbers that even the business sided folks love.
Once you have people that can develop in Elixir - the savings will easily show themselves in speed of development over time (code complexity) and server costs. Especially as the ecosystem matures with more packages.
I hear you there… The company I work for has become an elixir focused company now, but it took some work. We are mainly doing Shopify apps, so me being involved in your project helped a lot, and recently I was the proud merger of our elixir juniors PR. It was a tiny PR, maybe a si for line of code, but that’s how you get started!
I pitched the idea to make some of our internal solutions open source just today, but it’s always an uphill battle…
Is there even a user base for the phoenixe-shopify generator I am thinking of? Would anyone want to try use the graphql endpoint with ecto changesets? And many more things.
I will keep going in that direction, but sometimes I doubt myself and everyone… A little reassurance is greatly appreciated
The desire to see other libraries gain momentum is often met with this exact response. And thats exactly the problem that people are mentioning in this thread. This isn’t to say I don’t like those libraries because I do. I use them every day and I’m happy. But saying that theres nothing to be gained by exploring other ideas is exactly the kind of mentality that I personally find very frustrating.