Camelia, the Perl 6 bug

IRC log for #darcs, 2012-07-06

| Channels | #darcs index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:02 darcscommitbot joined #darcs
01:25 intripoon joined #darcs
07:02 darcscommitbot joined #darcs
07:14 raichoo joined #darcs
09:01 owst joined #darcs
09:19 iago joined #darcs
10:36 balor joined #darcs
12:07 iago joined #darcs
12:12 kolmodin joined #darcs
12:12 kolmodin joined #darcs
13:02 darcscommitbot joined #darcs
13:38 kowey joined #darcs
13:38 kowey hello!
13:39 owst hey kowey
13:43 kowey I think my Darcs job this weekend is to figure out how to redirect darcs web traffic to the wiki
13:43 kowey whilst ensuring that darcs get http://darcs.net{,/reviewed} still do the right thing
13:48 owst :-)
14:30 schlaftier joined #darcs
14:35 donri joined #darcs
14:52 amgarchIn9 joined #darcs
15:33 bsrkaditya joined #darcs
15:56 kowey hi bsrkaditya, let's begin! :-)
15:56 kowey thanks for arriving earlier this time ;-)
15:56 bsrkaditya Hi Kowey
15:57 bsrkaditya The goals for this week were:
15:58 bsrkaditya improve safety of patch dropping code (finished before monday)
15:58 bsrkaditya changes on directories (finished before monday)
15:58 bsrkaditya more formal timing tests (finished before monday)
15:58 bsrkaditya review for goal 1 (ganesh done, bendikt pending)
15:59 bsrkaditya more rigorous annotate testing (on directories) (done during the week)
15:59 bsrkaditya -----------------------------
16:00 kowey hmm, yes I do remember looking at the spreadsheets
16:00 kowey for the timing tests
16:00 kowey this thing about Benedikt pending, are you in touch with him?
16:01 bsrkaditya yes
16:01 bsrkaditya he said he will give me feedback
16:01 bsrkaditya on the sunday meeting
16:01 kowey good to know
16:01 kowey how are you feeling about goal 1?
16:02 bsrkaditya It seems to be done
16:02 kowey I think if Benedikt green lights it, we'll actually see the code in Darcs
16:02 kowey maybe with some rebasing
16:02 kowey wouldn't that be something!
16:02 bsrkaditya Yes.
16:02 kowey (no promises, though)
16:03 kowey OK, is there anything you had difficulties with this week?
16:03 bsrkaditya *I* promise that I will get it through. :-)
16:03 bsrkaditya Yes
16:03 kowey let's talk through them a bit
16:03 bsrkaditya I am running into trouble with the removal of two warnings
16:04 bsrkaditya It is in FileModMonad.hs
16:04 bsrkaditya FileModMonad is an instance of ApplyMonad
16:05 bsrkaditya :q
16:05 bsrkaditya and there are two functions in ApplyMonad
16:05 bsrkaditya -- a semantic, ObjectMap-based interface for patch application
16:05 bsrkaditya editFile :: (state ~ ObjectMap) => UUID -> (B.ByteString -> B.ByteString) -> m ()
16:06 bsrkaditya editDirectory :: (state ~ ObjectMap) => UUID -> (DirContent -> DirContent) -> m ()
16:06 bsrkaditya that are not needed
16:06 bsrkaditya There are many instances of ApplyMonad
16:06 bsrkaditya that do not implement these methods
16:06 bsrkaditya yet give not warnings
16:06 bsrkaditya but somehow I am getting them
16:07 kowey hmm, that sounds interesting
16:07 kowey I confess that the (state ~ ObjectMap) syntax is not very familiar to me, but I seem to recall it's some way of saying that the state type variable in this context has value ObjectMap
16:07 kowey maybe I misunderstand that though
16:07 kowey (sorry, maybe not relevant to you, couldn't resist commenting)
16:08 bsrkaditya There are many other functions for "    -- a semantic, Tree-based interface for patch application"
16:08 kowey do you have a good idea what these functions do?
16:08 bsrkaditya which equate state to tree
16:08 bsrkaditya which are the ones that are implemented
16:08 bsrkaditya (In FileModMonad)
16:09 bsrkaditya The only implementation of these functions(editFile, editDirectory)
16:09 bsrkaditya is in src/Darcs/Patch/Prim/V3/Apply.hs:
16:10 kowey having a look now
16:11 kowey hmm, ok so we have a multiparameter type class (ApplyMonad)
16:11 kowey and I get the impression that
16:11 kowey (again, not saying I have any idea what I'm talking about)
16:12 kowey you only want to implement the edit{File,Directory} functions where the second parameter in your instance is ObjectMap
16:12 bsrkaditya yes
16:12 kowey and so you're wondering why GHC would be complaining when you didn't implement it
16:12 bsrkaditya yes
16:14 kowey I'll have to admit that I don't know!
16:14 kowey maybe Ganesh will
16:15 kowey am building your branch now
16:15 kowey aside from the warnings, anything else you found tricky or think you may need help with?
16:16 bsrkaditya I think that is it.
16:16 bsrkaditya We should next discuss annotate on directories?
16:16 kowey hmm, maybe one thing first
16:17 bsrkaditya what is it?
16:17 kowey about the timing tests: that's a nice idea, running it on all the files
16:17 bsrkaditya thanks. ;-)
16:17 kowey now people who know a thing or two about statistics can maybe tell us how to run tests in more meaningful ways
16:18 kowey unfortunately, none of us seem to be one of those people
16:18 kowey so we kind of haphazardly throw something together, and try to account for various contingencies the best we can
16:18 kowey for example, different machines, etc
16:19 kowey have you made your testing script available for people to play with?
16:19 bsrkaditya I lost it. :-(
16:19 bsrkaditya It is easy enough to remake
16:19 kowey oh well, it does seem fairly straightforward
16:19 kowey I might consider actually writing it in Haskell
16:19 kowey so that Windows users can play too
16:20 bsrkaditya Okay. ;)
16:20 kowey basically two areas we want to branch out to (I think) are: different people running these tests (platforms, etc)
16:20 kowey and also different repositories
16:20 kowey the darcs darcs repository may have characteristics which are not usual to our users
16:20 kowey we know how to avoid the common pitfalls, for example
16:21 kowey I think it's worthwhile, maybe not this week
16:21 kowey but sometime after midterms
16:21 kowey for you to try installing darcs-benchmark
16:21 kowey it may no longer build
16:22 kowey and it may need some love to compile again
16:22 kowey but it would be useful
16:22 bsrkaditya What does benchmark do?
16:22 kowey here it is http://darcsden.com/kowey/darcs-benchmark
16:23 kowey it runs darcs commands and times them
16:23 kowey http://wiki.darcs.net/Benchmarks
16:23 kowey and then writes output which can be displayed nicely
16:23 kowey http://wiki.darcs.net/Benchmarks/Apricot
16:23 kowey using Google's chart feature
16:23 kowey *one day* I hope it will incorporate a bit more statistical sophistication
16:24 kowey basically by this I mean “make some sort of math-informed effort to ensure that we're not likely to be just deceiving ourselves”
16:24 kowey because it's dreadfully easy to fool yourself
16:24 kowey not a life and death issue here, just a long term thing
16:25 bsrkaditya It seems worthwhile.
16:25 bsrkaditya Okay this could be a todo after the midterm.
16:25 kowey anyway that's all I really had on my mind, making sure that other people could easily reproduce your timings
16:25 kowey agreed
16:25 kowey I think we want to focus on making sure that automatic update code can go in
16:25 gh_ joined #darcs
16:25 kowey there is one more thing you think about
16:26 kowey and maybe this is actually worth doing sooner rather than later
16:26 kowey remember the thing we talked about last week, about figuring out what to do with the patch-index UI options?
16:27 bsrkaditya I do not recall. What was the conclusion?
16:27 bsrkaditya Oh
16:27 kowey let's see, we do have the logs
16:27 bsrkaditya You mean about wether --patch-index or --no-patch-index is the default?
16:29 kowey I think there was also the option of maybe just not making it an option
16:29 kowey it may not have been last week
16:29 kowey but I think some time ago, we had the idea that you should try and get some thinking done about what the right solution is
16:29 kowey perhaps using the community to help you
16:29 kowey have you had a chance to put some thought into the matter?
16:29 bsrkaditya If you want a different default, is it not as simple as changing defaults file?
16:30 kowey ah yes
16:30 kowey in the darcs culture
16:30 kowey there is a tendency (or maybe not the darcs culture, but me liking UI stuff)
16:30 kowey to want to make sure we choose sensible defaults
16:31 kowey on the grounds that while yes, it can be good to make things parameterisable
16:31 kowey you also want to account for the fact that giving people choices amounts to *forcing* them to choose
16:31 kowey which can be bad
16:31 kowey (so here we don't have this problem)
16:31 kowey you've already chosen a default
16:32 kowey the question is if you've thought about whether or not it is a good default
16:32 kowey and why
16:32 kowey because it's unlikely that people will even know about it!
16:32 kowey see what I mean?
16:32 bsrkaditya yes
16:33 kowey so maybe good to spend some of your cycles (again, keeping that goal 1 focus in mind) on it
16:33 kowey if you want to use the community to help you (and this could be a good way to say hello)
16:33 kowey it may be a good idea to do it sooner rather than later
16:33 kowey so that people have a chance to respond
16:34 bsrkaditya Discuss on weather the default should be --patch-index or --no-patch-index
16:34 bsrkaditya Okay/
16:34 kowey hmm yes
16:34 kowey but be careful, these kinds of discussions can be tricky to manage
16:34 kowey there are many dangers
16:35 kowey one is that people may not really grasp the question (you throw some flags at them and they're like “how the heck should I know?”)
16:35 kowey another is that you may overly influence people to give you what you think is the right answer
16:35 kowey another is that you may be asking people to design the UI for you
16:36 bsrkaditya I will run it through you. :-)
16:36 kowey which is emphatically NOT what we're trying to do
16:36 kowey it's not a matter of “do you like a blue car better than a red car?”
16:36 kowey it's more about using user feedback to gain a better understanding of what the right thing is
16:36 kowey it's a subtle difference!
16:36 kowey and yet another danger is that the discussion may go around in circles a lot
16:36 kowey (phew)
16:36 kowey hopefully I can help you manage it
16:37 kowey OK, that's really all I had in mind
16:37 kowey sorry, let's get back on track
16:37 kowey what about annotate on directories?
16:37 bsrkaditya The answer is long and complicated. ;)
16:37 kowey ah life
16:38 raichoo joined #darcs
16:38 bsrkaditya Define three annotates:
16:38 bsrkaditya A1: annotate of screened
16:38 bsrkaditya A2: annotate of pi repo, using pi
16:38 bsrkaditya A3: annotate of pi reop, without using pi
16:38 bsrkaditya A2 gives identical results as A3 for all directories
16:38 bsrkaditya however A1 /= A3
16:39 kowey now that's counter-intuitive
16:39 kowey does A2 always == A3?
16:39 kowey on all inputs?
16:39 bsrkaditya yes
16:39 bsrkaditya they take different amount of time though
16:40 kowey ok, so what do you reckon is the cause of this discrepency?
16:40 kowey (oh!
16:40 kowey that's another thing that darcs-benchmark is good for
16:40 bsrkaditya A1 and A3 are subtly different
16:40 kowey testing two different versions of darcs)
16:40 bsrkaditya they do not have the same exact code.
16:41 bsrkaditya Now if you discount:
16:41 bsrkaditya 1) formatting difference
16:41 bsrkaditya 2) the times where A1 gives unknown as output for a file
16:42 bsrkaditya 3) two files in tests/ dir
16:42 bsrkaditya they are both the same
16:42 bsrkaditya 1 and 2 do not matter
16:42 bsrkaditya the difference of 2 is an improvement
16:43 bsrkaditya but three is not so clear cut
16:43 kowey what's formatting differences?
16:44 bsrkaditya A1 prints a file like: tests/data/maybench-crc.tgz
16:44 bsrkaditya A3 prints a file like: ./ tests/data/maybench-crc.tgz
16:45 bsrkaditya (no space in middle)
16:45 bsrkaditya ./tests/data/maybench-crc.tgz
16:45 bsrkaditya that is the formatting difference.
16:45 kowey do you specifically mean this difference in the filepath display?
16:45 bsrkaditya yes
16:45 kowey ok, it's worth paying a bit of attention it
16:45 kowey for two reasons
16:46 kowey first the external reason, that people may for whatever reason rely on identical output
16:46 kowey or may do things like use diff
16:46 kowey to report problems
16:46 kowey so the difference may create a spurious diff for them
16:47 kowey I don't foresee this being a big problem
16:47 kowey I'm just saying it's probably healthier to avoid brushing things off too quickly
16:47 kowey second, the internal reason
16:48 bsrkaditya A simple diff will not work properly, due to 2)the times where A1 gives unknown as output for a file
16:48 kowey is that this may belie some problematic internal representation of paths which are relative to the repository root
16:48 kowey so unless you know exactly why the difference exists
16:48 kowey it could be good to make sure you've not introduced some subtle bug there
16:48 bsrkaditya I know why the difference exists
16:48 kowey again, I don't think it's a problem
16:49 kowey but being paranoid
16:49 kowey (one place where we want to be *super* paranoid is when things affect patches, but here they don't seem to)
16:50 kowey hmm, OK
16:50 kowey so what's this about A1 giving “unknown” for an output
16:50 bsrkaditya You must have seen them
16:51 kowey I actually don't use annotate on directories very much
16:51 kowey in fact, I don't think I can remember the last time I did
16:51 bsrkaditya Run annotate on tests
16:51 bsrkaditya you will see that many files
16:51 bsrkaditya do not have an associating patch
16:51 bsrkaditya an if that is the case
16:52 bsrkaditya they have an unknown instead of a patch num
16:52 kowey hmm, oh yes
16:52 kowey why *do* they have unknown?
16:53 kowey that seems like an odd behaviour
16:53 kowey have you talked about it with mornfall?
16:53 bsrkaditya because, (I am guessing)
16:54 bsrkaditya "./tests/data/convert/darcs1/resolution.dpatch" gets into annotateDirectory as "././tests/data/convert/darcs1/resolution.dpatch"
16:54 bsrkaditya and this causes a fail, and no patch gets mapped to it.
16:55 kowey uh!
16:55 kowey are you saying the current annotate is buggy?
16:55 kowey (see this is an example of subtle repo-relative path bug if so)
16:56 kowey (not that there's anything inherently wrong with the ././ paths aside from their yuckiness)
16:56 kowey (but if there's a piece of code that's doing some sort of == test…)
16:57 bsrkaditya what do you mean(the last statement)
16:57 bsrkaditya ?
16:58 bsrkaditya In response to weather current annotate is buggy,
16:58 bsrkaditya I can confirm that A2, and A3
16:58 bsrkaditya never give unknown
16:58 kowey well, if there's some piece of code that's doing a naive equality check on paths, or assuming they are canonicalised
16:58 kowey and it's not
16:58 kowey that sort of thing
16:59 kowey ok, so maybe one avenue to explore
16:59 kowey and to be honest I'm not sure if this is a good use of time
16:59 kowey but I think this would be a “methodical” approach (try to only change one thing at a time)
16:59 kowey is to create a test script reproducing the unknown patch issue
16:59 kowey and submit a bug repor
17:00 kowey maybe it's worthwhile to fix this in current non-patch-index darcs
17:00 kowey even though we're expecting it to be clobbered
17:00 kowey just so we know what's going on
17:01 bsrkaditya we can port A3 to screened I suppose.
17:01 kowey no, I don't think that's actually telling us very much
17:02 kowey I think it could be useful to fix the current annotate as it is
17:02 bsrkaditya that was what I ment
17:02 kowey without bringing in any of the pi stuff (even disabled)
17:02 bsrkaditya yes
17:03 kowey it could also point us to other non-annotate bugs
17:03 kowey ok, so maybe consider that as a possible next step: make it a reproducible darcs regression test
17:03 bsrkaditya that is easy
17:03 bsrkaditya just a sec
17:04 bsrkaditya create repo
17:05 bsrkaditya create dir d
17:05 bsrkaditya create file d/f
17:05 bsrkaditya record p1
17:05 bsrkaditya darcs annotate d
17:05 kowey uh, how about you work on that offline :-)
17:05 bsrkaditya you should get a unknown
17:05 kowey with all the usual script infrastructure, etc
17:06 kowey it's basically a spirit of reducing friction/inertia for everybody by making them as easy as you can
17:06 kowey OK
17:06 kowey so we have perhaps a plan for thinking about #2 (the unknowns)
17:06 kowey for #1, if you know where the discrepancy is coming from, then I think it could be worthwhile to produce the old output
17:07 kowey now what about #3, the two files problem?
17:07 kowey I think you've explained it to me before
17:07 bsrkaditya I did.
17:07 bsrkaditya the two files in question are
17:07 bsrkaditya ./tests/issue1446.sh
17:07 bsrkaditya ./tests/issue1248.sh
17:08 bsrkaditya I get two different patches as output between A1 and A3
17:08 bsrkaditya I am stumped. :-)
17:12 kowey sorry, trying to reproduce this now
17:12 kowey generally you seem to be missing lots of patches
17:13 kowey oh, I see
17:13 kowey created as: ./bugs/issue1248.sh
17:13 kowey and created as: ./tests/issue121.sh
17:14 kowey I think the same sort of first step can be useful here
17:14 kowey boil it down
17:14 kowey make it reproducible
17:14 kowey at the very least a desirable output
17:14 kowey desirable outcome
17:14 kowey is some sort of unified list of unresolved things
17:15 kowey that need to be addressed
17:15 bsrkaditya reproducible is hard because of unknown.
17:15 bsrkaditya BUT, A3 output is not wrong.
17:15 bsrkaditya You are supposed to give the the last patch that modified that file.
17:16 bsrkaditya And it did that.
17:16 kowey hmm
17:16 kowey well, at the very least, make sure the discrepency is documented
17:16 kowey having a test would be better
17:16 kowey having an account for the difference even still
17:17 kowey one thing seems to be that renaming and/or conflicts come into play here
17:17 bsrkaditya I can explain why A2 will give that output, but not why A1 and A3 differ.
17:17 kowey which I can understand makes things very tricky
17:18 kowey right so make sure that whoever inherits your code (eg. future-you)
17:18 kowey is aware of the issue
17:18 kowey and has a fighting chance of figuring out what's what
17:19 kowey it may be good to ask Benedikt what he thinks about this overall strategy
17:20 kowey (make A2 and A3 more like A1 wrt #1, test/fix A1 wrt #2, document #3)
17:20 bsrkaditya If I fix #2, my sol will probably also cause #3 to come in screened
17:21 kowey well, depending on your fix, that could be a good thing
17:21 kowey the important thing here is the awareness
17:22 kowey no surprises
17:22 bsrkaditya Okay
17:22 kowey fixing things is good of course
17:22 kowey but do get a second opinion
17:22 kowey I may be talking nonsense
17:22 kowey hmm, maybe we should wrap up
17:22 bsrkaditya Yes
17:22 kowey so what's up for next week?
17:22 bsrkaditya We outlined a few things in the meeting.
17:23 bsrkaditya discussion about default flags
17:24 bsrkaditya Benedikt suggestions(if they are any)
17:24 bsrkaditya darcs-benchmark (low priority for now)
17:24 bsrkaditya annotate fix
17:24 bsrkaditya anything else?
17:24 bsrkaditya I think
17:24 kowey well, it's your project :-)
17:25 kowey is that enough for you to work on?
17:25 bsrkaditya that I should check about the tests
17:25 bsrkaditya that patch-index fails
17:25 bsrkaditya patch-index repo fails at
17:25 kowey if we're heading for inclusion into darcs darcs
17:25 kowey that would make sense
17:25 bsrkaditya there was this failing test with lazy repos that I recall
17:26 bsrkaditya So that is there too
17:26 kowey could be worth bumping this up
17:26 bsrkaditya yes
17:27 kowey particularly since lazy is something people really do make use of
17:27 kowey this darcs user anyway
17:27 kowey wouldn't want a broken pi just because I do darcs get --lazy
17:27 bsrkaditya really? I found no need for it with packs
17:27 bsrkaditya and pi "can't work" with --lazy
17:27 bsrkaditya how can you build patch index if you do not have the patches? ;)
17:28 bsrkaditya What I mean is that --lazy
17:28 bsrkaditya will not work
17:28 bsrkaditya as even if you do a lazy get
17:28 bsrkaditya to build pi
17:28 bsrkaditya you will have to get all the patches anyway
17:29 bsrkaditya (which is the default behavior)
17:30 kowey well that sounds interesting
17:30 kowey have you talked about this with anybody else?
17:30 bsrkaditya no? *sheepish*
17:31 kowey it's kind of an important issue
17:31 kowey no assumptions
17:31 kowey you don't know that people will use packs
17:31 kowey (will not no assumptions, of course we all make assumptions)
17:31 kowey (you just don't want to make assumptions in a cavalier manner)
17:31 kowey in any case, you want some sort of sensible behaviour
17:32 kowey not some mysterious undefined state
17:32 kowey here's one simple one:
17:32 kowey no pi unless you have all the patches
17:32 kowey but maybe there's a better way?
17:33 bsrkaditya defer building pi until a query is made?
17:33 kowey bring this up with B on Sunday, I think
17:33 bsrkaditya that is not a good solution
17:33 bsrkaditya It is either patch-index or lazy
17:33 bsrkaditya not both
17:33 kowey I think he may agree that you should look into understanding how lazy works
17:33 kowey what I meant is that the mutual exclusion should be enforced in the ui
17:33 bsrkaditya okay
17:33 kowey that it doesn't try to use the pi if you're still lazy
17:34 kowey but I haven't thought about the practicalities of it
17:34 kowey whatever the case may be, we should do something sensible
17:34 kowey not just ignore it
17:35 kowey hmm ok
17:35 kowey well I think I'd better wander off now
17:35 bsrkaditya bye.
17:35 kowey you all set for next week?
17:35 bsrkaditya yes
17:35 kowey alright, well looking forward to your Sunday blog
17:35 kowey hopefully the lazy thing has a good solution
17:35 kowey it sounds a bit alarming :-)
17:36 kowey see ya
17:36 bsrkaditya alarming how?
17:36 kowey well, alarming if it results in some fundamentally broken behaviour
17:37 kowey not so alarming if it's just a matter of pi not kicking in
17:37 bsrkaditya no, what will happen is that the lazy get will be orver
17:37 bsrkaditya and the pi build code gets called
17:37 bsrkaditya and as that needs all patches
17:37 bsrkaditya it is going to get them all
17:37 kowey oh
17:37 bsrkaditya and the patch index will be built
17:38 kowey that lazy will just not have any effect?
17:38 bsrkaditya yes
17:38 kowey huh, I guess that's a conservative safe default
17:38 kowey it also means that darcs just becomes slower for everybody
17:38 kowey unless packs get used
17:38 kowey so this could be a tricky decision then
17:39 kowey anyway, talk to Benedikt :-)
17:39 bsrkaditya yes
18:17 favonia joined #darcs
19:02 darcscommitbot joined #darcs
19:13 raichoo_ joined #darcs
19:58 iago joined #darcs
21:41 raichoo joined #darcs
22:00 JaffaCake1 joined #darcs
22:24 raichoo_ joined #darcs

| Channels | #darcs index | Today | | Search | Google Search | Plain-Text | summary