To show more examples that we have always been proactive in discussing the major new features in every release, I will link to examples of flag features that have been proposed and discussed with the community:
v1.5 - Behaviours, defimpl and overridable
and a follow up later on about child specs in Goggle Groups. We also explicitly reached out to many other members in the community, such as book authors.
v1.4 - Registry
The Registry is one of my favorite examples because the community stepped up to validate that the Registry was indeed scalable, running benchmarks on machines up to 40 cores.
v1.4 - On GenStage and Flow not being added to core
When we decided GenStage and Flow should not be part of core, we communicated that too:
v1.4 - A declined proposal: removing char lists
This is an actually nice example of where we forgot to communicate why we decided to not add a feature. Then folks asked for clarification and we rectified it.
v1.3 - Calendar
This one we worked directly with Paul and Lau which were responsible for the existing calendar implementations and we came up with a proposal for the data types:
This one has no discussion on Elixir Forum because I believe that’s about the time we were starting to ramp up on the forum. That’s why you won’t find previous proposals on the forum although they have always been on the mailing list.
All other proposals above can be found in the Elixir News section in the forum (which is what I did right now) or by searching in the mailing list.
You would find the other features and bug fixes in previous releases in the issues tracker. Those don’t have proposals because they are smaller in scope. You will also see that many of them have been implemented by the community and not the core team.
v1.6 - A counter-example: the code formatter
There is actually a counter-example where the development happened behind “closed doors”. This was a deliberate decision because style discussions can be quiet opinionated and heated. So unless it is clear to everyone that the goal is consistency and not personal preference, it can be very hard to make progress (and we did have some heated discussions in the core team! ).
Still, when the prototype was done, we merged it into Elixir and got more than 200 PRs from 84 people over the course of 3 days to format the Elixir codebase. The feature is in master now, about 3 months before the next release, for anyone who wants to give it a try.