On Perl 7 and the Perl Steering Committee
You should not expect to see a stream of unjustified dictates issuing forth from some secret body on high. You should expect to see perl5-porters operating as it generally did: with proposals coming to the list, getting discussion, and then being thumbed up or down by the project manager. This is what has been happening for years, already. Some proposals were already discussed by the project manager and some were not. If you eliminated any named mailing list for doing this, it would still happen. The PSC is a means to say that there is a default group for such discussions. If you were wondering, its initial membership was formed from 'the people who came to or were invited to the Perl Core Summit' over the last few years."
| From: | Ricardo Signes <perl.p5p-AT-rjbs.manxome.org> | |
| To: | perl5-porters-AT-perl.org | |
| Subject: | Q: what the hell is going on? // A: ... | |
| Date: | Wed, 5 Aug 2020 16:46:31 -0400 | |
| Message-ID: | <20200805204631.GA6591@debian> | |
| Archive-link: | Article |
Fellow list members,
I have gotten a lot of messages in the form "what the hell is going on?" and
it's one of those phrases that people use to mean a lot of different things,
and the way its delivered can bring a lot of different expectations to the
forefront. I think it's a really good question for perl5-porters to have
answered. If we're going to have a lot of disagreement, I want to make sure we
all know what we're disagreeing about!
I am trying very hard not to just swoop in at the tail end and throw another
opinion on the fire.¹ I have send a draft of this email to Sawyer and the Perl
Steering Committee to make sure I'm not standing apart from the rest of that
group but saying I can speak for them. That means that I am trying to
elaborate the "what the hell is going on" from the perspective of the PSC, but
I'm going to be pretty liberal about throwing in my personal perspective here.
Okay, here we go.
## ONE: TO BREAK OR NOT TO BREAK
The big idea actually being debated is, I think, about this paragraph in
perlpolicy:
> Requiring end-user programmers to change just a few language constructs,
> even language constructs which no well-educated developer would ever
> intentionally use is tantamount to saying "you should not upgrade to a
> new release of Perl unless you have 100% test coverage and can do a full
> manual audit of your codebase." If we were to have tools capable of
> reliably upgrading Perl source code from one version of Perl to another,
> this concern could be significantly mitigated.
This paragraph and ones like it form a policy that each new release of Perl may
add, but may almost never take away, behaviors. It also enshrines certain bugs
as canon. Mark Jason Dominus once wrote in parody, "Sure, it would be nice if
2+2 had been made to evaluate to 4 and not 5, but the ship has sailed on that
front." We're not there, but sometimes it feels like it. Every mistake made
before and made now walls perl into a smaller possible set of futures, with
very little recourse to break free.
The central Perl 7 question is not about version numbering, but rather about
backward compatibility guarantees. (There is another key question we need to
grapple with, in the current turmoil, and I'll come back to it. It is the
question of governance -- but that is *also* a question of perlpolicy.)
Sawyer's position is that Perl 5 is too constrained by backward compatibility
to grow significantly in utility or rate of use, at this point. There are a
few possible responses to that, including at least:
* I agree, let's figure out which constraints can, like chains, be shrugged
off so we can move ahead.
* I agree with this premise. Therefore, we should let Perl continue along
its current course, becoming ever more stable as it is used by an
ever-diminishing audience until it is given its rightful place in the Hall
of the Honored Dead.
* I reject this premise. There is a lot of room for forward motion without
breaking changes, if we would just stop trying to change the rules and move
forward.
I think there is merit to all of these positions.
Maybe there are kinds of backward compatibility that can be shrugged off
without disrupting the vast majority of Perl users, while making the language
easier to use and (very importantly) easy to *continue* to improve. This is
obviously the core hope of the Perl 7 plan.
Maybe even the best-chosen set of improvements will be terrific for a small
audience of Perl users, who will be able to avoid or easily adapt to
disruption and then gain ground from the changes -- but the great majority of
the changes will be painful, Perl use will rapidly fall off, and we won't win
any new users.
Maybe we can keep on the current course, finding ever-smaller niches in which
to fit new syntax and features, making life better for users of cutting-edge
Perl, and focusing on breaking compatibility is a symptom of fatigue, not
technical fact.
**The first thing people need to decide is probably what they think on this
question.** Here's what I think: there is room for forward motion without
breaking changes, but it's painstaking and tedious. It gets worse over time.
We aren't picking up new core developers for a bunch of reasons, but one is
"it's just too much of a slog to -do- anything." So I am in favor of making
selective breakages in order to make the language better and the implementation
more workable. I think this is the core of the Perl 7 plan, and the big
question is "what are those selective breakages."
## TWO: HOW SHALL I BREAK THEE?
A lot of people disagree with the premises that lead to "okay, let's break some
backcompat," and that needs one kind of discussion. Other people agree with
the premises and conclusion, but then don't agree on the specifics of what is
"safe to break."
I think it's important to just say very clearly: There is not yet a consensus
here, seemingly among any two people. There is not a cabal of people saying
"let's all break these five things we agree on, quick, before anybody can stop
us." I think sometimes it smells that way, but I have been in the discussions
about what we can and should change, and why, and there is no unified front.
The big agreement is, if anything, "Changing the version numbering to make it
clear when to expect breaking changes is reasonable."
There are a lot of specific changes being discussed. Everyone on the PSC seems
to agree on Perl 7.0.0 existing at some point in the next twelve months.
Beyond that, it's up in the air. The next most common discussion is "and we
change the set of features enabled by default."
There is also a lot of discussion about how to test this, what might break, and
so on. I know that not everybody will agree on whether there can ever be
enough testing, but the impact on existing code is a big question to be
answered. Nobody is arguing that will attract a new set of users and
developers by first alienating all the existing ones. The question is, can we
reduce the impact to only those people who are very unlikely to be affected by
the change anyway? (Answer: I don't have an answer yet.)
So, what *is* the specific plan? The plan is to come up with a plan. I have
heard suggestions that I like and suggestions that I don't like. I will hold
off on holding forth, just now, on what I like best. Instead, I want to talk
about how a plan gets come up with.
## THREE: WHY WERE THE FORMER DAYS BETTER THAN THESE?
Once upon a time, Larry presided over p5p and made decisions about what the
language would do, and this was mostly great because Larry was great, and even
when it wasn't great, we got an answer and we knew it was final.
Then Larry went and worked on another project and we got a string of other
project managers who also made decisions and whether or not this was great is
something to be debated by programming language historians someday.²
The decisions of those project managers was also final, but it rarely seemed
like it led to major strife, for a bunch of reasons. One of these was that
changes got workshopped off the list before being presented. When posted, many
key contributors had already had an argument elsewhere and could now
immediately say, "Yes, I can get behind this." This was not how all changes
worked, and I don't think it's even how *most* worked, but it was extremely
useful for contentious changes.
There was sometimes discussion of how we (where "we" was "the committers" or
"the members of fiveperl") might vote on matters, but I don't think ever took a
vote. (I may be mistaken.) Instead, the project manager managed by the
consent of the managed, established by pre-vetting some ideas and deeply
engaging with others publicly, and often doing both.
This process happened for "let's do Perl 7", but I think that somewhere along
the way, it fell apart. It seemed like consensus had been reached, but it had
not, and when an announcement was made, the expected "Yes, I can get behind
this"es did not all materialize. This meant that there was confusion in the
public discussion, obvious dissent among ranks that were usually closed, and
having a public discussion was going to be very, very difficult without first
establishing some consensus among a core group.
## FOUR: FIVEPERL AND THE PERL STEERING COMMITTEE
Lots of the pre-gathering of consensus back in the day happened on a private
mailing list called fiveperl. The membership was mostly the committers to
perl5.git, but not exactly. For example, as we added committers whose were
really meant only to make releases, they didn't get added to fiveperl. Also,
editing the membership of fiveperl meant dealing with humans who would have to
manually update configuration, which they always did, but it wasn't trivial, so
other committers never got added because it was a pain. The system wasn't
perfect.
Because fiveperl's membership became less reflective of reality, it wasn't how
discussion about the future of Perl happened. As I said above, what happened
instead turned out to be kind of a mess. In light of that mess, there was a
realization that this really needed to be fixed: we needed to establish a group
that served this function of discussion of what's going on without an unbounded
number of voices.
I believe that one of the most important things about fiveperl is that it was
not a decision-making body. It was a cabinet chamber in which the project
manager could speak privately with people who could say what they thought
without worrying too much about how their words would be construed by the whole
body of people interested in Perl. Someone could tell me, "Rik, you are just
tired, this is a bad idea, go to sleep and re-read your post in the
morning" and it would be fine, because it was a private conversation.
We're now grapping with a question of governance: Sawyer said, "Here's what
is going to happen" and a bunch of people said, "Can he even *do* that?" I
believe the answer is "yes," but I agree that it's not entirely clear. Or,
more specifically: if Sawyer governs the project through the consent of the
governed, how are the governed represented? That means:
1. Who are the representatives?
2. How are they empowered to act?
This question is not settled. There now exists "the Perl Steering Committee"
and it has no definite charter or constitution. (There's a page on the wiki³
but it's thrown together.)
Who is going to settle this? To my mind, it's something like the active
committers to the project. This needs clearing up because, for example, does
this include Stevan Little, who has a commit bit because he made a release
once?
And what does it mean to settle this? Part of it is, "We need the charter to
written, sufficient, and something that is not being argued about."
Here's what I can tell you so far:
* We're having irregularly-scheduled teleconferences to talk about what we
can agree on
* The primary function of the PSC (which I imagine as fiveperl v2) is to
provide advice and feedback on ideas to help refine them and form consensus
before they're put up for general discussion
* Almost certainly the only decision that it will be empowered to make will
be the removal of the project manager from office; in all other cases, the
final decision is with the project manager, who has a strong incentive to
see that consensus is established.
You should not expect to see a stream of unjustified dictates issuing forth
from some secret body on high. You should expect to see perl5-porters
operating as it generally did: with proposals coming to the list, getting
discussion, and then being thumbed up or down by the project manager. This is
what has been happening for years, already. Some proposals were already
discussed by the project manager and some were not. If you eliminated any
named mailing list for doing this, it would still happen. The PSC is a means
to say that there is a default group for such discussions. If you were
wondering, its initial membership was formed from "the people who came to or
were invited to the Perl Core Summit" over the last few years.
Finally, I want to express my very strong personal feeling that these kind of
preliminary discussions can't be effective if they are completely recorded.
The addition of an audience is a hindrance to free and open communication among
trusted peers. This is not a seizure of power if the body in question has no
decision-making authority that is not already vested in the project manager.
FIVE: RJBS IS FINALLY WRAPPING UP
To my mind what needs to happen is this:
1. We need to firm up the "here is what the PSC is and is not" document,
post it, and agree that it's done. Either that leads to people rejecting
the validity of future decisions or not, but we can't live in a constant
state of constitutional crisis.
2. We need to begin producing a clear set of intended changes, like "this is
the set of default features we want to test for impact on CPAN", discuss
those on perl5-porters, and take action on them. We need specific
avenues we're exploring or planning on, rather than a state of infinite
uncertainty.
Right now #1 and #2 are, in a sense, happening simultaneously. This is
painful, because it feels like we're getting proposed courses of action from a
body with no clear rules for existing and no clear set of powers, where that
set of powers may or may not be infinite and may or may not be legitimately
claimed. That question needs to be put to rest.
I don't think we can usefully discuss specific plans while we're still
concerned about the authority from which decisions flow, and I think we're
close to presenting an answer to how that works, which each of us on
perl5-porters (and beyond) will need to individually accept or reject as valid.
Until that happens, I just hope for a little period of calm and good faith.
--
rjbs
[1] MADISON: I've been fighting for Perl 5 alone, where have you been?
RJBS : … France.
[2] The ACM's History of Programming Languages conference, held only fifteen
years or so, was meant to happen this year but was postponed. Perhaps Perl
5 can make it into the next conference's agenda.
[3] https://github.com/Perl/perl5/wiki/Perl-Steering-Committee
Posted Aug 8, 2020 22:31 UTC (Sat)
by fest3er (guest, #60379)
[Link]
Posted Aug 9, 2020 10:28 UTC (Sun)
by mpersico (guest, #138735)
[Link] (11 responses)
Perl, version 7 "fork"? I believe that if there is a "fork" of Perl to be described, it's Raku. THAT was supposed to be the next Perl. And the people involved in it decided that the VERY NAME OF THE THING IT WAS SUPPOSED TO IMPROVE was a millstone around their necks and ABANDONED it. THEY FORKED. And so, ok, fine, just take 20 years of development, move on, and kick the rest of us to the curb, but let's be real here about who broke away and who stayed the course.
Ok. Now that THAT is off my chest...
For those who are complaining about Perl version 7, the proposal and/or Perl version 7, the process, let's be realistic: the Perl version 7 attempt wasn't going to happen by sitting around and platypussing it. The last time a committee got together to improve Perl it took 20 YEARS and THEY ABANDONED THE COMMUNITY they were supposed to be improving. Sometimes you need a proposal and a target to shoot at. We now have one. It is bounded and explicit:
- Version 7 is a major release. Major releases break backward compatibility. That's the way things work in Open Source and semantic versioning.
By bringing Perl into *really* using semantic versioning, we can grow the language with a contract. We've put up with lack of growth for 20 years. Things that don't grow
So, we have a reasonably scoped target that shouldn't sprawl out over 20 years, conversations that are influencing that target, and more buzz around our language than I've seen in years.
Thank you Sawyer, et. al. for jumpstarting the conversation. It is said that you can tell the true pioneers by the arrows in their backs.
And I apologize for all of the ALL CAPS. But you really have no idea how ticked off it makes me that Perl version 7 is described as a 'fork' when there's Raku.
Posted Aug 9, 2020 13:13 UTC (Sun)
by embroglia (guest, #140695)
[Link] (3 responses)
It breaks CPAN modules, so it's a pretty big deal. Those "defaults" could be applied with a single "use" line (see strictures, Modern::Perl or the feature bundles). Given the total lack of any other improvements planned for 7.0, why would any CPAN module target that version?
> Versions 7.2/7.4 are planned to have real function signatures
Already in perl 5
> and a real OO system
Already on CPAN, along with various other options.
Also, the Raku community didn't "abandon" the Perl name, it's more the other way around - see https://www.reddit.com/r/perl6/comments/d8oc14/on_renamin... or https://www.reddit.com/r/perl6/comments/cvps2r/yet_anothe... or the plenitude of other articles from back then.
Posted Aug 9, 2020 15:01 UTC (Sun)
by mpersico (guest, #138735)
[Link] (2 responses)
Because as a responsible module author, I am already using strict and warnings, so I am already version 7 compatible, so what "targeting" do I have to do?
> Already in perl 5
In Perl version 5, the only signatures available are contextual that allow you to not use parenthesis and not have to use references for arrays and hashes. Signatures that will allow parameter checking are add ons. I was speaking of a standard, in core, option.
>> and a real OO system
All add ons, and therefore all slow to start up. I am of the opinion we need better.
>Also, the Raku community didn't "abandon" the Perl name, it's more the other way around - see https://www.reddit.com/r/perl6/comments/d8oc14/on_renamin... or https://www.reddit.com/r/perl6/comments/cvps2r/yet_anothe... or the plenitude of other articles from back then.
Thank you. I'll look for what you believe I have misinterpreted.
Posted Aug 11, 2020 5:01 UTC (Tue)
by simcop2387 (subscriber, #101710)
[Link]
I think what the GP commenter meant was the experimental signatures that exist in current perl 5 builds. They've had a few changes over the development but are largely usable now. They have had breaking changes a few releases back where the order of using prototypes with signatures changed hands a bit, because of parsing problems that were discovered after the fact. As long as you don't try to use both at the same time on a function you can reasonably use them in modern perl code.
Posted Aug 11, 2020 14:42 UTC (Tue)
by embroglia (guest, #140695)
[Link]
Sadly, no - you're not: at least, not the way the current direction seems to be going.
According to https://github.com/Perl/perl5/wiki/Perl-Protocol-Declaration all modules need either `use v5;` or `use v7;` in order to work with Perl 7. `use strict` isn't good enough.
> In Perl version 5, the only signatures available are contextual that allow you to not use parenthesis and not have to use references for arrays and hashes. Signatures that will allow parameter checking are add ons. I was speaking of a standard, in core, option.
See the other followup - looks like you haven't encountered https://perldoc.pl/perlsub#Signatures yet?
Posted Aug 10, 2020 1:46 UTC (Mon)
by lutchann (subscriber, #8872)
[Link] (3 responses)
Posted Aug 10, 2020 2:06 UTC (Mon)
by mpersico (guest, #138735)
[Link] (2 responses)
No respect required. LOL. I am 99.99999% sure that "platypussing" is *not* a Webster-approved conglomeration of letters [ :-) ], but what I was trying to convey was the old meme about how a platypus is a mammal yet it lays eggs and has all sorts of parts from different animals, so it had to be designed by committee.
Posted Aug 10, 2020 2:40 UTC (Mon)
by lutchann (subscriber, #8872)
[Link] (1 responses)
Posted Aug 10, 2020 2:56 UTC (Mon)
by mpersico (guest, #138735)
[Link]
Posted Aug 10, 2020 11:59 UTC (Mon)
by fredex (subscriber, #11727)
[Link] (1 responses)
Posted Aug 11, 2020 1:44 UTC (Tue)
by tjc (guest, #137)
[Link]
Posted Aug 13, 2020 3:02 UTC (Thu)
by flussence (guest, #85566)
[Link]
Actually the name was changed after a tiresome decade of the Perl 5 frat party ruthlessly slandering Raku's volunteers around the internet for “undermining”, “hijacking”, “leeching” what-have-you from “their” language after realising they couldn't just republish all their books with a s/5/6/g for free money. (I'm being generous here by ascribing base greed to some of the blind hatred of the outgroup I've seen. I could examine overlaps with certain age groups and political leanings instead.)
After so long being associated with a culture of toxic 1999s hacker elitism, you bet removing those concrete shoes was a massive relief. The Perl community is now free to enjoy the future it's building for itself, and to hear how its own voice has sounded to the entire world all this time, without the privilege of scapegoating someone else for their own failings. Let the meritocracy begin.
Posted Aug 9, 2020 21:07 UTC (Sun)
by jafd (subscriber, #129642)
[Link] (5 responses)
Perl 7 is Perl 5.32 with changed defaults.
Which means it effectively has zero actual advantages over Perl 5.32.
Which, given it also breaks existing modules (because they are old, unmaintained, but have no practical alternative; CPAN is aging and this is a fact, despite whatever wishful thinking may the fans apply), means the number of advantages over Perl 5.32 is negative.
This also means that people who actually write software will need to wait for 7.008 or so before it grows a compelling enough feature which will be worth it to cope with breakages (native async, or yield?). Remember, it took Python 3 at least five iterations before bigger libraries could be ported. Some argue it was 6 iterations, and some tell that the damage was irreversible anyway. I'm not with those whiners, but some of their arguments are hard to refute.
Thus it means that 7.000 is only of interest to tinkerers with Perl itself. AKA not useful to the general public.
It was not unlike with Perl 6, where there was a big debate around the spec, then a big debate around runtime, and gosh do those years fly fast.
All stick and no carrot.
When you make a breaking change in your product, at least slip in a feature which will make the breakage worthwhile. And for pete's sake, start borrowing good things from the languages that proved over the last decade to be more successful.
Posted Aug 9, 2020 22:14 UTC (Sun)
by wazoox (subscriber, #69624)
[Link] (4 responses)
And now at last, Python 2.7 is obsolete. So what? I've made a presentation eons ago, in 2013, on how Perl has stalled mostly because of the misunderstanding about Perl 6 : people waited for Perl6 as a successor to Perl 5, and it never came to fruition, and in the meanwhile the horrible PHP grew by leaps and bounds and broke compatibility 3 or 4 times and now is arguably almost good, while Perl hardly changed and was for all practical purposes in maintenance mode.
We don't even have supported releases or properly maintained modules for such staple of modern development as AWS libraries. Seriously, who gives a sh*t about obsolete modules that are bit-rotting in the CPAN, for crissake? Hell, it's about time we "Move fast and break things" if we want to have some relevance in the future!
Posted Aug 10, 2020 20:56 UTC (Mon)
by NYKevin (subscriber, #129325)
[Link] (3 responses)
(My 2¢ on the string problem: We can argue until the cows come home about 8-bit strings and 2.x's str type vs 3.x's bytes type. However, 2.x's unicode type was a confused mish-mash of Postel's Law guesswork; replacing it with a stricter and safer interface was necessary. Whether the resulting type deserved to be called "str" is a harder question.)
Posted Aug 10, 2020 22:37 UTC (Mon)
by wahern (subscriber, #37304)
[Link]
Python 3 was just a continuation of the CPython source code, and always had a working, familiar implementation.
Perl 6 was an *idea*. The first concrete implementation, Pugs, was written in Haskell, but the community was invested in targeting Parrot, which aimed to be a cross-language VM. Eventually, and rather recently in Perl time, MoarVM became the primary vehicle. Much of the underlying abstractions are still there, but predictably nobody cares about that.
So the difference was that the Perl 6 community tried to do too many things at one time, and in particular left everybody in the lurch for over a decade without a trustworthy toolchain and environment to build a user ecosystem around.
Posted Aug 11, 2020 3:58 UTC (Tue)
by rodgerd (guest, #58896)
[Link] (1 responses)
There have, however, been two major differences in the long term; one is that some portion of people who were very upset by Perl 6 just went to other languages instead, while Python seems to have more people who are both stuck with Python, and complaining about Python 3.
The second, and in my opinion more significant, is that people who really wanted to stay with "Perl 5 plus improvements" stepped up and continued maintaining the 5.x series, adding various functions, cleaning up problems, and generally creating the base for what is now Perl 7. This is a stark contrast to the Python world, where there are a lot of angry people yelling at the Python core team, but none of them appear to be interested in maintaining a Python 2.x fork. Just shouting at others in the hope that someone else will do the work for them.
Posted Aug 11, 2020 6:53 UTC (Tue)
by edomaur (subscriber, #14520)
[Link]
But it doesn't seems that its author get much help...
Posted Aug 16, 2020 3:54 UTC (Sun)
by sleepingkirby (guest, #140823)
[Link]
I came to programming relatively late in game probably compared to all of you guys. But what I saw back then was a community that made sense in a world (outside of computers) that was ridden with vanity and self-interest. Every computer language was a different approach to problems. ASM for direct communication with computers. C++ for highly structured and efficient coding, PHP for loose and casual web coding and Perl for resolving (human or otherwise) language-based problems. Maybe it was my naive-ness from my youth, but I didn't see a lot of hate or flaming or lane tripping from one language to the next. So I don't know why all the hate and yelling and demanding is happening in a community that, with my admittedly limited exposure, was so nice to me when I Perl. When I learned Java, all the forums were filled with phrases like "what you should be doing is..." or "why are you doing that? you need to solve it like this." Qt is filled with "Why are you asking?" or "Why don't you know already?". Perl has always been "Here's your problem, it's a misunderstanding about this. Here's about 5 ways to solve your issue and the documentation of what you misunderstood."
I bring all this up because I feel like, and maybe I'm wrong, that the people that are trying to figure out where to take Perl next is more worried about popularity than they are about logic. If we defined the language to be a tool to solve language problems, the goals of where to go from there should be clear. What changes/improvements/additions can be provide to further that initial goal? If features are added to for the sake of conformity and/or familiarity, then the entire point of the language/tool is lost. In which case, no matter how popular it is or or how much of an user base, a tool without a function is no better than a random rock picked up off the ground. Yeah, a lot of people have access to random rocks. But I'm pretty sure no one is building skyscrapers or cars with random rocks for a reason.
So, let's address the bird and snake in the room. PHP and Python. Being a long-time PHP fan, I can say that PHP's backwards compatibility breakage is almost less breakage than cleaning house. PHP's backwards compatibility breakage worked because of a few things. 1) A long period of notice of deprecation while gives people time to adapt (on a personal level) and change (code). 2) The breakage happens for a solid reason that reflects the goals of the tool. A good example are mysqli. magic string and changing the global variables. All were done for either faster speeds and/or security reasons. 3) The breakages didn't compromise the core purpose/language. I have a site that I wrote starting back in 2004. To this day (still use it for my own purposes to this day), the only thing I had to update was the mysql connector. Python, however, is a good example of what not to do. Python, from it's introduction to many, was a solution looking for a problem. It boasted regex that had to be loaded after the fact. To quote the wikipedia article:
Getting back to Perl, I feel that this article and the email in it is trying to chase Python more than steal from PHP (which, as a PHP user, by all means. PHP stole a lot from Perl in the beginning and I think PHP would be honored to give something back.) . And maybe it's because we were all nerds at some point and we want to chase after a popularity we never had in our younger days. But the truth is, popularity contests have no real validity, logistical reasoning or good outcome in the end. Anytime something or someone achieves good things, it's not because they were popular, but rather they did good things. Popularity only broadcasts said achievement. And I know that a language dies if no one uses it or very little people use it. But consider this. Perl was made from one man. And it grew because it was useful. And while it would suck for Perl to be reduced to an one man team again, that would be preferable to a tool that has a large user base but no real strengths and/or advantages. I know that I, for one, if need be will retain and use Perl until the bitter end. Even if all the user base is gone and the committee is gone. As long as it's a good tool, I will keep it, use it and sing it's praises. Besides, very rarely does chasing after something else's user base turn out well. Because, if they already like the original, why would they something that it trying to be exactly the original? Just as an analogy (since I am Taiwanese), having business dealings with China and setting up in China was popular. But in the end, when push comes to shove, it's not the big wealthy and loud country that is a dependable partner. But the one that does the right thing and let it's action speak for themselves.
Lastly, on a personal note. I know Javascript and Python are the most used languages in the industry. Heck, even my job is mostly javascript these days (yes, I did end up becoming a programmer.). But the truth is, when I'm at home or when I need to get something done quickly, it's not node or javascript or python or c# or any of the other modern popular languages I turn to. It's Perl. Case in point. 3 jobs ago, we were building an react app with a node.js backend. At some point, we were using example data for the ORM. That example data had to be updated. But since it's ORM, it wasn't a simple search and replace. The lead programmer decided we should just grit our teeth and bear it. I asked why because I could update the code in like 20 minutes. No one on my team believed me because they couldn't do it in node or javascript or python. I insisted that it's easy in Perl. They reluctantly give me time to try saying something along the lines of how ugly Perl is and no one would want to maintain the code. I did it in 40 because I wanted the code to be extendable. When it was done, they still didn't quite believe me. When I showed them, they were in awe/disbelief. They then asked me to add the lone Perl script into the repository of javascript and node.js code. Which just goes to show, what's popular, new and/or standard isn't always good. I think we, as linux users, should know that better than anyone.
I know my voice is but a small one. I do hope it provides some insight. I hope it will invoke some change for the better. Thank you for taking your time to read this.
Posted Aug 16, 2020 10:01 UTC (Sun)
by ksandstr (guest, #60862)
[Link]
It's even more damning when seemingly none of the available discourse covers what changes, in particular, are there in the pipeline. Rather, it all seems like a bunch of meta w-k about hypothetical revisions that exist only as a vague sense of quarantine malaise. Worse, there seems to be a desire of certain "Perl 7" people to nick off with the runtime, its developers, and a majority of "the Perl community", and have their own "Perl 6" with blackjack and hookers, like their absence was ever the problem.
That suggests that the revisionists aren't confident in the validity or desirability of their changes as they relate to Perl as it stands today, but would be if Perl were reinvented as a green-field project instead. However, today's green-field programming languages are semantically identical[1] except for their authors' personal wibble; and while some of them may survive into the early 2030s, most will go the way of Delphi, SmallTalk, and Prolog. So the changes are discussed in the abstract, pre-filtered with the necessarily starry-eyed value calls of their own authors. Since abstract things need not be pinned down, discussion can continue until the last hold-outs have been worn down. How is that not "missives from the Secret Above" in effect?
Let these fools be the ones forking Perl, and calling it something else; see if "the community" runs right after them for all the cool new stuff they don't have. They can even name it Zim, after the enchanter.
This goes for hipster control flow du jour as well: if it ain't from Algol, it's syntax sugar. Perl has that to a degree where it doesn't need a macro language or preprocessor, which is cool as hell. Rather than import dumb syntax from other languages for silly reasons like boot-camp compatibility (i.e. looking like JavaScript), They Ort Ta check every half-dozen years or so for recently-established features that survived the neverending human wave of easily-impressed newbies[2].
[0] among others, it's a massive disservice to huge existing code bases, which lose all the validation that can be had from having been in production on one of the few properly stable languages around. "oh, I upgraded perl and now half my regular programs are filling up stderr with deprecation warnings."
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
- Version 5 will be maintained until you can get to version 7. If you even want to.
- Version 7.0 will simply be changing defaults. A bit more discipline. Big. Deal. That is a characteristic that a professional language should have anyway. That's something professional programmers should do anyway.
- Versions 7.2/7.4 are planned to have real function signatures and a real OO system, order yet to be determined. Those are characteristica that a professional language should have anyway.
die. The discussion that ensued after the announcement looks like is has already influenced the direction: 'use v7' directive and the idea of NOT enforcing strictures for -e scripts (that's what -E is for anyway).
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
>Already on CPAN, along with various other options.
On Perl 7 and the Perl Steering Committee
>
>In Perl version 5, the only signatures available are contextual that allow you to not use parenthesis and not have to use references for arrays and hashes. Signatures that will allow parameter checking are add ons. I was speaking of a standard, in core, option.
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
On Perl 7 and the Perl Steering Committee
"Rather than having all of its functionality built into its core, Python was designed to be highly extensible. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[35]"
It's trying to be all things at all times. But the truth of the matter is, matter, energy and time in the universe is finite. As such, nothing can be all things. And while Perl is often called a swiss army knife, that's not because it was all things to all people. It's because what it's built for can be applied to a lot of things. Reading all thing, one might wonder why Python is so popular while Perl is not. To that, I can say Python is popular for 3 reasons. 1) Once you learn it, it locks you in. Tuples are ordered arrays. Dictionary are hashes. The difference between the two names is, arrays are called the same thing in most languages while tuples are used in only a few. 2) It's easy and lazy. And while sometimes those can be good things, most of the time it's not. 3) It's popular because it's popular. Very rarely do I hear good things about python programmers. Those that I do hear good things from are usually Python programmers. Having a very vocal user base does help in spreading the word of it's benefits, but it does nothing to address the problems with the code itself. But, the more people talk about it, the more people listen. And those that don't know or haven't used it (or if that's all they used) will attest to how good it is because other people say so, a lot of people are using it or it's easy. Of all the different languages I've had to deal with since those early days in 2001, Python code has consistently been that fail or crash due to bugs, poor design or just passage of time.
Don't do that; it's silly.
[1] these languages have equivalent features which rather than the authors wanting to have, were unable to avoid. For example, their for-each syntax is either limited to built-in array types, or there's an IEnumerable in the standard library -- so there must also be a form of polymorphism that's visible (and therefore tied) to the compiler.
[2] newbies, being new, will sing praises and persecute heretics in the name of (say) design-by-contract, because that's all they know. Some will always be newbies, hopping from friendly tutorial hugbox to another forevermore.
