6 ms·
I won't comment on Parrot, because I know nothing of Parrot or Perl 6 internals. But from what I hear and read on the internet, the new VM, Moar VM is doing pre
I won't comment on Parrot, because I know nothing of Parrot or Perl 6 internals. But from what I hear and read on the internet, the new VM, Moar VM is doing pretty good as a parrot replacement.
P6 still faces an adoption cycle that's more difficult than that of Python 3.
I don't see how, especially when p5 developers are saying they will continue to support p5 long after p6 is released. And p6 is such a far drift from p5 that you can almost call it a new language. And no one if their right frame of mind will re write all p5 software in p6.
So it will be p6 for any new projects and p5 supported all along.
There's no plan for P6 to replace Perl (partly to avoid that adoption pain, for one, and partly because P6 has taken so long, there wouldn't be any Perl users remaining unless P6 had publicly changed its strategy).
From what I read(Again, I have no personal contributions or sources and I rely on what I read or hear on the internet) in http://jnthn.net/papers/2014-fosdem-perl6-today.pdf http://jnthn.net/papers/2014-fosdem-perl6-today.pdf [pdf] rakudo is very close to spec completeness. And bulk of the effort currently is implementing last bits of spec and improving the speed.
Python's transition hasn't been quick or easy, but it's gone much, much better than the P6 fiasco.
Python is hardly comparable with Perl 6. They just changed a print statement and iterators in Python 3. Perl 6 is a very different story completely altogether.
chromatic is hardly a simple bystander in this issue. He's been very public in his feelings towards P6 and how it's dealt with Parrot, from back when he was very involved with Parrot. I assume he thinks he's giving valid advice as to the whole P6/Parrot thing, but the visible vitriol leads me to believe there's definitely some emotional underpinnings as to his opinions.
Which is a shame, he's one of the most insightful people I've ever followed (I miss his more frequent blogging at modernperlbooks.com, which I've followed since it's inception).
Unless the Singularity has occurred and no one told me, everyone has emotions. I prefer, however, to discuss facts backed up by primary sources, such as the commit stats linked earlier or mailing lists or IRC logs. Do you have an opinion about the situation based on those?
Of course. I'm not making some pie-in-the-sky assertion that arguments should be devoid of emotion, just that I had noticed what appeared enough emotion to overrule civil discourse in the past.
That said, after re-reading your original comment, I don't see much to disagree on (except for one thing, which I'll cover later), and it doesn't seem to exhibit many of the problems I was alluding to, so you have my apologies. It was inappropriate of me to bring that up in this context.
What I should have commented on was that Parrot was all but dead long before MoarVM put the last nail in the coffin. I doubt the announcement did much beyond cement what most developers already knew - Parot was not well suited for it's original purpose, whether you view that as a VM for P6 or a general purpose VM, specifically because for too long it had tried to follow both paths to the detriment of all.
My impression of Parrot, as an outsider who consumed quite a bit of the public information available about parrot development, ended up being that Parrot was too experimental of a VM, and never moved beyond the stage of being a fun sandbox for developers to come experiment in. When P6 was still coalescing around how to implement what was in the spec (and revising the spec in light of that), this didn't matter much. As P6 increasingly moved towards an actual implementation, Parrot's misalignment with what P6 needed along with Parrot's deprecation policy caused many problems between the projects.
I think at one point, prior to MoarVM being announced, there was still a chance Parrot could have been "saved". But by saved, I mean continue on as a sandbox for developers to experiment in, possibly without ever culminating in a VM that was useful as primary target for a language. If enough developers would have been willing to continue with this truth exposed (and I'm not sure enough would), then if Parrot and made the choice to continue as a "general purpose VM" instead of primarily a P6 target, it may have survived as a sandbox.
I'm interested in your opinion on this interpretation - not because I think any of it is news to you, I'm sure it's not - but the opposite, in fact. This view is in no small part informed by your own writings on the subject over the years.
P.S. I was completely serious before when I said I missed your more frequent posting on modernperlbooks.com. I hope that no matter what the future holds for you, that it also includes you writing about technical issues in blog or book form (and enjoying doing so!). I know you've helped solidify my thinking on a great many things over the years, to my great benefit.
TL;DR Imo, for at least the next year, the P6 project needs to encourage contribution by folk who enjoy creating an entire system and discourage use by folk who just want to get stuff done.
----
I've loosely followed P6 since 2000; daily read the log of the central hub of P6 activity -- the IRC channel #perl6 -- for the last 3 years; and summarized it daily for the last 2 years.
I am concerned about folk getting the wrong impression about Rakudo's readiness for general use by mainstream programmers that just want to get stuff done.
I started using the following disclaimer a year ago and I think it still sets expectations appropriately:
Perl 6 is not remotely as usable and useful as Perl 5; it has dozens of users, not millions; it is 100-1000x slower than Perl 5 for a lot of stuff; the P6 documentation is immature and incomplete; the spec has not reached 6.0.0; the Rakudo compiler has not fully implemented what's already in the spec; most of the concurrency and parallel implementation has only just begun; P6 can not currently use CPAN modules; Perl 6 has syntax and semantics that are not backwards compatible with Perl 5; Perl 6 culture is -Ofun which some think is incompatible with getting things done; some folk think that Perl 6 code looks like line noise... In summary, there are infinitely many things wrong with P6.
----
> From what I read ... rakudo is very close to spec completeness ... implementing last bits of spec and improving the speed
Ignore implementation (Rakudo) for a moment.
The spec isn't complete.
There's very recent talk of producing "a list of big ticket items remaining" for "hitting 6.0" and "a tri-color marking of the spec" showing "Implemented in Rakudo, not implemented but we agree we really should for 6.0, deferred to 6.*".
I think only some one far detached from reality would expect, a Perl 5 like ecosystem ready on the day of Perl 6.0.0 release. And most people don't need many Perl 6 esoteric features either. So I guess your "a list of big ticket items remaining" hopefully won't be "a big list of ticket items remaining".
Besides I was of an opinion even after the 6.0.0 release the spec won't be complete. Spec will never be complete. Spec is a backwards compatible changing piece of document which the implementation tries to catch up with. The stable releases of the implementation are production releases.
Lastly you could just say. Esoteric features a, b, c, d are left for next 6.* releases. While release a 6.0.0 release is cut after with whatever you decide from that list earlier. The world is in no hurry to use the esoteric features anyway.
Either way, I wish you guys all the very best. And hope to soon see a closure soon on this.
I think at one point, prior to MoarVM being announced, there was still a chance Parrot could have been "saved".
The deprecation policy was a point of contention, sure. It was poorly implemented in practice--but it was as much to help Rakudo as it was to reduce the amount of churn in Parrot. Rakudo probably would have had less trouble with it if Rakudo had less code which poked into the internals of Parrot. That's half the fault of Parrot, which had poor design of certain pieces, as well as Rakudo, which rejected a lot of offers to pull some or most of that code into Parrot. (That's a theme.)
I personally spent most of my time on Parrot doing things to improve it for Rakudo--fixing a lot of unpleasant bugs, both in Parrot and Rakudo, for example as well as improving performance. I and other Parrot developers asked multiple times for a list of issues Rakudo wanted Parrot to address. Occasionally we'd get a list and work on them--but I also volunteered to focus on specific improvements for Rakudo and was told "No" or "Not yet" multiple times. You can see that too, if you look in the IRC logs--and not just for things I wanted to do. Andrew Whitworth, in particular, spent months or years on tenterhooks, volunteering to implement the object system called
"sixmodel" in Parrot, but he was always told that it wasn't fully designed yet or it wasn't mature enough. Eventually he left the project too.
On one side, I took a lot of criticism from Rakudo developers for not pushing Parrot harder to be what they wanted and on the other side, I took a lot of criticism from Rakudo developers for trying to change Parrot to be what they wanted. In the face of that seeming contradiction, it seemed obvious to me that they'd already decided to write and maintain a new backend VM from scratch.
My priority--getting a usable P6 release out and stable for general purposes--was clearly incompatible with that decision. Rakudo Star was supposed to come out as a "useful and usable" distribution for early adopters over four years ago, and to my knowledge, it's still only nominally useful and usable for very few purposes.
That is one of my most substantive criticisms of the whole process. Rakudo and P6 have a long history of claiming to be about eighteen months away from general usability, but the project's history is littered with rewrites, questionable technical decisions, and many, many good people leaving in frustration--sometimes quiet and sometimes not.
I begrudge no one working on it, but I believe it's on a path to ever less relevance without a dramatic change in project management. I'll reluctantly take the blame for mistakes I made as a member of the P6 design team and as a leader in Parrot, but I object to rewriting history to suggest that Parrot was solely at fault for Rakudo's current state.
> if you look at the timestamps on those first commits
jnthn churns out great design off the cuff and generates rapid sequences of brilliant and clear commits. I've been following #perl6 for a couple years so I've gotten used to it. (I wasn't surprised when I recently found out he has a first class honors degree in cs from cambridge.)
That said, confirmation bias is an ever present danger so I still investigated a lot more than just the timestamps on the first commits before I posted my prior comment.
Here's the graph of contribution over time:
https://github.com/MoarVM/MoarVM/graphs/contributors https://github.com/MoarVM/MoarVM/graphs/contributors
Imo the pacing and content of the repo's early commits (all jnthn) are typical for jnthn.
> Rakudo developers told Parrot hackers not to implement sixmodel
The period you're talking about is early 2011 thru early 2012.
The only two Rakudo devs that are relevant in this context are jnthn and Patrick.
If jnthn was telling Parrot devs not to implement 6model throughout this period, why, on May 31st 2011, did he write several 6model docs in response to a request by lucian? Why didn't he just tell lucian not to implement 6model?
http://irclog.perlgeek.de/parrot/2011-05-30#i_3827733 http://irclog.perlgeek.de/parrot/2011-05-30#i_3827733
http://irclog.perlgeek.de/parrot/2011-05-31#i_3833670 http://irclog.perlgeek.de/parrot/2011-05-31#i_3833670
If Patrick was telling Parrot devs not to implement 6model, why, on July 6th, 2011, did he suggest a two month delay of doing so with whiteknight? Why didn't he just tell whiteknight not to implement 6model?
http://irclog.perlgeek.de/parrot/2011-07-06#i_4072930 http://irclog.perlgeek.de/parrot/2011-07-06#i_4072930
On february 2012, two months before jnthn started the extant MoarVM repo, not_gerd wanted to know some stuff so he could implement 6model. Again, why didn't jnthn just tell him not to implement 6model?
http://irclog.perlgeek.de/perl6/2012-02-06#i_5109668 http://irclog.perlgeek.de/perl6/2012-02-06#i_5109668
> during the period where it was obvious that those Rakudo developers were in fact {developing} their own VM
If it was obvious that Rakudo devs were developing their own VM in 2011, why did nobody mention it in 2011?
Rakudo isn't obviously more usable than it was three years ago
I don't believe that to be true. Even if by usable you mean primarily can be used in production, I would still argue it's more usable that it was, even if I wouldn't label it strictly "usable." I wouldn't shell out to bc for math ops, for any number of reasons (including it being slower for my purposes), but I wouldn't call the bc utility unusable.
I don't trust its developers to deliver usable software reliably
I can't fault you for that conclusion, given your experiences. That said, developers involved in a project change over time, as does the influence of existing developers (and maybe you believe people can change, too). That conclusion may become more or less true over time, and indeed may have already changed. Perhaps some day you'll find a reason to be interested again, and find the experience more enjoyable. We can only hope. :)
TL;DR Imo specific evidence directly contradicts chromatic's assertions about the intentions, plans and actions of the Rakudo dev leads (Patrick and jnthn). My assessment, and chromatic's too I think, is there was a growing breakdown in trust that blew up in 2011 with serious consequences for both Rakudo and Parrot.
> When Rakudo announced it wanted to rewrite NQP to run on multiple backends
What announcement are you speaking of? In the past you seem to have suggested they announced this in late 2010 or early 2011. Available public evidence, including a github repo, makes it clear that one of the primary objectives of the 2009 NQP rewrite was to transition to a multiple backend architecture, and there was no attempt to hide this.[1]
There were discussions in early 2011 about the next stage in the multi backend evolution, and about elements of Rakudo's latest NQP becoming a central part of Parrot, and this did seem to get derailed by misunderstandings about NQP's support for multiple backends. Maybe that's what you're talking about?
> First, because Parrot developers didn't treat Rakudo as the most important hosted language.
Patrick's stated justification for a multiple backend Rakudo is explicitly grounded in Larry's 2001 specification that Perl 6 must run on existing major VMs[2] and Patrick's decision when he became the Perl 6 project manager in June 2009 to prepare Rakudo to run on JVM and CLR.[1]
That said, by the time Rakudo moved out of the Parrot repo in early 2009 there were definitely major problems with the way Parrot and Rakudo dev meshed (or not)[3] so it might have been good if Parrot had treated Rakudo as an important hosted language, or at least had better responded to what Rakudo actually asked for, according to the mailing lists and IRC logs from 2009 thru 2011, namely for there to be better management of breakage.[4]
> Second, because Parrot didn't provide the features Rakudo wanted
Again, aiui, this wasn't a stated justification for Rakudo considering multiple backends before 2009 nor was it when Patrick rewrote NQP with support for multiple backends in 2009.
But, yes, the growing gap between what Rakudo was saying it needed from Parrot and what Parrot actually provided must surely have led Patrick and jnthn to ponder a plan B, and spending a few years writing another VM would have been a natural thing to consider in the midst of the deteriorating Parrot situation in 2011 despite the very scary prospect of yet another huge delay in getting P6 to 6.0.
> I interpret {Rakudo's} response as something other than good faith. I believe that's why Parrot developers left; there's no point to sticking around in that situation.
There were indeed clear signs of a severe breakdown in trust littered throughout 2011.
I think jnthn and especially Patrick really tried to solve this problem but were fighting a losing battle. I acknowledge my bias (I like Patrick and jnthn) but there are tons of examples such as Patrick drafting a formal Parrot/Rakudo relationship policy in mid 2011:
http://lists.parrot.org/pipermail/parrot-dev/2011-July/005981.html http://lists.parrot.org/pipermail/parrot-dev/2011-July/00598...
(Note that there was no reply.)
I agree there would be no point in folk continuing to cooperate if there's an assumption of bad faith. Typically if person/group A interprets person/group B's actions as being done in bad faith, person/group A themselves starts acting in bad faith, or at least in a non-cooperative manner. If this attitude spreads throughout a group then all is indeed lost.
----
[1] The two Rakudo devs who matter in this context are Patrick and jnthn.
Patrick Michaud's 2013 "Perl on JVM" talk made it clear that one of the goals of his 2009 NQP rewrite was to restructure it to support multiple backends corresponding to existing major VMs (with JVM and CLR specifically in mind).
https://www.youtube.com/watch?v=XgPh5Li3k4g https://www.youtube.com/watch?v=XgPh5Li3k4g
Googling for rakudo multiple backends with a date filter and then doing a quick archive.org dig shows that sometime in 2009 jnthn changed the "What do I do in Perl 6?" section of his about page to include "Transforming Rakudo from a single backend compiler to one capable of targetting multiple backends".
http://web.archive.org/web/20091218092004/http://jnthn.net/perl6/ http://web.archive.org/web/20091218092004/http://jnthn.net/p...
[2] "Perl 6 must not be limited to running only on platforms that can be programmed in C. It must be able to run in other kinds of virtual machines, such as those supported by Java and C#." from http://www.perl.com/pub/2001/04/02/wall.html http://www.perl.com/pub/2001/04/02/wall.html
[3] http://www.nntp.perl.org/group/perl.perl6.compiler/2009/01/msg3282.html http://www.nntp.perl.org/group/perl.perl6.compiler/2009/01/m...
[4]
http://comments.gmane.org/gmane.comp.compilers.parrot.devel/1460 http://comments.gmane.org/gmane.comp.compilers.parrot.devel/...
http://lists.parrot.org/pipermail/parrot-dev/2010-December/005144.html http://lists.parrot.org/pipermail/parrot-dev/2010-December/0...
https://groups.google.com/forum/#!topic/parrot-dev/nlgcpd2XbpE https://groups.google.com/forum/#!topic/parrot-dev/nlgcpd2Xb...
http://irclog.perlgeek.de/parrotsketch/2011-09-06#i_4382083 http://irclog.perlgeek.de/parrotsketch/2011-09-06#i_4382083
http://lists.parrot.org/pipermail/parrot-dev/2011-September/006195.html http://lists.parrot.org/pipermail/parrot-dev/2011-September/...
My assessment, and chromatic's too I think
Again, please leave me out of your uninformed and biased speculations. You weren't there. You weren't involved. I was--not only as a developer on both projects but as the P6 project secretary. In that capacity, I took and published hundreds of pages of notes, and I'm more than capable of speaking for myself.
Imo you are being rude.
I noted what I thought was a parallel between my assessment ("breakdown of trust") and yours ("bad faith"). You may not see the connection and I may be wrong but my comment was for all readers, not just you, and was qualified with "I think".
My assessment was not uninformed. As you've said yourself, it's all there online and I've thoroughly researched the relevant period.
The key exception is that I have been unable to find your published P6 call summary notes. I would appreciate a link to them.