Discussion area for the Perl 6 toolchain | github.com/perl6/toolchain-bikeshed
Set by moderator on 8 January 2016.
00:27 leont joined 01:50 japhb joined
ugexe ah, pwned by EVAL 'use 007' ($dist<name>) instead of EVAL 'use _007::Runtime' ($dist<provides>.keys[0]) 02:28
06:35 Zoffix joined 09:10 llfourn joined 09:15 hankache joined 10:14 FROGGS_ joined
masak oh -- is there something I can do to help on the 007 side, or is it strictly a zef thing? 10:33
nine panda now actually checks a dist's Perl 6 version requirement and errors out if it cannot be met. This should make it much easier to diagnore installation issues caused by the user having a too old Rakudo. 11:39
12:24 leont joined
nine panda will now fall back to curl and then to wget if downloading meta data failed. This should fix the proxy issues. 12:27
I wonder why we use git:// URIs in the ecosystem. panda seems to be dealing with https:// just fine. Although I can't quite figure out why... 13:02
The second "why" is because panda's project-from-git really checks for ^git:// 13:03
leont Why wouldn't we? 13:16
nine You mean why wouldn't we use git://? Because github recommends https:// as more reliable. Especially in restricted network environment. 13:34
JimmyZ +1 to https 13:35
leont Restricted network environments is a good reason 14:01
(though I still hate it for development) 14:02
14:26 hankache joined
llfourn nine: I have PR to docs which uses precomp to replace EVAL slurp. It may be of interest to you github.com/perl6/doc/pull/334/files :) 15:38
16:17 autarch joined
nine llfourn: I _like_ that! 16:26
llfourn nine: thanks! I thought you might.
hoelzro nine: not to mention that git:// is subject to MITM attacks
leont: ↑ 16:27
leont Is it?
hoelzro mhmm: git.661346.n2.nabble.com/git-protoc...01259.html 16:28
leont I suppose it is when the host hasn't seen the server yet, but given almost all repositories use github, that seems rather difficult to pull off 16:29
mst also, if you actually care about integrity you should be getting checksums via a separate route
hoelzro leont: true, it's more of a theoretical than practical attack
mst: *nod* 16:30
it just occurred to me that this channel is probably slow enough to effectively backlog \\o/
I was going to ask a question about moving away from GH as the canonical place to fetch modules from 16:31
Zoffix GH is just temporary. jdv79 et. al. are working on the P6 PAUSE/CPAN/MetaCPAN stack 16:32
mst uhhh
hang on
we have jdv79/ranguard's prototype of putting stuff onto cpan via pause
Zoffix It works in fact. You can upload Perl 6 modules to pause.perl.org *right now* 16:33
mst yes, and cause carnage and problems because nobody knew anybody was going to do that unbtil ranguard did it
so everything downstream is completely unprepared
autarch I really hope that whatever the end solution is that I never go to metacpan.org and see Perl 6 stuff
Zoffix No, it'll be a separate site 16:34
hoelzro *whew*
mst there will be an mc6
but there's lots of things that trail the PAUSE aupload feed
and basically every time somebody uploads a Perl6 dist half of them crash
and then distro packaging teams start asking the perl5 toolchain "wtf are these? should we be packaging them? if so how?"
and since nobody talked to the perl5 toolchain team first our answers have mostly been "they did WHAT?! what the flying fornication?!" 16:35
so I would prefer that we don't encourage -lots- of people to start uploading until we're a little more certain of what we're doing and have some public messaging explaining what and why
leont Yeah, it doesn't seem very useful 16:36
moderator Fire is step THREE! | github.com/perl6/toolchain-bikeshed 16:36
mst it may be that slotting them all together will be 16:37
and it may be that cpan is the best distrribution mechanism to use for tarballs
autarch I would note that the PAUSE website for authors is not that great to use, and I'd be very happy to not have to use it for p6 stuff
mst but I think everything else is "this is an open question because it's clear nobody's actually thought it through yet, or if anybody did, they're a distinct set from the people currently trying to do things"
leont would like to see a solution based on dumb data storage, but smart data indexing 16:38
Zoffix autarch, yeah, and the argument there is there are only so few hands to code stuff, so doing-something-new() is starved for resources
autarch yeah, I get that
leont Having non-turing-complete versions (end other requirements?) would help there, since then we could ask the index "I need a Foo that satisfies these requirements" and it can actually be helpful 16:39
nine mst: FWIW I actually tried bringing the Perl 6 on CPAN topic up at 2014's Austrian Perl Workshop, at the 2015 QA Hackathon and at YAPC::EU, but Perl 5 people didn't seem interested.
autarch nine: the problem is that the people who maintain the Perl 5 CPAN stuff are all already busy, and presumably not that enthused about doing more work for something they may not ever use 16:40
nine With few exceptions like Andreas with whom I had a very interesting chat about topics like this :)
mst I think, understandably, nobody was really convinced at that point perl6 was ever going to ship
nine yep, that was the vibe I got 16:41
I guess this will (slowly) change now :) 16:42
mst and andreas, sadly, barely talks to the rest of the toolchain people 16:43
autarch well, don't expect every p5 person to care about p6 - some will, some won't - there are plenty of p5 people who really don't like p6
(I mean don't like the language)
mst personally, ideally, I think we would do well (ab)using the 'giant distributed tarball store with user accounts' part of cpan 16:44
nine autarch: I don't expect everyone to care. I just think, it will be harder to deny that Perl 6 exists :) Though if Perl 6 matters is a different question.
mst and then trying to basically avoid the rest of it
but that may require more tuits than are available
I dunno
I'd just like to not run before we can walk
nine Yes, I'd love to be able to use CPAN just as a tarball store as a first step and be able to download those tarballs with panda 16:45
Or even just use the tarballs for distro packages
leont You might want to write an Archive::Tar and a gzip/bzip2/xz module then, those are rather missing right now 16:46
nine leont: I'm me. I'd not hesitate to use Inline::Perl5 for that ;) 16:47
leont This is toolchain, you can't assume all platforms will have p5 16:48
nine panda already does
and rakudo's build
Well panda assumes you have a "prove"
leont I know panda does, and have a plan to change it
mst though I can imagine win32 could easily have neither perl5 nor tar
leont Exactly 16:49
mst honestly though I think "needs perl5" is not actually that high on the list of problems
autarch yeah, p6 really needs to get to the point of being self-bootstrapping if we expect more adoption
leont panda's architecture doesn't lend itself for a drop in replacement for TAP::Harness, but it's not like the module isn't written or working
autarch I should say the toolchain does - having the actual build require p5 isn't as big a deal, I suspect
leont Requiring it on build is suboptimal, but not something urgent to fix 16:50
Requiring it at runtime is rather embarrassing
autarch yeah
I do note that you can start Archive::Tar etc by just looking for CLI utilities - as an intermediate measure 16:51
leont AT isn't that complicated, but there are lots of gritty details to it as far as I understand (because of 40 years of history).
A straight port of p5's AT may not be a bad starting point, because it has dealt with various of those issues 16:52
ugexe zef can download/untar from metacpan 16:54
mst I wonder if the PAUSE issues would be solved simply by removing the PErl6/ dir from the upload feed and minting a separate upload feed 16:55
that might stop people seeing things they're confused by
ugexe or it could a few days ago. need to update a few things to use DependencySpecification again
mst ok, this may be a stupid question but - how did we end up with panda and zef? just two people working on ideas independently? or is there some philosophical difference that caused a deliberate split? 16:56
(tried as hard as I could to make the question neutral, I don't have an opinion here, I just don't know the history) 16:57
nine There's also ufo
leont Does anyone actually use ufo? 16:58
ugexe panda would fail to work for days at a time due to a dependency or something else. so zef was meant to be more plugin based and without any (perl6) external dependencies so it was easier for an end user to keep working
also to do things different from panda for the sake of doing it different. i.e. panda used CU::L::File and zef used CU::L::Installation 16:59
mst at this early stage, doing things differently for the sake of it honestly sounds like a great idea (previous sentence was not sarcasm) 17:00
leont I suspect zef would be an easier target for integrating TAP::Harness than Panda does (maybe also because it doesn't do much right now in that corner) 17:03
autarch m: say False ~~ False 17:04
camelia rakudo-moar 725348: OUTPUT«False␤»
autarch is that really intentional?
doh, wrong channel 17:05
ugexe it may well be. i have not yet gotten around to using your test harness to see but its been my intention for it to be the default other than running `perl6 -Ilib t/file.t` on each file 17:07
nine ugexe: I think zef doesn't handle resources correctly yet. 17:10
Other than that I like what I've seen so far. 17:11
leont It's fully functional except the async parts (rakudo bugs) and currently the ANSI coloring (a rakudo regression)
ugexe yeah there is still more work to do on it like parallization, a way for the phases to talk to each other during parallelization, terminal output prettification (instead of the debug messages), although those 3 were implemented in the previous version 17:14
17:14 ranguard joined
ugexe leont: what parts of it make it difficult to use with panda? it may make it easier for me to avoid them 17:15
nine ugexe: how does zef know that a dependency is already installed? 17:16
ugexe ive seen your .resolve fork so i havnt put much effort into that. it evals the dist's identity (Distribution.Str()) and if that fails its evals the first provide's spec string 17:17
previously it would read the manifest 17:18
a manifest that isn't multiple levels deep like the previous one just for mapping some basics like where to find the installed dist meta might not suffer from the slowness of the previous manifest 17:21
mst nine: oh, when you get a minute, can you try and summarise what you got from your conversations with andreas? I doubt they're written down anywhere 17:32
nine mst: I'm not sure I can remember all that much. Writing it down would have been an excellent idea. I know it was about Perl 6 on CPAN, cross language dependencies and how rpm already solves many of the problems we struggle with. 17:41
ugexe: If you have any input on .resolve, now would be the time :)
mst rpm is unusual in that it can handle having multiple versions of the same package installed so long as they don't have conflicting files
it continues to sadden me that /deb doesn't
I put this in at least one YAPC talk
ugexe nine: im not sure really. the method of a manifest that only maps dist identity + provides identities to the actual dist file allows a way to only read the appropriate meta files without having to recursively read them all until you find what you need. the drawback being its more fragile, like when someone manually deletes a distribution. im guessing either way its specific to each CU::R 17:44
i think part of the problem of the previous manifest is it had to read like 6 levels deep of every single distribution to find what it needed 17:45
mst I'm pretty sure I can create a much better repo internal format 17:46
but I think step zero is to make repo formats versioned+pluggable
nine ugexe: I think the biggest issue with the previous manifest was that it grew with each installed distribution and rakudo's JSON parser is dog slow 18:15
I guess once we provide proper uninstall support, people will be less prone to poke at repository's private files manually. And uninstall is mostly a decision on language versioning implementation away 18:17
Right now everything is blocked on that
mst maybe we should port JSON::Tiny
ugexe but each distribution wouldnt have to create a huge structure like it did previous, it only maps to where the huge structure is located for each dist. i dont know if that works or not
there was a new on hackernews a few months back about "the fastest json parser" or some such, where it would skip parsing over levels of the data structure that weren't needed. so if you wanted a key that started with 'F' and it reached a key that started with 'A' it somehow parses only whats needed to find the next key. a specialized manifest parser (or a format that lends itself to it) could 18:18
sidestep slowdown when 100s of modules are installed
nine There's another reason why we would want to avoid a large json file like that: it sucks for packaging modules. With the current structure, installation can really mean just dropping some files and fireing off precompilation, except for the short name lookup files. But those could be replaced by directories. 18:21
mst I think each dist should have some sort of JSON meta file, plus a tree of installed files 18:22
then whatever extra indices and dependents like short name and precomp can be a derived product of that
things you have to regenerate are best kept pure functional 18:23
nine I think I'm gonna implement uninstall even before we merge .resolve. Just to make sure the API fits nicely together
mst if you see where I'm handwaving
ugexe i cant speak for packaing modules, but size wise 1000 modules with a key-pair mapping module name to the actual meta file would be smaller than the previous manifest with like 50 modules installed
mst right, a single-file global json manifest is not something we want to be loading at runtime, ever
nine With a little adjustment to the short name lookup files, we would only have to parse the JSON data of the exact dist that's going to be loaded
mst a directory of file-per-dist json should provide the same features and be lots less painful
ugexe a manifest manifest 18:24
mst nine: right, which is why I'm thinking about repo format versions
maybe I should write down a textual defintioin of what ::Installation currently has on-disk-format-wise
and then we should ask, separate from the code, what's wrong with that
nine I think someone created a github repo for documents like that... 18:25
mst :D
nine Add version, auth and api to the short/ files and you can pick the matching dist right there. Of course this begs the question of what exactly is allowed in each of those fields. Would we allow white space? Newlines? 18:28
mst since the short/ files aren't meant to be consumed by humans 18:29
we could use null separated values
nine Oooh...true 18:31
You know when you've done Perl too long when you try to think about problematic characters and the worst you come up with is \\n
Why is it always that literally when writing the third line of a supposedly straight forward job, you find out what's actually quite hard about it? 18:43
mst hey, this is a toolchain channel. finding out before you've finished and deployed it is always a win. 18:44
nine Of course, I could make my life much simpler by lowering requirements. If the user wants to uninstall a module that's depended on by others, who am I to deny it? 18:45
Because finding out the answer to "is this thing still needed" is surprisingly difficult 18:46
mst write a low level one that just uninstalls
we can add a more intelligent one later
intentionally stupid often works well at this level - see things like cpanm, fatpacker, etc.
nine Also we'd want to split up these two tasks into different methods anyway. 18:54
mst right, so at least you can shore off the crazy shit to the outer method :)
also, consider that you can't fully find 'depended on' anyway 18:55
since e.g. there could be a CUR that stacks on top of this one that has something that depends on it
(I've seen 'breaking one local::lib stack updating things for another' happen, sadly) 18:56
maybe just provide a things_depend_on_this() method for the CUR and have uninstall document it exists and people can call it if they want and then die/warn as they prefer 18:59
mst sees our job wrt CUR as primarily to provide mechanism and let external tools use that to implement policy, roughly
& 19:00
19:00 patrickz joined
lizmat " <mst>\tand since nobody talked to the perl5 toolchain team first our answers have mostly been "they did WHAT?! what the flying fornication?!"" 19:21
sorry mst, but that is *not* true
we already had a meeting about this at the QA hackathon in Lancaster
and we talked about it at the QA Hackathon in Berlin
sorry, I don't think P6 devs can be held responsible for P5 devs not taking P6 seriously 19:22
it was and is a deeply felt sentiment by Andreas Koenig that there should be *ONE* CPAN
and personally, I'm not ready to abandon that 19:23
.tell mst please check my monologue at irclog.perlgeek.de/perl6-toolchain/...i_11859804 19:24
TimToady that's a fine sentiment, but we also designed Perl 6 to not care where its modules come from 19:26
autarch I'm not sure the benefits of one CPAN is really worth the risk
it's nice to reuse architecture and all that but any breaking critical p5 stuff that currently works seems like a real risk
and while I'd like to see p6 succeed, I need p5 CPAN to keep working for my $day-job in the forseeable future 19:27
Zoffix lizmat, the .tell bot isn't here
TimToady
.oO("Do not put your new wine into old wineskins, or the wineskins might burst, and the wine will be spilled out and ruined.")
we can use CPAN if it won't burst :)
lizmat TimToady: I wrote part of the design where modules could live just about anywhere, so I'm aware of that 19:28
moderator Fire is step THREE! | github.com/perl6/toolchain-bikeshed | Channel logs: irclog.perlgeek.de/perl6-toolchain/today 19:28
lizmat that being said, I do think that at least PAUSE should be able to accept P6 distributions 19:29
and afaik, it already can
*without* interfering with PAUSE itself
Zoffix right
lizmat now, that it may break stuff out there: sure, this can and will happen 19:30
but afaik, the fix is easy: ignore anything that is stored in a Perl6 subdirectory from the top of a home dir of a PAUSE user
it's even easy enough to be part of an rsync filter 19:31
so, if anything, this is an example of bad communication between PAUSE / CPAN and its P5 user base
*not* of P6 devs just blatantly trying to destroy the P5 CPAN infrastructure 19:32
sorry, but I'm quite livid at mst at the moment
lizmat goes away fro a bit to cool off
19:51 llfourn joined 19:59 patrickz joined 20:15 hankache joined 20:16 patrickz joined 20:52 llfourn joined 21:23 mohij joined 21:33 llfourn joined 23:05 patrickz joined 23:11 mohij joined 23:16 patrickz joined 23:30 mohij joined