5 ms·
It is 4.0.0 largely because matz created ruby 30 years ago. matz is no longer the youngest - although he does look young, he is already 60 years old. He also s
by shevy-java 11mo ago
It is 4.0.0 largely because matz created ruby 30 years ago.
matz is no longer the youngest - although he does look young,
he is already 60 years old. He also said he has a retirement
plan, e. g. avoiding a situation such as when Guido quit (or
semi-quit) from Python (due to fatigue/frustration; Guido is not 100% retired but he is also not necessarily the solo-design-dev either, so it is a bit of a semi-retirement). So we won't know how long matz will be the lead designer of ruby - and who will succeed. Which may be reason to worry depending on who it would be. Imagine DHH takes over - man, there would be an insta-exodus of people ...
So while this release does not have a lot of content as such,
one thing that is quite big, even though right now it is not,
is Ruby::Box. There are many who don't understand it. The thing
is ... I understand the use cases for it. I was not involved in
any way with regards to its design, mind you - that was mostly a
japanese-group in design. But there are objective use cases for
it.
Many years ago I recall on IRC (we oldschool people used IRC back
in the pre-discord stone age) some C# hacker said he won't use ruby
because there are no strong namespaces, that is, someone else can
just overwrite things and then nothing works. Although I think he
was a drama guy, and any "danger" to be minimal, objectively he has
had a point, simply because ruby had no strong concept of isolation
here. Lateron there came refinements. Now refinements are strange,
because while I think the use case makes sense, the syntax is strange.
Syntax is one huge reason why I do not use refinements; but also because
I try to avoid putting my own modifications all over the place, largely
because I'd have to distribute that too, and also because modifying core
classes, while that has a use, should not be done excessively, IMO.
Ruby::Box kind of builds on that and makes the refinement use case more
generic (eventually; I am aware that right now this is not the case but
you need a transition stage. Syntax-wise Ruby::Box is also weird, so
hopefully the syntax gets easier too, but I instantly understood the use
cases. Many people don't, in particular about 95% who demanded a name
change away from Namespace to something else, really don't understand the
underlying use case.)
Now - making isolated per-project changes is not the only use case. For
instance, ractors could be simplified if you know that there are separate
ruby processes; ruby threads probably too. These I consider secondary
benefits though (and yes, that may be far in the future, who knows; when
python removed its GIL though, it put ruby under pressure, aka shape-up-or-go-extinct mode).
One thing I would complain a lot is that on rubygems.org, before RubyCentral went shopify-controlled-only, that people would occupy namespaces. Such as Configuration. I wanted to have a project called Configuration so I can do Configuration.new or Configuration.parse_this_file(). This is possible of course, but when it comes to distributing code, who owns that toplevel namespace? Normally the one who occupied the name first on rubygems.org, sort of. Via Ruby::Box, it should be possible to have ownerships. This could be strong or weak; weak as a hint, aka "psych is owned by ruby core ownershiper but it can be modified", or strong aka making it immutable. Both have use cases. Could also be both. Having this more organized would be really convenient for developers. I would not have to worry whether anyone else uses that "namespace". And of course we need a way to query this state from within ruby code too aka, say immutable:
"If psych is owned by ruby-core, continue to use it."
psych (for yaml) is not a good example here but you can think of any other namespace where you may only want to consider some gems/projects but not others. (Again, the use case may differ between strong and weak ownership, but the thing is that this is an improvement over the prior status quo.)
There are several additional use cases to be had but I'll stop here. What I find strange is that many people who complain, don't refer to the old issues and discussions. We had discussions before refinements were added. About 80% of the people involved, DON'T EVEN KNOW THESE OLD DISCUSSIONS. Either they have dementia, or these are young ruby users who never were active in the old days. It's very strange.
I am not saying all is perfect about Ruby::Box, in particular syntax-wise I'd like improvements, but many people don't seem to understand the use cases, and this is very very strange.
- dudeinjapan 11mo agoRuby::Box in its current form seems to radically miss the mark. Any namespace paradigm only has utility if it is widely adopted across the ecosystem. Javascript did this with ES modules 10 years ago--it IS possible--but it takes a ton of buy-in and effort from the community to achieve it. I just don't think Ruby has this "burning need" to have namespaces/modules/erm... "boxes". So we're likely to end up with sporadic usage of Boxes leading to inconsistent behavior.
- thebigkick 11mo agoCurious, why would DHH trigger a mass exodus?
- flykespice 11mo agoWould you keep using a programming language leaded by a racist? I wouldn't
- npteljes 11mo agoIf programming is just my hobby, then maybe. But would you, for example, quit your current job and look for another, just to change the programming language? I know I'm not that sort of person.
- chipotle_coyote 11mo agoI think it's not as much "if this guy becomes the lead I'm immediately quitting my Ruby job to return to PHP" as much as "if this guy becomes the lead I'm probably going to return to PHP for my next job."
- npteljes 11mo agoI have my doubts, even for this softer version. These are things where one might feel very strongly in a moment, or even for a longer time, but facing a real life decision, there are so many other factors. Of course we will never know the outcome of this, it's just my two cents.