<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Darcs</title>
	<!--<link rel="self" type="text/atom" href=""/>-->
	<link rel="alternate" type="text/html" href="http://planetdarcs.joyful.com"/>
	<id></id>
	<updated>2010-07-29T18:00:45+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title>Adolfo Builes: GSoC Week 9</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/07/gsoc-week-9.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-4844238659588073710</id>
		<updated>2010-07-26T03:14:24+00:00</updated>
		<content type="html">Last week I &lt;a href=&quot;http://abuiles.blogspot.com/2010/07/gsoc-report-week-8-dealing-with-bad.html&quot;&gt;mentioned&lt;/a&gt; I almost had ready the implementation to deal with bad entries in the cache, finally during the week I sent a first version of the patch, I got some review and now I'm working to improve it.&lt;br /&gt;&lt;br /&gt;One of the things I will change is the way we determinate which error we had when trying to use one of the entries in the cache, in my patch I was using the error string ( but it was because at the moment we don't have an ADT for some errors, for example the ones which are thrown from libcurl), so I will implement an new data type which will helps us to determinate in a safer way, which was the error that we got.&lt;br /&gt;&lt;br /&gt;Other thing I will rewrite is the way to determinate if a ssh is bad or not, again we have the problem of the error type with ssh ( which we couldn't infer), so what I was doing was to do a request to the server and check if it was reachable or not, but then I realized that It wasn't correct, having a ssh server listening in port 22, doesn't necessarily mean that it does in port 80 too.&lt;br /&gt;&lt;br /&gt;Also I got a first draft of the high level documentation doc, which aim to explain how the cache system works, I did a &lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024546.html&quot;&gt;call&lt;/a&gt; in the darcs-users mailing list for feedback, which wasn't very successful, I would really appreciate if you can give a look at it and give me some feedback.&lt;br /&gt;&lt;br /&gt;During the coming weeks I will finish this patch, and work on documentation and testing, more information of my progress can be found in the &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;wiki&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-4844238659588073710?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #68</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/07/darcs-weekly-news-68.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-7111642267776366453</id>
		<updated>2010-07-24T22:29:20+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;``darcs stash'' was discussed, with different possible implementations and UI proposed, and some example workflows evoked:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024499.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024499.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Reinier listed the release blockers for darcs 2.5:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024603.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024603.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-4&quot;&gt;&lt;h3&gt;Issues resolved in the last week (4)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1716 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;allow mail header lines of all whitespace in test&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1716&quot;&gt;http://bugs.darcs.net/issue1716&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1883 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;rename --patch-name option to --name.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1883&quot;&gt;http://bugs.darcs.net/issue1883&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1887 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;add a missing newline to --list-options output.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1887&quot;&gt;http://bugs.darcs.net/issue1887&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1893 Ganesh Sittampalam&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;move fields of conditional builds within scope of condition&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1893&quot;&gt;http://bugs.darcs.net/issue1893&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-42&quot;&gt;&lt;h3&gt;Patches applied in the last week (42)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-07-24&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-7111642267776366453?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>the Patch-Tag blog: Patch-Tag Lessons Learned, and Announcing Open Source</title>
		<link rel="alternate" type="text/html" href="http://blog.patch-tag.com/2010/07/21/patch-tag-lessons-learned-and-announcing-open-source/"/>
		<id>http://blog.patch-tag.com/?p=335</id>
		<updated>2010-07-21T17:10:42+00:00</updated>
		<content type="html">&lt;p&gt;  I started patch-tag coming on two years ago, and a blog post has been brewing about what went right, what went wrong, what I didn’t expect (or what was harder than I thought) and where I see things going. Here goes.&lt;/p&gt;
&lt;p&gt; What went right.&lt;/p&gt;
&lt;p&gt; Haskell is a joy to work with, the haskell community continues to be friendly for the newbie and fun for the expert, better now than when I started. The explosion of creativity on hackage has kept making simple things simpler while pushing the limits of what you can experiment with, with a simple library include.&lt;/p&gt;
&lt;p&gt; Darcs worked out too. It is still my favorite versioning system and I use patch-tag for offsite versioning almost all my new work, and keep trying to convert my friends and cubicle mates to it. Darcs users are nice and a lot of them see to be working on &lt;a href=&quot;http://patch-tag.com/publicrepositories&quot;&gt;interesting things&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; Happstack as a server — overall I’m sold, though there are a lot of rough edges, and I watch snap and yesod with interest. With happstack too many monads and the documentation is sparse… but it got the job done for me, so ok. I really want to do a yesod test drive too — Michael Snoyman has put a lot of himself into this framework, and from browsing the docs and watching the intro videos I have to say he is doing an awesome job.&lt;/p&gt;
&lt;p&gt;   View Code: HSP/HStringTemplate.&lt;/p&gt;
&lt;p&gt; HSP is a bit of an odd one becuase I don’t use HSP in patch-tag, but I use it for my other happstack work, and I like it. It isn’t all win. If you are using HSP you have to recompile every time you change the view code, and the time lag can get noticeable, particularly if you have monolithic View files with a lot of code, and rely on cabal install. HSP also relies on the trhsx preprocessor which means that projects that require it won’t cabal install ootb without ~/.cabal/bin&lt;br /&gt;
(or similar) is in your PATH. And there are some mystifying error mesages. I think it also uses template haskell, so slightly slower compiles. But even so, I like it. I like having the compiler check that my tags match up, I like being able to copy html from the wild directly into my view code, and I like that designers find it easy to work with.&lt;/p&gt;
&lt;p&gt; HStringtemplate is what I use in patch-tag and I like that too. The compiler won’t check my html tags match up, but it is fast, no recompile is required, and it is pretty smart. I will probably depend on hsp in the future, and might even switch patch-tag to hsp at some point, but overall I have to say hstringtemplate worked out pretty well.&lt;/p&gt;
&lt;p&gt; Linode/amazon cloud. I use linode to host patch-tag, and the aws cloud to occasionally spin up a dev server and experiment. Odd combination perhaps but so far so good.&lt;/p&gt;
&lt;p&gt; Help from unlikely places. At different times and in different ways Matt Elder, Dan Patterson, and Ram Durbha had a major impact in moving patch-tag forward, for no tangible material reward. I hope to get more detailed in another post, but for now I would just like to say thanks. These guys taught me, maybe the most important lesson I learned from patch-tag: that the universe is basicaly a friendly place.&lt;/p&gt;
&lt;p&gt; What went wrong.&lt;/p&gt;
&lt;p&gt; The hyphenated name. Mama mia. Why didn’t I just call it patchtag? The actual reason is that I showed logo mockups with and without hyphens to a couple of friends and everybody seemed to like the hyphen version better. If I could go back in time and do-over, I’d probably ditch the hyphen.&lt;/p&gt;
&lt;p&gt; The macid data store. I will probably be switching patch-tag back to some more traditional data store, probably a vanilla db. No one big reason, just a lot of small ones.&lt;br /&gt;
 Well there is one big one. Patch-Tag app state sometimes just loses data. So, a new user account will get created and then vanish. I think this happens when the out-of-memory killer kills patch-tag before an event has been written to the macid serialization log. Honestly though, I’m not sure. Patch-tag can soldier with a bit of human intervention because the most valuable artifacts (repositories and namespaces) are on the file system and not in macid. Still not good.&lt;br /&gt;
  Then there are the minor issues with macid. Small user / dev community. The documentation just isn’t all that great, and not that many people know how to use it. It was started by the happstack originators (alex jacobsen and co I suppose), and found a home in the current happstack cabal — kudos to jeremy shaw and the other regulars on the happstack list. But it just somehow never seems to have “clicked” as a technology from my perspective. It seems to me, somewhat impressionistically I admit, to use an inordinate amount of memory, and slow down compile time — all those template haskell directives. And I don’t really understand it all that well even after using it for a long time. Finally, macid isn’t as easy to roll back on corruption as I had initially thought — you have to edit a binary file and… ugh. Macid *wants* to be a silver bullet kind of nosql solution that will scale to multiple servers transparently, use native data structures, and make life easy for the developer. It is almost that, but it isn’t there yet and other&lt;br /&gt;
nosql solutions have gotten a lot of traction in the meantime.&lt;br /&gt;
  Finally… it is somewhat painful to admit, but  patch-tag really doesn’t need transactions. I probably could have just  used text files and read/show serialization for state. What the heck was I thinking? I can’t even remember anymore.&lt;/p&gt;
&lt;p&gt;  Cabal/dependency management. I was a bit conflicted on whether to put cabal under the things that went wrong category because I have no intention of giving up cabal and it is clearly a core technology for this kind of project. That said, dependency wrangling proved to be a continuing time and energy drain throughout the project. On a nearly daily basis it seems, things would install one day and wouldn’t the next because somebody had updated a dependency on hackage and this broke something upstream. It doesn’t seem to happen that often in small to medium size haskell codebases, but projects that have a lot of moving parts (eg use happstack) appear more vulnerable to this problem. I suspect yi, gitit, gtk2hs have a similar installer experience.&lt;br /&gt;
  There is a second thing about cabal that actually has an easy fix, but I didn’t discover for a long time. (Thanks Matt Brown for pointing this out!) Cabal install, which was how I compiled for the first year or so, started taking a long time. Like, over a minute. The fix is to just compile with ghc –make, after using cabal install just the first time to pull in all dependencies, and periodically to get updates. This seems to usually go about 4 times as fast, and when trying to stay in flow mode 15 seconds versus over a minute can start making a big difference.&lt;/p&gt;
&lt;p&gt; Gitit fork. Gitit on the whole, I am happy with. I don’t think that many patch-tag users have taken advantage of this feature, including myself, but I really like the portability of keeping documentation alongside repo. Cross polination with another major happstack consumer is another win. Where I have regrets is having forked the gitit code somewhere along the line to get some look and feel features I wanted because I was in a hurry. Now gitit mainline has progressed several versions and I have to undo the fork I did and clear up all these niggling details to sync up, or maintain the fork forever. Whoops.&lt;/p&gt;
&lt;p&gt; Unix security model alongside app security model to get ssh working. This is a mess for portability. If I want to switch servers I need to recreate system accounts, ssh keys, it’s a real drag. Alex Suraci’s Darcsden has an ssh server built in, written in native haskell, and apparently this makes it a lot easier to maintain. Transitioning patch-tag to this library and ditching the unix security details is a high priority for me in terms of future maintainability.&lt;/p&gt;
&lt;p&gt; (Eventual) Moneti$ation. I thought I would go after darcs first, add git/svn other systems once darcs was solid, which would be a big enough market to make a sustainable business. Turned out not to be so easy!&lt;br /&gt;
 On several occasions I was about to do payments, but then I got distracted fixing something without which it wouldn’t have felt right to start charging. Looking back on it, I kind of wish I had already gone after paying customers by this point.&lt;br /&gt;
 The good news for me on a personal level is that having done patch-tag has really helped me get the kind of work I want to have, and advocate for using the technology I like, namely functional programming.&lt;/p&gt;
&lt;p&gt;*********************&lt;/p&gt;
&lt;p&gt;  End ramble down memory lane, and announcing open source.&lt;/p&gt;
&lt;p&gt;   Patch-Tag source is open source at&lt;/p&gt;
&lt;p&gt;http://patch-tag.com/r/tphyahoo/patch-tag-public&lt;/p&gt;
&lt;p&gt; The install is non trivial, so for anybody that wants to check it&lt;br /&gt;
out without jumping through a whole lot of hoops (highly recommended) there is an amazon ami. Find the ami code by getting your amazon key, setting up ec2 command line tools and executing&lt;/p&gt;
&lt;p&gt;thartman@ubuntu:~&amp;gt;ec2-describe-images -a | grep -i patchtag&lt;br /&gt;
IMAGE   ami-febe5597    072945664613/patchtag dev&lt;br /&gt;
ami     072945664613    available       public          i386    machine aki-5f15f636    ari-d5709dbc            ebs&lt;/p&gt;
&lt;p&gt;  You can run this ami from the comand line with ec2-run-instances, or use the aws gui or any of the numerous third party guis. Once you’re in, cd to the patch-tag directory, darcs pull the latest code, cabal install, and you should be good to go.&lt;/p&gt;
&lt;p&gt;  The main reason I am open sourcing patch-tag is to stimulate the haskell web-devel ecosystem by putting a “real world ready” app out into the open.&lt;/p&gt;
&lt;p&gt;  If anybody playing with the opened patch-tag wants to help me out with the project, here are my highest immediate priorities.&lt;/p&gt;
&lt;p&gt;  * Help me choose an open source license for patch-tag. I am considering gnu, bsd3, and CPAL (same license as reddit). What does the community think?&lt;/p&gt;
&lt;p&gt;  * Get patch-tag easier to install and on hackage. Patch-tag is not on hackage, because my feeling is that a program on hackage should Just Work or it violates legitimate expectations, and patch-tag cabal install is far from just working.  Anybody is free to throw patch-tag on hackage under their own user account but I would say better to wait because the install issues *are* fixable with a little love and care.&lt;br /&gt;
  Key subtodos for this are&lt;br /&gt;
     * Unfork gitit and peg patch-tag to mainline gitit&lt;br /&gt;
     * Use same ssh lib as darcsden so I can ditch most or all of the linux sysadmin stuff&lt;br /&gt;
     * Make patch-tag machine instance for platforms other than ec2 (eg virtualbox, vmware, make it runnable on windows, etc).&lt;br /&gt;
  * Diagnose and fix a suspected memory leak that results in regular visits from the dread oom killer.&lt;br /&gt;
  * Transition patch-tag to a better understood / supported persistence solution than macid. My current thinking is sqlite, or possibly just text files with read/show serialization.&lt;br /&gt;
  * Work on macid, and help realize the macid dream of straightforward nosql style persistence that uses native data structures for an easy start and scales to zillions of users with no unpleasant surprises.&lt;/p&gt;
&lt;p&gt;  Finally, and most importantly: Use haskell web-devel. Write documentation, ask questions, get on irc, and make the world a friendly place for people that like haskell and want to write the next facebook/ita/viaweb killer.&lt;/p&gt;
&lt;p&gt; Thanks for tuning in, folks, and happy tagging!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/patchtag.wordpress.com/335/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/patchtag.wordpress.com/335/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/patchtag.wordpress.com/335/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/patchtag.wordpress.com/335/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/patchtag.wordpress.com/335/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/patchtag.wordpress.com/335/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/patchtag.wordpress.com/335/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/patchtag.wordpress.com/335/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/patchtag.wordpress.com/335/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/patchtag.wordpress.com/335/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=blog.patch-tag.com&amp;amp;blog=6363373&amp;amp;post=335&amp;amp;subd=patchtag&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>thomashartman1</name>
			<uri>http://blog.patch-tag.com</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: GSoC Report Week 8: Dealing with bad entries in the cache</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/07/gsoc-report-week-8-dealing-with-bad.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-9028592717301082998</id>
		<updated>2010-07-17T17:48:10+00:00</updated>
		<content type="html">During this week I have been working in the implementation to deal with the bad entries in the cache, to get a bit of background of how the cache works read my &lt;a href=&quot;http://abuiles.blogspot.com/2010/06/gsoc-report-week-5.html&quot;&gt;previous&lt;/a&gt; post. &lt;br /&gt;&lt;br /&gt;When we have remote entries, we consider conflictive the ones that 1) Are not accessible ( give time-out each time we try to access) and 2) are accessible but the repository doesn't exist.&lt;br /&gt;&lt;br /&gt;We consider a bad local entry, the one which points to a repository which doesn't exist.&lt;br /&gt;&lt;br /&gt;At the beginning the idea was to automatically remove those entries from the cache, but as I mentioned in the previous post, sometimes there are externals factors which won't allow me to reach an entry, so the approach taken to solve this problem was just not using that entries during the rest of the command, and at the end notify to the user about it and allow her to delete the bad entries interactively, something like:&lt;br /&gt;&lt;br /&gt;$ There seems to be a problem with the following repos: repo1, repo2, repo3&lt;br /&gt;   Would you like to delete them from the cache ? Y/N&lt;br /&gt;&lt;br /&gt;I haven't implemented the part of notifying to the user about the bad entries, but I introduced the changes to stop using an entry if we have a problem with it, so for the remote repositories which give time out, they get added immediately to the list of bad caches and we don't try to fetch patches from them, if it's a remote entry which doesn't give timeout but throws an error it could be because a) the requested file wasn't there b) the repository doesn't exist, so in this case when I get an error of this type I verify what caused the error, if the reason is that the repository doesn't exist, it is added to the list of bad caches, if not, it is added to a list of &quot;good entries&quot;, if we get again other error because the file doesn't exist, we won't need to check for any of the conditions mentioned before.&lt;br /&gt;&lt;br /&gt;An approach similar to the remote repositories is taken for the local entries which fail.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After I introduce the changes, I did a &lt;a href=&quot;http://darcs.net/manual/node7.html#SECTION00742000000000000000&quot;&gt;lazy get&lt;/a&gt; of &lt;a href=&quot;http://tahoe-lafs.org/trac/tahoe-lafs&quot;&gt;Tahoe-LAFS&lt;/a&gt;, then introduce a bogus entry for the timeout case and check the time difference calling the command &lt;a href=&quot;http://darcs.net/manual/node7.html#SECTION00772000000000000000&quot;&gt;darcs changes&lt;/a&gt;, I did it with my version and with the version in hackage.&lt;br /&gt;&lt;br /&gt;For 2.4.4 (release) which is the version in hackage, it took a bit more than 13 minutes.&lt;br /&gt;&lt;br /&gt;real        13m38.415s&lt;br /&gt;user        0m4.148s&lt;br /&gt;sys         0m1.060s&lt;br /&gt;&lt;br /&gt;Then after I rebuild with my changes the result were really good, taking less than 1 minute to fetch the changes:&lt;br /&gt;&lt;br /&gt;real    0m55.679s&lt;br /&gt;user    0m1.092s&lt;br /&gt;sys     0m0.240s&lt;br /&gt; &lt;br /&gt;Before my changes Darcs will try to establish a connection with each of the entries in the cache for each patch ( waiting for timeout), now with the changes, if it founds a bad entry it doesn't try to use it in the rest of the command, which make faster the operations since we don't waste time trying to use bad resources.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also I implement an environment variable &quot;DARCS_CONNECTION_TIMEOUT&quot; which set the waiting time for a request.&lt;br /&gt;To implement such functionality if we are using libcurl, I setup the CURLOPT_TIMEOUT option, if we are not using libcurl but Network.HTTP, I wrapped the operation of simpleHTTP in the function timeout from System.Timeout. In Linux it works perfect both with libcurl or simpleHTTP, but in Windows I have a problem with the 'timeout' function from System.Timeout, it doesn't behave as expected and it seems like it gets ignored.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the next week I will focus on finishing this, extending the haddock documentation of the cache and tests. Remember you can always check my advance in the &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;wiki&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-9028592717301082998?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #67</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/07/darcs-weekly-news-67.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-7419271666175921236</id>
		<updated>2010-07-11T17:13:06+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Reinier announced the first beta of Darcs 2.5:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024459.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024459.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The next darcs sprint will happen in October in Orleans, France:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024429.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024429.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024430.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-July/024430.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-6&quot;&gt;&lt;h3&gt;Issues resolved in the last week (6)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1288 Ganesh Sittampalam&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;the main darcs code now compiles and runs with witnesses&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1288&quot;&gt;http://bugs.darcs.net/issue1288&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1726 David Markvica&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Files with _darcs prefix are always boring&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1726&quot;&gt;http://bugs.darcs.net/issue1726&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1825 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;do not omit important prims in unrecordedChanges w/ files.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1825&quot;&gt;http://bugs.darcs.net/issue1825&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1845 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;fix &quot;darcs record f&quot; for f a removed, version-tracked file.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1845&quot;&gt;http://bugs.darcs.net/issue1845&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1865 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;make scanBundle produce a well-formed PatchSet.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1865&quot;&gt;http://bugs.darcs.net/issue1865&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1871 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;announceFiles should not give empty list for &quot;.&quot;.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1871&quot;&gt;http://bugs.darcs.net/issue1871&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-83&quot;&gt;&lt;h3&gt;Patches applied in the last week (83)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-07-11&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-7419271666175921236?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #66</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/06/darcs-weekly-news-66.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-3151400547754943458</id>
		<updated>2010-06-28T12:33:41+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Reinier announced the release schedule of Darcs 2.5 (soft freeze July 8th, release August 7th):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024284.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024284.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Reiner also issued a call for volunteers for fixing unassigned bugs that should be fixed for the next release:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024407.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024407.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Eric explained how to make the patch reviewing process more efficient:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024370.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024370.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;And the Sumer of Code blog posts of the last two weeks:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://darcs-gsoc2010.blogspot.com/2010/06/gsoc-2010-progress-report-1.html&quot;&gt;http://darcs-gsoc2010.blogspot.com/2010/06/gsoc-2010-progress-report-1.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://abuiles.blogspot.com/2010/06/gsoc-report-week-4.html&quot;&gt;http://abuiles.blogspot.com/2010/06/gsoc-report-week-4.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://abuiles.blogspot.com/2010/06/gsoc-report-week-5.html&quot;&gt;http://abuiles.blogspot.com/2010/06/gsoc-report-week-5.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-7&quot;&gt;&lt;h3&gt;Issues resolved in the last week (7)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1176 Adolfo Builes&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;1176: caches interfere with --remote-repo flag&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1176&quot;&gt;http://bugs.darcs.net/issue1176&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1277 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;percolate repository format errors correctly.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1277&quot;&gt;http://bugs.darcs.net/issue1277&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1389 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Change predist pref to point people to use 'cabal sdist'&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1389&quot;&gt;http://bugs.darcs.net/issue1389&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1713 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;shorter interactive prompts.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1713&quot;&gt;http://bugs.darcs.net/issue1713&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1857 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Use and update pristine root pointer upon conversion.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1857&quot;&gt;http://bugs.darcs.net/issue1857&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1877 Florent Becker&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;make pull --dry-run --xml terse&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1877&quot;&gt;http://bugs.darcs.net/issue1877&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1879 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;notice unexpected commute failure on merge.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1879&quot;&gt;http://bugs.darcs.net/issue1879&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-53&quot;&gt;&lt;h3&gt;Patches applied in the last week (53)&lt;/h3&gt;&lt;/div&gt; See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-06-28&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-3151400547754943458?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: GSoC Report: Week 5</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/06/gsoc-report-week-5.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-1746166443115328610</id>
		<updated>2010-06-26T20:41:53+00:00</updated>
		<content type="html">In my last post I said I had complete the warm-up phase and that I will start to think about how to handle caches which are no longer available.&lt;br /&gt;&lt;br /&gt;The caching mechanism relies in the files _darcs/prefs/sources and ~/.darcs/sources, basically the content of those file is used to generate the cache entries, each of the entries in that file indicate an alternative source to get files. If we want to specify global caches we put that in ~/.Darcs/sources but if we want an alternative repositories to pull from, we specify that in the repository sources file which is in _Darcs/prefs/sources, also each time we do a pull from an external repository it is added to the sources file&lt;br /&gt;automatically.&lt;br /&gt;&lt;br /&gt;The problem of expiring caches is given because sometimes it happens that repositories that were available, can become unavailable. For example if I had pulled from 3 different repositories and 2 of them stop being available, it could take up to 2 minutes to get each patch, because Darcs could try to fetch every patch it needs from those 2 not longer available repositories, it tries to establish a connection, an then waits for a time-out or a bad response code. After the problem I just mentioned, the idea is to design a mechanism which can help Darcs to establish which entries should be expired.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can split the cache entries in two groups: locals and remotes. Dealing with local non-longer reachable repositories is not a big deal since if we don't find the local entries we can assume they don't exist and we can drop them from the cache and stop trying to fetch files from them. Remote repositories are more tricky, for example I can't eliminate an entry just because it gives a time-out when it tries to establish a connection with it, there are other external factors which could interfere with that particular entry in a given moment&lt;br /&gt;(firewalls).&lt;br /&gt;&lt;br /&gt;So as we seem this is not an easy task, handling remote repositories is out of our hands, we don't have control over the external sources, we don't have control over the network  configuration and so on. So a first approach to this is to mark the entries which are not working and ignore them for the rest of the pulling since we don't want to try to establish a connection with an entry which we know is not available. If we try to establish a connection and fails we can mark it as a bad entry but also I think it could be awkward to wait for a 60 seconds time out, something we could implement is a default time for waiting for a connection to succeed (10-15 seconds maybe) if it doesn't happen between that time we can skip it, mark it as bad, and don't try for the rest of the patches that particular entry. Other approach suggested in the bug tracker was to try to establish a connection with all of the entries and use the one that responds first but then what if all the entries are bad entries?. I have to think more about it, I will discuss on irc and the mailing and then with a clearer idea I will start to code a patch to solve the issue.&lt;br /&gt;&lt;br /&gt;Also I sent a first version of a failing test for the case of unreachable entries, but I need to amend, as there are some  missing cases.&lt;br /&gt;&lt;br /&gt;More of my progress can be found in the &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;wiki&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-1746166443115328610?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Levan: GSoC 2010 Progress Report #1</title>
		<link rel="alternate" type="text/html" href="http://darcs-gsoc2010.blogspot.com/2010/06/gsoc-2010-progress-report-1.html"/>
		<id>tag:blogger.com,1999:blog-6749355461879878917.post-7819878160987987886</id>
		<updated>2010-06-26T09:25:07+00:00</updated>
		<content type="html">This summer I work on making Darcs over networks faster. My project consists of two parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Implement an &lt;a href=&quot;http://bugs.darcs.net/issue1771&quot;&gt;optimization&lt;/a&gt; for getting repository over HTTP. This is done by creating a snapshot of current repository state.&lt;/li&gt;&lt;li&gt;Create a &lt;a href=&quot;http://bugs.darcs.net/issue1773&quot;&gt;smart server&lt;/a&gt; for darcs, which is able to determine the patches needed by client and send them with response. This will be the most effective way to get/pull a repository, since it reduces the number of roundtrips to minimum.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The original complete description of the project can be seen &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Network&quot;&gt;on the wiki&lt;/a&gt;. Note, however, that for smart server more priority is given to the CGI frontend, rather than plain HTTP.&lt;h4&gt;Changes so far&lt;/h4&gt;I glad to report that the most work on HTTP optimization is complete and patches are on their way to the Darcs repository. Some notes on implementation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;getting an optimized repository results in almost the same copy as for unoptimized one. While inventory files may be split in different ways, semantically resulting repositories remain identical.&lt;/li&gt;&lt;li&gt;there is still a couple of issues with special cases, like working with cache and handling interrupts; I will hopefully resolve them in nearest time.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Next week&lt;/h4&gt;At the moment I have started implementing the smart server. Besides the completing of the work on optimize --http issues, on the next week I will refactor the get/pull commands' code, which will result in cleaner API for the server.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/6749355461879878917-7819878160987987886?l=darcs-gsoc2010.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>exlevan (noreply@blogger.com)</name>
			<uri>http://darcs-gsoc2010.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: GSoC Report: Week 4</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/06/gsoc-report-week-4.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-3615616129574155736</id>
		<updated>2010-06-20T20:02:39+00:00</updated>
		<content type="html">I have completed my phase of warm up issues which was oriented to allow me to get familiar with the Darcs system, specifically the cache part. I have sent the patches and they have been applied.&lt;br /&gt;&lt;br /&gt;During the week I worked in finishing issue 1176, continued with the documentation part, more specifically describing in a higher level how a patch is fetch with a given hash, making easier for someone with a non-technical background understand what is happening, fixing a test which was failing in Windows when it shouldn't and finding out why the IO operations over hashedRepos were put in a different module.&lt;br /&gt;&lt;br /&gt;For fixing issue 1176 I did some modifications over some code I had already sent which was about keeping the caches sorted by locality, the initial idea was that anything which was local should be first in the list and then the remote sources, but we realized that between the remotes also exist a &quot;wanted&quot; hierarchy, basically we would prefer to access first http repos over ssh, so the new sorting keeps all the locals first, http in the middle and ssh repos at the end. One of the problems this solve is that weird behaviour of darcs trying to establish a ssh connection when pulling from a http or local repository.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While I was working in the test which was failing we redefine what gets saved in the _darcs/prefs/sources, the global caches were one of those things, it wasn't necessary to have them there because that's why a global cache configuration file exist (~/.darcs/sources), so basically we just drop anything related with global caches before saving the sources file of a repository.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the next week I will start to work in the problem of how to deal with the unused cache, the idea is by the end of the week to have a work plan and write a test case.&lt;br /&gt;&lt;br /&gt;You can check out more of my progress in the &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;wiki&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-3615616129574155736?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>the Patch-Tag blog: patch-tag gets more ram</title>
		<link rel="alternate" type="text/html" href="http://blog.patch-tag.com/2010/06/16/patch-tag-gets-more-ram/"/>
		<id>http://blog.patch-tag.com/?p=331</id>
		<updated>2010-06-16T20:38:26+00:00</updated>
		<content type="html">&lt;p&gt;For free.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;a href=&quot;http://blog.linode.com/2010/06/16/linode-turns-7-big-ram-increase/&quot;&gt;linode&lt;/a&gt;!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/patchtag.wordpress.com/331/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/patchtag.wordpress.com/331/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/patchtag.wordpress.com/331/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/patchtag.wordpress.com/331/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/patchtag.wordpress.com/331/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/patchtag.wordpress.com/331/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/patchtag.wordpress.com/331/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/patchtag.wordpress.com/331/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/patchtag.wordpress.com/331/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/patchtag.wordpress.com/331/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=blog.patch-tag.com&amp;amp;blog=6363373&amp;amp;post=331&amp;amp;subd=patchtag&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>thomashartman1</name>
			<uri>http://blog.patch-tag.com</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #65</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/06/darcs-weekly-news-65.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-8171084783984361587</id>
		<updated>2010-06-12T13:20:40+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Lele Gaifax released a new version of the trac+darcs plugin:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024281.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024281.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://progetti.arstecnica.it/trac+darcs/&quot;&gt;http://progetti.arstecnica.it/trac+darcs/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;We are still looking for a release manager for the release of darcs 2.5. Eric summarized the discussions concerning recruitment and the responsibilities and challenges related to this job:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024268.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024268.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Roadmap: rebase won't be in 2.5, annotate will be improved:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://irclog.perlgeek.de/darcs/2010-06-08#i_2415755&quot;&gt;http://irclog.perlgeek.de/darcs/2010-06-08#i_2415755&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024227.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024227.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-2&quot;&gt;&lt;h3&gt;Issues resolved in the last week (2)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1210 Adolfo Builes&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;global cache gets recorded in _darcs/prefs/sources&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1210&quot;&gt;http://bugs.darcs.net/issue1210&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1874 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;recognise network tests on cabal test command line.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1874&quot;&gt;http://bugs.darcs.net/issue1874&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-21&quot;&gt;&lt;h3&gt;Patches applied in the last week (21)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-06-12&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-8171084783984361587?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Delimited Continuations and version control: an update</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2010/06/delimited-continuations-and-version_10.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-886636038132476412</id>
		<updated>2010-06-10T20:44:01+00:00</updated>
		<content type="html">Last time I presented the idea that version control and delimited continuations are related.  I left off with a question how how to make Darcs fit this model.  I think I understand now what I was missing.&lt;br /&gt;&lt;br /&gt;I forgot to think about Darcs operations in terms of the intermediate operations that get performed.  In Darcs, everything is based on commuting patches, even merging.  Therefore, to see how Darcs fits into this model it's important to think about commuting patches in terms of delimited continuations.&lt;br /&gt;&lt;br /&gt;Specifically, I now believe that commuting two patches introduces marks that can be &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;shift&lt;/span&gt;ed to later.&lt;br /&gt;&lt;br /&gt;I have several ideas for the next steps of this.  One is to start modeling toy versions of svn and darcs in Haskell via delimited continuations.  After that, I would like to figure out the correspondence between the delimited continuations that I've identified and their data structure reification as zippers.  I hope to have more about that later.&lt;br /&gt;&lt;br /&gt;Judging by a paper written by Oleg, there should be a natural way to convert the delimited continuation representation into a zipper.  Investigating this model might shed light on the Darcs patch model, or even lead to a more concise formalism.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-886636038132476412?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #64</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/06/darcs-weekl-news-64.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-7176197499193341965</id>
		<updated>2010-06-06T20:45:15+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;An alpha release of darcs 2.5 might happen soon:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://irclog.perlgeek.de/darcs/2010-06-06#i_2408520&quot;&gt;http://irclog.perlgeek.de/darcs/2010-06-06#i_2408520&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Summer of Code: Alexey Levan sent a first version of patches for darcs optimize --http, and Adolfo Builes sent a patch fixing a bug concerning cache pool choice by darcs:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024159.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024159.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024132.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-June/024132.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-10&quot;&gt;&lt;h3&gt;Issues resolved in the last week (10)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1337 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;mark the test as passing. Likely addressed by noslurps.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1337&quot;&gt;http://bugs.darcs.net/issue1337&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1503 Adolfo Builes&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;prefer local caches to remote ones&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1503&quot;&gt;http://bugs.darcs.net/issue1503&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1610 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;mark the test as passing. Likely fixed by NewSet.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1610&quot;&gt;http://bugs.darcs.net/issue1610&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1817 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;--external-merge broken, by bumping h-s dependency to 0.5.1.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1817&quot;&gt;http://bugs.darcs.net/issue1817&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1839 Florent Becker&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;k broken in interactive selection&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1839&quot;&gt;http://bugs.darcs.net/issue1839&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1843 Florent Becker&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;interactive 'v' prints double entries&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1843&quot;&gt;http://bugs.darcs.net/issue1843&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1848 Florent Becker&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Patch.Choices.makeEverythingSooner is incorrect&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1848&quot;&gt;http://bugs.darcs.net/issue1848&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1860 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;(Un)applying move patches may lead to incomplete pristine.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1860&quot;&gt;http://bugs.darcs.net/issue1860&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1861 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Fix typo in --no-boring help.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1861&quot;&gt;http://bugs.darcs.net/issue1861&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1864 Florent Becker&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;w should only skip one patch&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1864&quot;&gt;http://bugs.darcs.net/issue1864&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-18&quot;&gt;&lt;h3&gt;Patches applied in the last week (18)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-06-06&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-7176197499193341965?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: GSoC Week 2</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/06/gsoc-week-2.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-8834839630486996729</id>
		<updated>2010-06-06T19:05:41+00:00</updated>
		<content type="html">After last week's meeting with Eric ( my mentor) we got a better time line written down, and now I have clear goals for each week until the midterms evaluation, for this week my goals were:&lt;br /&gt;     * Complete issue1503&lt;br /&gt;     * Complete issue1210&lt;br /&gt;     * Description of cache usage for each module in Darcs.Repository&lt;br /&gt;&lt;br /&gt;I'm happy to say that issue 1503 was closed, and I sent the patch for issue1210 but is waiting for revision, also I noticed that I'm more familiar with the darcs structure ( at least the part in which I'm working ) and I've started to know where I have to search for something each time I need a particular functionality.&lt;br /&gt;&lt;br /&gt;When I first sent the patch for issue 1503, Eric and Petr did some comments about design and style which took me to rewrite the original patch, thanks to them I have learn to push myself more into thinking in a bigger view each time I plan to introduce changes somewhere, sometimes you just develop bad practices which you don't see unless someone else point it to you, so I feel more convinced that a good way to learn and become a better programmer is contributing to this kind of projects, where you interact with other people, where they are commenting on you code, making you think better about what you are doing, all this kind of stuff is something you won't learn from the university, but just getting involve in something in the real world.&lt;br /&gt;&lt;br /&gt;Other thing that I learnt was that I had a wrong idea of the concept of tests, I thought the test case for a certain issue would be one were it used to fail before applying the changes, but I didn't thought about how should the test behave in case of failing, here thanks again to Eric for explaining it to me :). &lt;br /&gt;&lt;br /&gt;For the next week I plan to work on issue1176, start to elaborate a test plan for issue 1599, write the test cases for issues 1503 and 1210 and continue my work in the document of the darcs cache.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can always check out my advance and know more about my project in the &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;darcs wiki &lt;/a&gt; where we are documenting everything.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-8834839630486996729?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Delimited Continuations and Version Control</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2010/06/delimited-continuations-and-version.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-4736936267421045057</id>
		<updated>2010-06-06T09:41:55+00:00</updated>
		<content type="html">Delimited continuations give us a way to create markers that we can jump back to.  We can construct the future of the computation, work with the computation so far, or abort the current continuation and go down a new path (create a new future).&lt;br /&gt;&lt;br /&gt;These primitives have a natural correspondence with version control systems that snapshot the world like&lt;br /&gt;SVN.  Focusing on SVN for a moment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The current continuation is the transformation of repository state that you're working on.  It's the diff you're creating.&lt;/li&gt;&lt;li&gt;For commits, each revision created by commit is a marker, so we model this with &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;reset&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Checking out an older revision, or reverting changes, corresponds to &lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;a &lt;/span&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;shift&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;.  We discard the current continuation and move back to a marker created by a specific &lt;/span&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;reset&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;Updating consists of having the client copy learn the current state of the continuation on the server and applying it to the local copy.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Starting a branch corresponds to a &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;reset&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;Merging two branches is a bit trickier I suspect.  I haven't worked out all the details sufficiently to convince myself I have it right, but here is how I think this case works.  The merge first &lt;/span&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;shift&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;s to each of the markers and then combines those two continuations into one future.  The part that seems weird to me about this, is that I haven't really seen examples of delimited continuations were the continuation of two different markers (prompts) were combined.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Now, if you accept the above it gives us some intuition to build on.  Although my correspondence is terribly informal at the moment, if we took some time to make it formal by working out enough details to model it in, say, Haskell, then we'd have a nice formal backing for how SVN works.  I think the above model applies equally well to git, but I'm not confident with git's model.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One insight the above gives, is that the way merging works is not described by the continuations in general.  It's up to the exact combining function to determine the merge.  We know that an automatic merge can fail in practice due to things like conflicts between the changes in the branches.  So, in the SVN implementation considerable work has gone into implementing logic for creating the proper continuation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, in general when a merge, or update, is performed human intervention may be required.  This typically happens when the changes are in conflict.  What this means for our model is that in general the creation of the continuation requires knowledge outside of our model.  What does that correspond to?  Well, it's essentially saying that calculating the correct continuation to resolve the merge is &lt;b&gt;non-deterministic&lt;/b&gt;!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In other words, this continuation view of version control gives us a rigorous way to talk about our intuition.  Of course we can easily tell that merging is going to require human intervention without needing to study delimited continuations, but this framework of reasoning now gives us a more mathematical way to say it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next question is:   How does the delimited continuation model of vcs apply to Darcs?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So far I'm not sure.  I suspect, without working through the details, that in Darcs, every time you record a patch multiple &lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;reset&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;s happen, instead of just one.  The model really breaks down for Darcs because you can seemingly visit points in &quot;history&quot; that did not exist when the patches were created, but they are valid repository states.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;For example, imagine a repository that only exists locally.  You create a sequence of patches.  Now, take a patch in the middle that can be commuted to the end of the patch sequence.  Doing so has not created a new repository state; so far this is fine with the above model as no new markers need to be created.  Suppose we remove the patch from the end of the patch sequence.  This is exactly how darcs unpull works.  The funny thing is, we've now created a state that never existed previously.  So in the delimited continuation model, what marker did we just &lt;/span&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot; class=&quot;Apple-style-span&quot;&gt;shift&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt; to?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot; class=&quot;Apple-style-span&quot;&gt;I don't know the answer yet, but I think it's an interesting question.  I suspect there are multiple &quot;correct&quot; answers, but that only some answers will yield elegant and robust models here.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-4736936267421045057?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Darcs 2 Real-World Push Performance Evaluation</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2008/08/darcs-2-real-world-push-performance.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-2854675905894245184</id>
		<updated>2010-06-06T08:53:20+00:00</updated>
		<content type="html">&lt;span style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;br /&gt;Thanks to &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://koweycode.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Eric Kow&lt;/a&gt;, Duncan Coutts and Ian Lynagh we have some great timing data for using darcs2 and darcs1 to push patches over ssh.&lt;br /&gt;&lt;br /&gt;Eric wrote a script to test three different scenarios of using darcs to push patches:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Scenario l1r1:&lt;/li&gt;This is a local darcs1 client talking to a remote darcs1 executable.&lt;li&gt;Scenario l1r2:&lt;/li&gt;This is a local darcs1 client talking to a remote darcs2 executable.&lt;li&gt;Scenario l2r2:&lt;/li&gt;This is a local darcs2 client talking to a remote darcs2 executable.&lt;/ol&gt;Next, Duncan and Ian provided us with access to 131 real-world repositories hosted at &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://code.haskell.org/&quot; target=&quot;_blank&quot;&gt;http://code.haskell.org&lt;/a&gt;. We ran the script to push patches to each repository, this gave us a ton of times. Then in Excel we crunched these numbers to see that not only is scenario l2r2 no worse than the other two, it’s actually faster on the time consuming cases!&lt;br /&gt;&lt;br /&gt;The one caveat we found is that the minimum start-up time for the first two scenarios is 1 second and in the last scenario it’s 2 seconds. I’m confident we can shave off this 1 second difference in the future.&lt;br /&gt;&lt;img src=&quot;http://spreadsheets.google.com/pub?key=pCrZlx9LBLA2GSXzICOaULw&amp;amp;oid=2&amp;amp;output=image&quot; style=&quot;border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;&quot; height=&quot;219&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;&quot; class=&quot;Apple-style-span&quot;&gt;This is a histogram that shows you how the push times distribute, click on it for a large image. Along the bottom we have how many seconds the push took, and along the vertical axis we have the number of data points in that range. At a glance you can see that most repositories take just a few seconds to push. We can also see that darcs2 is slower on small pushes by about one second. Darcs2 in this chart corresponds to l2r2 and darcs1 corresponds to l1r1.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On a side note, we also tested converting all the repositories to darcs2 repository format and that worked great as well. Converting all the repositories at once takes less than 20 minutes on my laptop without a single error. There were a few warnings, but that’s to be expected as potentially exponential merges are fixed in the new darcs2 format, but darcs emits a warning when fixing them.&lt;br /&gt;&lt;br /&gt;For anyone that wants to see the raw numbers click &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://files.codersbase.com/darcs-times.htm&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. The link does work, but not all web browsers are showing the numbers. Opera and FF3 work on some platforms and not others.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-2854675905894245184?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Type-Correct Changes — A Safe Approach to Version Control Implementation</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2009/03/type-correct-changes-safe-approach-to.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-7268393640516106517</id>
		<updated>2010-06-06T08:14:44+00:00</updated>
		<content type="html">&lt;span style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;br /&gt;On March 20th, 2009, I successfully defended my Master’s thesis in Computer Science.&lt;br /&gt;&lt;br /&gt;Abstract:&lt;br /&gt;Ensuring correctness of real-world software applications is a challenging task. Testing can be used to find many bugs, but is typically not sufficient for proving correctness or even eliminating entire classes of bugs. However, formal proof and verification techniques tend to be very heavy weight and are simply not available for day to day use in many common programming environments.&lt;br /&gt;&lt;br /&gt;We demonstrate a form of light-weight proof assistant by using the type checking features of the programming language Haskell with existing extensions. We apply this work to the Open Source version control system Darcs. The properties checked by our approach are derived directly from the data model used by Darcs. This allows us to eliminate entire classes of bugs at compile time. We also examine how these techniques improve the quality of the Darcs codebase and the challenges that arise when applying these techniques in practice.&lt;br /&gt;&lt;br /&gt;You can read the &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://files.codersbase.com/thesis.pdf&quot; target=&quot;_blank&quot;&gt;full thesis here&lt;/a&gt;. The slides from my &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://files.codersbase.com/thesistalk.pdf&quot; target=&quot;_blank&quot;&gt;presentation are located here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The bottom line is that we used Generalized Algebraic Data Types (GADTs) to enforce proper patch manipulations. In the Darcs implementation, patches are stored in sequences and rearranging those sequences can only be done is very specific ways. Our use of GADTs allowed us to express those constraints using existentially quantified types, phantom types, and witness types. If you’ve ever wondered how to use GADTs in real-world software, this serves as a very illustrative example.&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-7268393640516106517?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Understanding Darcs Commute</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2008/10/understanding-darcs-commute.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-4382491760195973846</id>
		<updated>2010-06-06T08:14:44+00:00</updated>
		<content type="html">&lt;span style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;br /&gt;People often want to understand how commute on patches works. Usually we start by saying:&lt;br /&gt;&lt;blockquote&gt;Given two patches, A and B, if A and B commute then: AB &amp;lt;--&amp;gt; B’ A’, for some B’ and A’.&lt;/blockquote&gt;Naturally people ask, “But what is the relationship between A and A’ or B and B’?” This is a very important question and I’ll provide you with some insight.&lt;br /&gt;&lt;br /&gt;Suppose we have a repository with 2 files, a and b. We could then make the following operations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;mv b c&lt;/li&gt;&lt;li&gt;mv a b&lt;/li&gt;&lt;li&gt;mv c a&lt;/li&gt;&lt;/ul&gt;You can think of each operation as a transformation on the ’state’ of your repository.&lt;br /&gt;Suppose also, that we make an edit to a, and an edit to b.&lt;br /&gt;&lt;br /&gt;Let’s name the above, using T for transformation:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;T_bc = mv b c&lt;/li&gt;&lt;li&gt;T_ab = mv a b&lt;/li&gt;&lt;li&gt;T_ca = mv c a&lt;/li&gt;&lt;li&gt;T_a = edit a&lt;/li&gt;&lt;li&gt;T_b = edit b&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You can imagine that if I gave the diff for T_a and the diff for T_b that you could apply those diffs in either order to your repository and get the same final ’state’. Meaning, a and b are the same whether you update a first or b first.&lt;br /&gt;&lt;br /&gt;But, suppose instead that I performed T_bc, T_ab, and then T_ca. This has the effect of swapping a and b by name. Now suppose you applied the diffs T_a and T_b. What would you want the outcome to be?&lt;br /&gt;It turns out, that it matters which operations were created first. If you created the diffs T_a and T_b *before* you did the operations of the swap, then you should expect that after the swap the diff for T_a actually modifies b, whereas T_b should modify a. On the other hand, if you created the diffs T_a and T_b *after* the swap, then you expect T_a to modify a and T_b to modify b.&lt;br /&gt;&lt;br /&gt;We have an intuitive idea of ‘context’ now. As in, what is the context that T_a and T_b were created in? Knowing this will tell us how they transform the repository state.&lt;br /&gt;&lt;br /&gt;Intuitively, it seems as though we need to remember the ‘context’ in which T_a and T_b were created. So let’s say that the operations performed up to the point where T_a is created is the context of T_a. In other words, the context for T_a is sequence of transformations that existed when T_a was created. Similarly, since T_a is a transformation, creating it results in a new context, which is the old context plus T_a. We could say that T_b has this context. Going a bit further, it seems like we should talk about how T_a has a pre-context and it also has a post-context.&lt;br /&gt;&lt;br /&gt;For example, if we created T_a before doing the swap, then the pre-context might include two transformations, one that creates a and another one that creates b. The post-context would then include those two transformations and T_a itself. If we created T_a after doing the swap, the pre-context and post-contexts of T_a would include T_bc, T_ab and T_ca also.&lt;br /&gt;&lt;br /&gt;Now a side note about commutative functions. Consider the function created by composing T_a and T_b, let’s write T_a . T_b. Recall, that with function composition parameters start on the right and pass through the sequence to the left. As discussed in the intro, T_a . T_b is equal to T_b . T_a. This is because T_a and T_b are independent of each other. Thus, we would say that the functions T_a and T_b are commutative functions. This means, that changing their order of application does not change the result.&lt;br /&gt;&lt;br /&gt;We are saying that:&lt;br /&gt;&lt;blockquote&gt;T_a . T_b = T_b . T_a&lt;/blockquote&gt;Because T_a and T_b are commutative it doesn’t matter which order we compose them. If we restrict our view to just the repository above with only the files a, b and no c, then on this restricted set of repository state how do these two compare?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;T_b . T_a&lt;/li&gt;&lt;li&gt;T_a . T_b . (T_ca . T_ab . T_bc)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In plain English, the first one edits a and then b, the second one swaps a and b, edits b and finally edits a.&lt;br /&gt;As far as the mathematics of it is concerned, the first one will edit a and b, while the second one will have T_a editing a different a than the first one and T_b editing a different b than the second one.&lt;br /&gt;Going a bit further, let’s say that T_a and T_b were created without any of T_bc, T_ab or T_ca in their context. So we could have two scenarios.&lt;br /&gt;&lt;br /&gt;We could, for example, start with T_b and T_a, swap their order and then do the swap of a and b afterwards. That would give us:&lt;br /&gt;&lt;blockquote&gt;T_b . T_a&lt;/blockquote&gt;and&lt;br /&gt;&lt;blockquote&gt;(T_ca . T_ab . T_bc) . T_a . T_b&lt;/blockquote&gt;Intuitively, it seems like T_a and T_bc are commutative functions, eg., T_bc . T_a = T_a . T_bc. So we could rewrite the second one as this:&lt;br /&gt;&lt;blockquote&gt;T_ca . T_ab . T_a . T_bc . T_b&lt;/blockquote&gt;Now, suppose when we commute the function T_a with T_ab, that we replace T_a with T_a’. T_a’ is like T_a except that T_a’ makes the edits of T_a to b instead of a. After all, this results in T_a’ editing the correct file after the rename. Similarly, when we commute T_b with T_bc, T_b is replaced with T_b’ that edits c instead of b. When we commute T_b’ with T_ca we replace T_b’ with T_b” that edits a instead of c.&lt;br /&gt;&lt;br /&gt;So, the above goes through these steps:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;T_ca . T_a’ . T_ab . T_bc . T_b (commute T_a to the left)&lt;/li&gt;&lt;li&gt;T_a’ . T_ca . T_ab . T_bc . T_b (commute T_a’ to the left)&lt;/li&gt;&lt;li&gt;T_a’ . T_ca . T_ab . T_b’ . T_bc (commute T_b to the left)&lt;/li&gt;&lt;li&gt;T_a’ . T_ca . T_b’ . T_ab . T_bc (commute T_b’ to the left)&lt;/li&gt;&lt;li&gt;T_a’ . T_b” . T_ca . T_ab . T_bc&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The last one will then have T_a’ and T_b” making edits the same file contents as T_a and T_b respectively, even though the names of the files were changed by the swap.&lt;br /&gt;&lt;br /&gt;So, if you’ve followed me to this point, then you now have the intuition for what we mean when two patches A and B, commute to B’ and A’, as AB &amp;lt;--&amp;gt; B’ A’. You can think of a patch as being one of the above transformations along with the context of the transformation. You might also notice that commute of patches must be doing something to the context of the patches.&lt;br /&gt;&lt;br /&gt;Patch commute has the potential to update the context and transformation the patches it swaps OR it could update the context and leave the state transformations equal to what they were in the input. Patch commute can also fail, but we’re ignoring that case for the moment.&lt;br /&gt;&lt;br /&gt;Thinking back to how we arrived at the need for context, you might notice that for each context, that is each sequence of operations, we get one unique repository state. This is a very important property of context. Without it, context wouldn’t really be useful. Also, notice that the opposite is not true, repository state does not determine the context. Which makes sense, because there are lots of operations you can do that get the repository to a particular state, so given a state how do you know what was done?&lt;br /&gt;&lt;br /&gt;The next important property we want for commuting patches is that once two patches have been commuted, you can commute them again to undo the commutation. In fact, it turns out the examples above are saying we want contexts to determine the same state if you commute the patches inside the context (again, context is a sequence of patches!).&lt;br /&gt;&lt;br /&gt;For R to be an equivalence relation, we need three things:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;x R x, is true for all x&lt;/li&gt;&lt;li&gt;if x R y then y R x&lt;/li&gt;&lt;li&gt;if x R y and y R z then x R z&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Here, we replace x R y with “the sequencing, or order, of x can be obtained by commuting adjacent elements of y”. Roughly how to prove each:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;either claim that 0 commutes satisfies definition of R or check that commute is self-inverting&lt;/li&gt;&lt;li&gt;relies on self-inverting nature, I think&lt;/li&gt;&lt;li&gt;messier but should still be provable&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I’m pretty sure both (2) and (3) could be done with a brute force proof that considered all the pairings of patch types in their general cases. Start with all sequences of length 2, then 3 and I think at that point you could make an inductive argument to hit sequences of length n. This would be a lot of work, and I’m not convinced it could be fully automated.&lt;br /&gt;&lt;br /&gt;Why would we want to show the above? Showing that R is a relation would tell us that sequences of patches are equivalent under commute. Now, combine this with the idea that context determines the state uniquely and now we know sets of patches uniquely determine your repository.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-4382491760195973846?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Jason Dagit: Darcs Hacking Sprint — Summary from Portland Team</title>
		<link rel="alternate" type="text/html" href="http://blog.codersbase.com/2008/10/darcs-hacking-sprint-summary-from.html"/>
		<id>tag:blogger.com,1999:blog-2162461901212281926.post-1119345114761663919</id>
		<updated>2010-06-06T08:14:44+00:00</updated>
		<content type="html">&lt;span style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;br /&gt;The weekend of 24-25 October 2008 was an &lt;strong&gt;International&lt;/strong&gt; darcs hacking sprint! The sprint was a lot of fun and we’ll be having more. The sprint provides a very productive atmosphere for hacking.&lt;br /&gt;&lt;br /&gt;We had a team in Brighton with posts from &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://koweycode.blogspot.com/2008/10/darcs-hacking-sprints-some-pictures.html&quot; target=&quot;_blank&quot;&gt;Day 1&lt;/a&gt; and &lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://koweycode.blogspot.com/2008/10/darcs-hacking-sprint-team-brighton-day.html&quot; target=&quot;_blank&quot;&gt;Day 2&lt;/a&gt;. We also had team in Paris but I don’t have a link for them.&lt;br /&gt;&lt;br /&gt;Here are just some of the highlights from the Portland Team:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Adding language pragmas in all files:&lt;ul&gt;&lt;li&gt;makes the code cleaner when it’s time to drop ghc6.6 support&lt;/li&gt;&lt;li&gt;all required language extensions are now known&lt;/li&gt;&lt;li&gt;makes it easier to check for Haskell’ compatibility&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Removed OldFastPackedStrings&lt;/li&gt;&lt;li&gt;Replaced FastPackedStrings api in favor of Data.ByteString api&lt;ul&gt;&lt;li&gt;lots of small optimizations, less pack/unpack, more standard&lt;br /&gt;ByteString code&lt;/li&gt;&lt;li&gt;removed a fair bit of C code, new code compiles to same or&lt;br /&gt;faster assembly (Don checked)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;cabalization:&lt;ul&gt;&lt;li&gt;no autoconf or make needed&lt;/li&gt;&lt;li&gt;cabal install tested and working on linux / osx, windows testing&lt;br /&gt;soon to follow&lt;/li&gt;&lt;li&gt;builds out of the box w/ 6.8 and 6.10&lt;/li&gt;&lt;li&gt;configure is much faster&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a style=&quot;color: #2244bb;&quot; href=&quot;http://galois.com/~dons/images/darcs.svg&quot; target=&quot;_blank&quot;&gt;module graph&lt;/a&gt; (depends on cabalization)&lt;/li&gt;&lt;li&gt;Duncan improved zlib&lt;ul&gt;&lt;li&gt;soon to be available on hackage&lt;/li&gt;&lt;li&gt;allows us to replace our own implementation of zlib bindings&lt;br /&gt;with the main stream one&lt;/li&gt;&lt;li&gt;will make building on windows easier&lt;/li&gt;&lt;li&gt;can use lazy bytestrings&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;Here are some random pictures from the Portland Sprint.&lt;br /&gt;Packages we should consider:&lt;br /&gt;&lt;img src=&quot;http://galois.com/~dons/images/darcs-oct-08/Image003.jpg&quot; alt=&quot;Packages we should consider&quot; /&gt;&lt;br /&gt;The TODO list we made on the first day:&lt;br /&gt;&lt;img src=&quot;http://galois.com/~dons/images/darcs-oct-08/Image004.jpg&quot; alt=&quot;The TODO list we made on the first day&quot; /&gt;&lt;br /&gt;Checking on Team Brighton:&lt;br /&gt;&lt;img src=&quot;http://galois.com/~dons/images/darcs-oct-08/Image006.jpg&quot; alt=&quot;Checking on Team Brighton&quot; /&gt;&lt;br /&gt;Duncan and Jason looking at the projector:&lt;br /&gt;&lt;img src=&quot;http://galois.com/~dons/images/darcs-oct-08/Image007.jpg&quot; alt=&quot;Duncan and Jason looking at the projector&quot; /&gt;&lt;br /&gt;Ah, beautiful Portland in fall:&lt;br /&gt;&lt;img src=&quot;http://galois.com/~dons/images/darcs-oct-08/Image002.jpg&quot; alt=&quot;Ah, beautiful Portland in fall&quot; /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2162461901212281926-1119345114761663919?l=blog.codersbase.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>dagitj (noreply@blogger.com)</name>
			<uri>http://blog.codersbase.com/search/label/darcs</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: GSoC Week 1: Getting to know you</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/05/gsoc-week-1-getting-to-know-you.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-2207363749507222586</id>
		<updated>2010-05-30T20:15:37+00:00</updated>
		<content type="html">It has been almost a week since hacking started, during the week my activities were focused in getting to know Darcs code, working in the skeleton of a high level document for the cache system, and looking at one of the warm-up issues, I won't say I already know how it all works, but I'm picking up new things each day and that's fine :).&lt;br /&gt;&lt;br /&gt;From the Darcs code section, I know most of my work would be done in the module Darcs.Repository where the cache code lives, I still need to go deeply and see why, how, and what for is it used in each of the submodules, and how the cache system fits in all the system.&lt;br /&gt;&lt;br /&gt;The first sketch of the skeleton for the high level document can be found in &lt;a href=&quot;http://wiki.darcs.net/DarcsInternals/CacheSystem&quot;&gt;[1]&lt;/a&gt;, we are putting all the administrative stuff in &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;[4]&lt;/a&gt; to help us to keep track of everything.&lt;br /&gt;&lt;br /&gt;About one of the first warm-up issues (1503), I found a possible way to fix it, you can read more about it in the last comment in &lt;a href=&quot;http://bugs.darcs.net/issue1503&quot;&gt;[2]&lt;/a&gt;, I haven't sent a patch yet, but I hope to have it before Tuesday.&lt;br /&gt;&lt;br /&gt;While I was looking at this issue we noticed something weird in the log and we found another issue &lt;a href=&quot;http://bugs.darcs.net/issue1854&quot;&gt;[3]&lt;/a&gt;, I have a test left to do, and check if that is a problem specific to the installation in my server or is something from the current branch.&lt;br /&gt;&lt;br /&gt;For the coming week I plan to:&lt;br /&gt;&lt;br /&gt; - Close issue 1503.&lt;br /&gt; - Pick up other issue.&lt;br /&gt; - Elaborate more in the &quot;Internal&quot; section of the document.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1]- &lt;a href=&quot;http://wiki.darcs.net/DarcsInternals/CacheSystem&quot;&gt;http://wiki.darcs.net/DarcsInternals/CacheSystem&lt;/a&gt;&lt;br /&gt;[2]- &lt;a href=&quot;http://bugs.darcs.net/issue1503&quot;&gt;http://bugs.darcs.net/issue1503&lt;/a&gt;&lt;br /&gt;[3]- &lt;a href=&quot;http://bugs.darcs.net/issue1854&quot;&gt;http://bugs.darcs.net/issue1854&lt;/a&gt;&lt;br /&gt;[4]- &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-2207363749507222586?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #63</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/05/darcs-weekly-news-63.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-6874705526299785664</id>
		<updated>2010-05-30T10:21:48+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Darcs 2.4.4 was released this week:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024057.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024057.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Eric talked about the ongoing work in fixing the bug about non-ASCII filenames:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024103.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024103.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Adolfo wrote his first Google Summer of Code blog report:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://abuiles.blogspot.com/2010/05/gsoc-week-1-getting-to-know-you.html&quot;&gt;http://abuiles.blogspot.com/2010/05/gsoc-week-1-getting-to-know-you.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-2&quot;&gt;&lt;h3&gt;Issues resolved in the last week (2)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1763 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;use correct filename encoding in conflictors.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1763&quot;&gt;http://bugs.darcs.net/issue1763&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1784 Guillaume Hoffmann&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;push and pull print remote address right away&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1784&quot;&gt;http://bugs.darcs.net/issue1784&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-14&quot;&gt;&lt;h3&gt;Patches applied in the last week (14)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-05-30&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-6874705526299785664?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #62</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/05/darcs-weekly-news-62.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-4049131019704453975</id>
		<updated>2010-05-18T06:49:30+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Unexpectedly, we got a second student funded by the Google Summer of Code this year. Adolfo Builes will work on improving the global cache:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024019.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024019.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://abuiles.blogspot.com/2010/05/improving-darcs-performance-my-gsoc.html&quot;&gt;http://abuiles.blogspot.com/2010/05/improving-darcs-performance-my-gsoc.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Darcs 2.4.4 is going to be released in one week if no bug is discovered in its current source (most importantly under Windows):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024030.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024030.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024032.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024032.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024037.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024037.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;We are looking for a new release manager:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024038.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/024038.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-1&quot;&gt;&lt;h3&gt;Issues resolved in the last week (1)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1841 Jeremy Cowgar&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Apply binary mode to ssh process and patch file handles.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1841&quot;&gt;http://bugs.darcs.net/issue1841&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-22&quot;&gt;&lt;h2&gt;Patches applied in the last week (22)&lt;/h2&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-05-18&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-4049131019704453975?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Adolfo Builes: Improving Darcs Performance - My GSoC Project.</title>
		<link rel="alternate" type="text/html" href="http://abuiles.blogspot.com/2010/05/improving-darcs-performance-my-gsoc.html"/>
		<id>tag:blogger.com,1999:blog-5264335596042843369.post-6759731564688232931</id>
		<updated>2010-05-12T03:05:11+00:00</updated>
		<content type="html">I was accepted for this year GSoC, I will be working for Haskell.org and my project will be focus in improvements of Darcs performance, specifically I'll work in the global cache, you can find a full specification of my project &lt;a href=&quot;http://wiki.darcs.net/GoogleSummerOfCode/2010-Cache&quot;&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm pretty excited about it and really looking forward to start working on this, also my mentor would by Eric Kow (a.k.a kowey).&lt;br /&gt;&lt;br /&gt;I'll try to keep weekly updates of how my work is going, and let you know about the ups and downs that I find in my way.&lt;br /&gt;&lt;br /&gt;Thanks Haskell.org, thanks Darcs and last but not least thanks Google for given us this awesome opportunity.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/5264335596042843369-6759731564688232931?l=abuiles.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Adolfo Builes (noreply@blogger.com)</name>
			<uri>http://abuiles.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #61</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/05/darcs-weekly-news-61.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-4869146518528672536</id>
		<updated>2010-05-09T22:42:00+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Eric announced the release of darcs 2.4.3, which fixes critical bugs under Windows and fixes the performance regression of darcs convert:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023972.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023972.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.darcs.net/Releases/2.4&quot;&gt;http://wiki.darcs.net/Releases/2.4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.darcs.net/Binaries&quot;&gt;http://wiki.darcs.net/Binaries&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Simon Michael proposed a cleanup of the repository format names and gathered a few answers and proposals:&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023936.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023936.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023969.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-May/023969.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;ol start=&quot;3&quot; style=&quot;&quot;&gt;&lt;li&gt;Ganesh and Petr explained why it is not recommended anymore to build darcs with GHC 6.8:&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023774.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023774.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023776.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023776.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.darcs.net/Debian&quot;&gt;http://wiki.darcs.net/Debian&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-7&quot;&gt;&lt;h3&gt;Issues resolved in the last week (7)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue64 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;store metadata as UTF-8, autodetect UTF-8, and don't normalize to NFC&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue64&quot;&gt;http://bugs.darcs.net/issue64&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1232 Dino Morelli&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;darcs convert forgets _darcs/prefs/prefs&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1232&quot;&gt;http://bugs.darcs.net/issue1232&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1760 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Fix working directory handling in Commands.Convert.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1760&quot;&gt;http://bugs.darcs.net/issue1760&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1769 Matthias Kilian&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;add support for --match 'comment ...'&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1769&quot;&gt;http://bugs.darcs.net/issue1769&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1814 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Include contrib/darcs-errors.hlint in release tarball.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1814&quot;&gt;http://bugs.darcs.net/issue1814&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1824 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;avoid PACKAGE_VERSION under Windows.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1824&quot;&gt;http://bugs.darcs.net/issue1824&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1837 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;Add readWorking and use it in pristineFromWorking.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1837&quot;&gt;http://bugs.darcs.net/issue1837&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-115&quot;&gt;&lt;h3&gt;Patches applied in the last week (115)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-05-10&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-4869146518528672536?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #60</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/04/darcs-weekly-news-60.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-7932042696658887964</id>
		<updated>2010-04-24T09:15:42+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;darcs 2.4.1 was released, fixing a couple of bugs of version 2.4.0. However, a serious bug under Windows was discovered, so Windows users should still stick to the 2.3.1 version, while 2.4.2 is not out:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023647.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023647.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023736.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023736.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023769.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023769.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Three students wrote their applications for this year's Summer of Code. Projects members discussed the priorities of darcs: network speed, local speed or UI ?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023628.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023628.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023631.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023631.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023673.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-April/023673.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-3&quot;&gt;&lt;h3&gt;Issues resolved in the last week (3)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1159 Dmitry Kurochkin&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;smart caches union.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1159&quot;&gt;http://bugs.darcs.net/issue1159&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1645 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;bump hashed-storage to 0.4.11; don't follow symlinks.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1645&quot;&gt;http://bugs.darcs.net/issue1645&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1756 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;bump hashed-storage dependency to 0.4.10&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1756&quot;&gt;http://bugs.darcs.net/issue1756&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-29&quot;&gt;&lt;h3&gt;Patches applied in the last week (29)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-04-20&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-7932042696658887964?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Max Battcher: musdex 10.04.04</title>
		<link rel="alternate" type="text/html" href="http://blog.worldmaker.net/2010/apr/04/musdex-100404/"/>
		<id>http://blog.worldmaker.net/2010/apr/04/musdex-100404/</id>
		<updated>2010-04-05T00:13:29+00:00</updated>
		<content type="html">&lt;p&gt;Just uploaded the latest &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;musdex&lt;/span&gt;&lt;/tt&gt; (10.04.04) to PyPI and making a quick note here. 10.04.04 is a somewhat significant refactor of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;musdex&lt;/span&gt;&lt;/tt&gt;, which won't have too many obvious differences without a bit of configuration changing. The new additions is a customizable handler system that will allow for support for other archive formats (beyond just Zip archives), and a customizable way to specify post-extraction &quot;formatters&quot; to make extracted files even more useful under source control. There are no new handlers yet (although I'm considering building an SQLite one for proof-of-concept), but two built-in formatters that can opted in: &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xmllint&lt;/span&gt;&lt;/tt&gt; and &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;remove_carriage_returns&lt;/span&gt;&lt;/tt&gt;. Details in the documentation including the basics you will need to build a custom formatter or handler.&lt;/p&gt;


&lt;a href=&quot;http://blog.worldmaker.net/2010/apr/04/musdex-100404/&quot;&gt;Read More »&lt;/a&gt;</content>
		<author>
			<name>Max Battcher</name>
			<uri>http://tags.worldmaker.net/darcs/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #59</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/04/darcs-weekly-news-59.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-1014280578780088793</id>
		<updated>2010-04-04T17:48:55+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;Lennart Kolmodin announced that darcs 2.4 was available in Gentoo Linux:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023513.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023513.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mark Stosberg talked about darcs handling large repositories, then spawning a discussion on git vs darcs from the UI point of view:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023526.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023526.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023539.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023539.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If you haven't already read it on this blog, you can have a look at Eric's report from the last darcs hacking sprint:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.darcs.net/2010/03/darcs-hacking-sprint-4-report.html&quot;&gt;http://blog.darcs.net/2010/03/darcs-hacking-sprint-4-report.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-4&quot;&gt;&lt;h3&gt;Issues resolved in the last week (4)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue1208 dixiecko@gmail.com&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;wish: darcs trackdown --bisect&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1208&quot;&gt;http://bugs.darcs.net/issue1208&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1427 Guillaume Hoffmann&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;accept gzipped patch bundles in darcs apply&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1427&quot;&gt;http://bugs.darcs.net/issue1427&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1739 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;make ColorPrinter handle characters &amp;gt; 255&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1739&quot;&gt;http://bugs.darcs.net/issue1739&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1756 Petr Rockai&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;new h-s handles file removals correctly in Index.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1756&quot;&gt;http://bugs.darcs.net/issue1756&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1765 Reinier Lamers&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;refuse to remove non-tracked directories recursively&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1765&quot;&gt;http://bugs.darcs.net/issue1765&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-29&quot;&gt;&lt;h3&gt;Patches applied in the last week (29)&lt;/h3&gt;  &lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-04-04&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-1014280578780088793?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs hacking sprint 4 report</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/03/darcs-hacking-sprint-4-report.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-1730346027851875549</id>
		<updated>2010-03-29T20:53:57+00:00</updated>
		<content type="html">&lt;span style=&quot;font-style: italic;&quot;&gt;Updated 2010-03-29 with more photos (thanks, David Anderson!), a small correction and a note about the SFC&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The Fourth Darcs Hacking Sprint took place last weekend (19 to 21 March) as part of the Zurich Haskell Hackathon. We had a very productive sprint, a bit of code written, polished off many key discussions, had a little beer and a lot of fun.&lt;div id=&quot;overview&quot;&gt;&lt;h3&gt;Overview&lt;/h3&gt;&lt;p&gt;In this sprint, we worked on finishing some performance work for the upcoming Darcs 2.5 release this summer (hashed storage, patch index, global caches, inventory hashing); planning our work for the Darcs 2.6 release next year (smart servers, cache cleanup, darcs rebase) and working with new users of the Darcs library.&lt;/p&gt;&lt;div id=&quot;issues-resolved&quot;&gt;&lt;h4&gt;Issues resolved&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;issue643 darcs send -o output - Guillaume Hoffmann&lt;/li&gt;&lt;li&gt;issue1473 annotate command line - Stefan Wehr&lt;/li&gt;&lt;li&gt;issue1456 portable darcs dist - Guillaume Hoffmann&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;new-darcs-hackers&quot;&gt;&lt;h3&gt;New Darcs Hackers&lt;/h3&gt;&lt;p&gt;We're always happy to work with new Darcs developers. At this sprint, we were joined by four new contributors.&lt;/p&gt;&lt;div id=&quot;guillaume-hoffmann&quot;&gt;&lt;h4&gt;Guillaume Hoffmann&lt;/h4&gt;&lt;p&gt;Guillaume has been writing our Darcs Weekly News articles for a year now. Over the weekend he got his first taste of Darcs hacking, knocking out three ProbablyEasy bugs (darcs dist internals, darcs send -o UI, darcs apply with gzipped patch bundles). Guillaume reports that he can see himself doing more of this in the future!&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;steven-keuchel&quot;&gt;&lt;h4&gt;Steven Keuchel&lt;/h4&gt;&lt;p&gt;Steven worked on a new feature to display the file contents hashed associated with any patch. This makes it easier for third party tools to inspect the patch files behind Darcs.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;stefan-wehr-and-david-leuschner&quot;&gt;&lt;h4&gt;Stefan Wehr and David Leuschner&lt;/h4&gt;&lt;p&gt;Stefan and David mostly worked on the Darcs Patch Manager, but to warm up, they tackled a couple of ProbablyEasy bugs, particularly a bug in darcs annotate that was affecting Redmine&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;hacking-continued...&quot;&gt;&lt;h3&gt;Hacking continued...&lt;/h3&gt;&lt;a href=&quot;http://lh3.ggpht.com/_wlGLHRg69T4/S6Yqkr2KROI/AAAAAAAAAZM/z2_f-WSZW2U/s640/IMG_1385.JPG&quot;&gt;&lt;img src=&quot;http://lh3.ggpht.com/_wlGLHRg69T4/S6Yqkr2KROI/AAAAAAAAAZM/z2_f-WSZW2U/s640/IMG_1385.JPG&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 373px; height: 248px;&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;div id=&quot;bugfix-darcs-on-windows-shares&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Darcs hackers at work (Saturday)&lt;/span&gt;&lt;br /&gt;Photo taken from David Anderson's Picasa site&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;Bugfix: Darcs on Windows shares&lt;/h4&gt;&lt;p&gt;Salvatore tracked down the Windows regression on 2.4 that make Darcs not work on windows shares.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;performance-fast-darcs-annotate&quot;&gt;&lt;h4&gt;Performance: Fast darcs annotate&lt;/h4&gt;&lt;p&gt;Benedikt Schmidt continued his work on the patch index (formerly known as the filecache). The patch index keeps track of which patches affect which files. This index will bring a big boost to darcs annotate performance, particularly for files which are affected by relative small number of patches.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;performance-global-cache&quot;&gt;&lt;h4&gt;Performance: Global cache&lt;/h4&gt;&lt;p&gt;Luca continued his work on breaking up the global cache ($HOME/.darcs/cache) into buckets for faster access. Working with Reinier and Petr, Luca has developed an approach to migrating from old style caches to the new style bucketed ones. He has also improved the implementation to use hard links, to avoid disk space doubling and to preserve backwards compatibility with prior versions of Darcs.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;windows-installer&quot;&gt;&lt;h4&gt;Windows installer&lt;/h4&gt;&lt;p&gt;Salvatore put together a nice Windows installer using the &lt;a href=&quot;http://hackage.haskell.org/package/bamse&quot;&gt;bamse package&lt;/a&gt;. It looks like we will be able to use this for the planned Darcs 2.5 release this summer. This work will also open the door to nicer integration with Windows tools, for example, using a bundled Tortoise SSH for better experience working with SSH passphrases.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;interactive-cherry-picking&quot;&gt;&lt;h4&gt;Interactive cherry picking&lt;/h4&gt;&lt;p&gt;Florent improved the quality of the Darcs cherry picking code, making it easier to fine tune our user interface and some day support graphical interfaces via the Darcs library. Witnessed list zippers for the win?&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;interactive-diff&quot;&gt;&lt;h4&gt;Interactive diff&lt;/h4&gt;&lt;p&gt;Florent also started work on adding Darcs's interactive cherry picking to darcs diff, making it possible to choose a set of patches to view as a diff.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;performance-hashed-storage-completion&quot;&gt;&lt;h4&gt;Performance: Hashed storage completion&lt;/h4&gt;&lt;p&gt;Darcs has a representation of file and directory trees called slurpies. Petr polished off his work to replace the slurpies with his more efficient, general purpose hashed-storage library. Slurpies are going away, and Darcs will be faster for it. He and Ganesh also discussed how to gracefully transition from repositories created before the hashed-storage refactor.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;performance-using-tags-when-writing-patches&quot;&gt;&lt;h4&gt;Performance: Using tags when writing patches&lt;/h4&gt;&lt;p&gt;Petr ported work by David Roundy to solve a &lt;a href=&quot;http://bugs.darcs.net/issue1106&quot;&gt;scalability regression&lt;/a&gt; in hashed repositories. For darcs commands that write out patches, we had a naive hashing operation that does not account for the fact that patches behind tags cannot be modified. Darcs was unnecessarily traversing the entire sequence of patches (ie. O(n) time) when it could easily have been just traversing the sequence since the last tag.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;utf-8-metadata&quot;&gt;&lt;h4&gt;UTF-8 metadata&lt;/h4&gt;&lt;p&gt;Reinier continued to improve the encoding of Darcs patch metadata. Darcs is completely agnonstic with respect to the encoding of your files. Unfortunately, this agnostism extends to patch metadata (patch name, patch author), making it difficult for people to collaborate across different locales. To address this problem, Reinier has been working to make Darcs store its patch metadata in a single encoding (UTF-8) while gracefully supporting older patches (with metadata in potentially any encoding).&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;discussions&quot;&gt;&lt;h3&gt;Discussions&lt;/h3&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lh5.ggpht.com/_wlGLHRg69T4/S6YqcPi6bLI/AAAAAAAAAW8/crF8grxkqiU/s640/IMG_1353.JPG&quot;&gt;&lt;img src=&quot;http://lh5.ggpht.com/_wlGLHRg69T4/S6YqcPi6bLI/AAAAAAAAAW8/crF8grxkqiU/s640/IMG_1353.JPG&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 325px; height: 217px;&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;i&gt;The rebase discussion&lt;/i&gt;&lt;br /&gt;Also from David's site&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;release-process&quot;&gt;&lt;h4&gt;Release process&lt;/h4&gt;&lt;p&gt;The Darcs 2.4 release was quite a tricky one to navigate. We found that bugs were only being flushed out on release candidate time and sometimes after the release proper.&lt;/p&gt;&lt;p&gt;We would like to encourage more people to try out Darcs work in progress and give us feedback early in the release process. After chatting about this, Reinier (with Ganesh, Eric and Petr) decided that as Release Manager, he would put out a Darcs alpha every 4 weeks.&lt;/p&gt;&lt;p&gt;In the future we may investigate automatic nightly builds via the buildbot and a platform support policy such as the one used by Tahoe.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;darcs-patch-index-fast-darcs-annotate&quot;&gt;&lt;h4&gt;Darcs patch index (fast darcs annotate)&lt;/h4&gt;&lt;p&gt;Benedikt updated us on the recent status of his ongoing patch index work (formerly known as the filecache). We discussed the things that make the patch index convincing (permanant, repo-local, unique identifiers for files) the interaction between the patch index and the type witnesses and also ways of tuning the patch index performance and keeping it small.&lt;/p&gt;&lt;p&gt;We're looking forward to sharing the new patch index optimisation with you in upcoming releases. Darcs annotate may become a lot more useful in the next couple of releases!&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;readable-darcs-annotate&quot;&gt;&lt;h4&gt;Readable darcs annotate&lt;/h4&gt;&lt;p&gt;Fast darcs annotate won't be useful if nobody can read it. Benedikt and Eric worked on designing a better output format darcs annotate. Taking a page from git blame, there will be one line per source file line, with columns for patch identifier, author name, date and finally the line. One of the design questions was how we should best refer to darcs patches, the current best candidate being a prefix of the darcs patch metadata hash.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;fast-darcs-over-networks&quot;&gt;&lt;h4&gt;Fast darcs over networks&lt;/h4&gt;&lt;p&gt;Darcs get over networks is slow, painfully slow. Petr has suggested two priorities for improving the performance of network operations. The first would be to introduce a &lt;a href=&quot;http://bugs.darcs.net/issue1771&quot;&gt;darcs optimize --http&lt;/a&gt; feature which would optimise the Darcs repository for fetching over a network (for example, by creating a &quot;snapshot&quot; of the pristine cache to be fetched in one go). The second priority would be develop a &lt;a href=&quot;http://bugs.darcs.net/issue1773&quot;&gt;smart server&lt;/a&gt; that would provide darcs clients with only the files they need and in the optimal number of chunks. The two ideas combined would make an excellent Google Summer of Code project.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;darcs-rebase&quot;&gt;&lt;h4&gt;Darcs rebase&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_c6WmXt2id8U/S6_E5KpkI0I/AAAAAAAAAZY/7z4zZKyBCcQ/s1600/IMG_1360.JPG&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_c6WmXt2id8U/S6_E5KpkI0I/AAAAAAAAAZY/7z4zZKyBCcQ/s200/IMG_1360.JPG&quot; style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 134px; height: 200px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5453794160159236930&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;Prior to the sprint, Ganesh was working on a &lt;a href=&quot;http://wiki.darcs.net/Ideas/RebaseDesign&quot;&gt;darcs rebase&lt;/a&gt; feature.  Rebase will help Darcs users work with long term branches, and other cases where patch commutation by itself is not enough. At the sprint, Ganesh explained his work to everyone interested. Together we settled on a rough plan for the user interface. It looks like our new rebase command will offer a typically Darcs-ish twist: interactive cherry picking.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;darcs-library&quot;&gt;&lt;h4&gt;Darcs library&lt;/h4&gt;&lt;p&gt;Ganesh and Florent talked with three teams building software in the Darcs ecosystem (DPM: Stephan Wehr and David Leuschner, Mac Darcs record GUI: Benedikt Huber and David Markvica, DarcsDen: Alex Suraci). There was a surprising degree of commonality.&lt;/p&gt;&lt;p&gt;The conversations have given us a much stronger sense of direction with the Darcs library. In particular, Ganesh is convinced that we should commit to our use witnesses - at the very least getting them completely finished so we can run with them, probably turning them on by default, and quite possibly dropping the non-witnesses builds.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;default-switches&quot;&gt;&lt;h4&gt;Default switches&lt;/h4&gt;&lt;p&gt;We held a quick roundtable discussion to settle some decisions on Darcs default switches that have been hanging in the air. Our decisions for Darcs 2.5:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;--no-set-scripts-executable [unchanged]&lt;/li&gt;&lt;li&gt;pull/push/send --no-set-default&lt;/li&gt;&lt;li&gt;send --edit-description&lt;/li&gt;&lt;li&gt;record --no-test&lt;/li&gt;&lt;li&gt;check --no-test&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div id=&quot;performance-presentations&quot;&gt;&lt;h4&gt;Performance presentations&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_wlGLHRg69T4/S6alGWpagJI/AAAAAAAAAdA/JDokjcMJZf0/s512/IMG_1435.JPG&quot;&gt;&lt;img src=&quot;http://lh6.ggpht.com/_wlGLHRg69T4/S6alGWpagJI/AAAAAAAAAdA/JDokjcMJZf0/s512/IMG_1435.JPG&quot; style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 130px; height: 194px;&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;Petr and Benedkit gave lighting talks, showing some of our recent performance work to the Haskell community. Some exciting numbers from Benedikt's work (&lt;a href=&quot;http://wiki.darcs.net/Ideas/PatchIndex&quot;&gt;notes&lt;/a&gt;) include a 6 second darcs annotate on a file in the GHC repository (previously this did not complete within a half hour).&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;google-summer-of-code&quot;&gt;&lt;h4&gt;Google Summer of Code&lt;/h4&gt;&lt;p&gt;We discussed our priorities for this year's Google Summer of Code. We have decided that we would focus our attention on performance issues. If we had two GSoC students this year, we would be mainly interested in dividing them between&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;network performance&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;developing a smart server for much faster darcs get and pull over a network&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;local performance&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;performing a comprehensive overhaul of the Darcs hashed file cache handling&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;We also discussed ways to make the best use of our students' time. The Darcs team has participated in GSoC twice and learning a lot from the experience. This year we would like to see if we could publish some clear guidelines both on what we expect from GSoC students and what they can expect from us. Watch the mailing list for more discussion on this topic.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;budding-ecosystem&quot;&gt;&lt;h3&gt;Budding Ecosystem&lt;/h3&gt;&lt;p&gt;We were pleasantly suprised to find ourselves with users of the (still unstable) Darcs API. These new arrivals give us the feeling that the collection of &lt;a href=&quot;http://wiki.darcs.net/RelatedSoftware&quot;&gt;related software&lt;/a&gt; is coalescing into a new Darcs ecosystem.&lt;/p&gt;&lt;div id=&quot;darcs-patch-manager&quot;&gt;&lt;h4&gt;Darcs Patch Manager&lt;/h4&gt;&lt;p&gt;David Leuschner and Stefan Wehr worked on an exciting new patch management program for project maintainers. The Darcs Patch Manager (DPM) offers a new way for repository maintainers to keep track of incoming Darcs patches, including their amendements and dependencies.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ dpm -r MAIN_REPO -s DPM_DB list&lt;br /&gt;very cool feature [State: OPEN]&lt;br /&gt;2481 Tue Mar 16 17:50:23  2010 Dave Devloper &amp;lt;dave@example.com&amp;gt;&lt;br /&gt;State: UNDECIDED, Reviewed: no&lt;br /&gt;added&lt;br /&gt;7861 Tue Mar 16 17:20:45  2010 Dave Devloper &amp;lt;dave@example.com&amp;gt;&lt;br /&gt;State: REJECTED, Reviewed: yes&lt;br /&gt;marked as rejected: one minor bug&lt;br /&gt;some other patch [State: OPEN]&lt;br /&gt;7631 Tue Mar 16 13:15:20  2010 Eric E. &amp;lt;eric@example.com&amp;gt;&lt;br /&gt;State: REJECTED, Reviewed: yes&lt;br /&gt;added&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Towards the end of the hackathon, Stefan gave a nice short demo of DPM in action and deftly avoided the wrath of the demo Gods.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;macos-x-gui-for-darcs-record&quot;&gt;&lt;h4&gt;MacOS X GUI for Darcs record&lt;/h4&gt;&lt;p&gt;Benedikt Huber and David Markvica started work on a graphical interface to the Darcs record command. One key twist is that they make use of the Darcs API to get the kind of dependency-tracking interactiveness goodness that Darcs offers. Bendedikt and Huber report that they have spent most of the hackathon getting to grips with the library. Darcs type witnesses were very helpful for avoiding errors, but they also impose a steep learning curve.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;darcsden&quot;&gt;&lt;h4&gt;Darcsden&lt;/h4&gt;&lt;p&gt;Alex Suraci and Simon Michael made several improvements to &lt;a href=&quot;http://darcsden.com/&quot;&gt;Darcsden&lt;/a&gt;, an open source hosting solution (akin to Github and Patch-tag). Some recent changes were Atom feeds, the ability to view forks of your repository and cherry-pick patches from them (work in progress). Darcsden also makes use of the Darcs API.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_c6WmXt2id8U/S6_BSJ2nhSI/AAAAAAAAAZA/EcmmgiBrkJQ/s1600/forks.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_c6WmXt2id8U/S6_BSJ2nhSI/AAAAAAAAAZA/EcmmgiBrkJQ/s320/forks.png&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5453790191395767586&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;i&gt;Darcsden fork viewer&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;want-to-host-darcs-hacking-sprint-2010-10&quot;&gt;&lt;h3&gt;Want to host Darcs Hacking Sprint 2010-10?&lt;/h3&gt;&lt;p&gt;The Darcs Team would like to hold hacking sprints twice a year. These sprints are an important occassion for us to hold design discussions, hack some code, train new Darcs hackers and generally bond as a team.&lt;/p&gt;&lt;p&gt;Do you think you can help? Please get in touch with me if you think you may be able to host a group of around 20 Darcs hackers one of these October or November weekends.&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;thanks&quot;&gt;&lt;h3&gt;Thanks!&lt;/h3&gt;&lt;p&gt;Getting over 75 Haskell hackers into Zürich and having them up and running on arrival (Swiss power plugs notwithstanding) was no easy task! We'd like to thank Johan Tibell, David Anderson and the rest of the Google Crew for their hard work organising this hackathon.&lt;/p&gt;&lt;p&gt;Thanks also to the generous donors who chipped into our 2010 Darcs Travel Fund. We'll be looking forward to using the leftover cash for the upcoming 5th Darcs Hacking Sprint in October or November. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Speaking of donors, we'd particularly like to thank the &lt;a href=&quot;http://conservancy.softwarefreedom.org/&quot;&gt;Software Freedom Conservancy&lt;/a&gt; for providing us with the infrastructure (both legal and technical) for accepting donations and holding assets such as the darcs.net domain.  Meta projects like the SFC are crucial for the success of volunteer-driven open source projects such as Darcs.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Finally here are some words from happy Darcs hackers:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The sprint was a wonderful social occasion, and it was great meeting most of the Darcs hackers, and also seeing other Haskell hackers interested in working in the Darcs ecosystem. I especially enjoyed teaching them how to use our API. -- Florent&lt;/p&gt;&lt;p&gt;The atmosphere was wonderful and I consider the sprint to have been very productive overall. -- Petr&lt;/p&gt;&lt;p&gt;This is coolest thing I ever did -- Luca&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;See you in half a year!&lt;/p&gt;&lt;/div&gt;&lt;div id=&quot;participants&quot;&gt;&lt;h3&gt;Participants&lt;/h3&gt;&lt;p&gt;We had ten Darcs hackers in Zürich along with four Haskellers using the Darcs API to do awesome things (plus two more on IRC).&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_c6WmXt2id8U/S6_CXsyOOrI/AAAAAAAAAZQ/axmNWyvUGrk/s1600/zurihac-group.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_c6WmXt2id8U/S6_CXsyOOrI/AAAAAAAAAZQ/axmNWyvUGrk/s320/zurihac-group.jpg&quot; style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 214px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5453791386183547570&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Florent Becker&lt;/li&gt;&lt;li&gt;Guillaume Hoffmann&lt;/li&gt;&lt;li&gt;Eric Kow&lt;/li&gt;&lt;li&gt;Reinier Lamers&lt;/li&gt;&lt;li&gt;Ganesh Sittampalam&lt;/li&gt;&lt;li&gt;Petr Rockai&lt;/li&gt;&lt;li&gt;Salvatore Insalaco&lt;/li&gt;&lt;li&gt;Luca Molteni&lt;/li&gt;&lt;li&gt;Benedikt Schmidt&lt;/li&gt;&lt;li&gt;Steve Keuchel&lt;/li&gt;&lt;li&gt;Benedikt Huber&lt;/li&gt;&lt;li&gt;David Markvica&lt;/li&gt;&lt;li&gt;Stefan Wehr&lt;/li&gt;&lt;li&gt;David Leuschner&lt;/li&gt;&lt;li&gt;Simon Michael [IRC] - Darcsden&lt;/li&gt;&lt;li&gt;Alex Suraci [IRC] - Darcsden&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;(Group photo from Johan Tibel's &lt;a href=&quot;http://blog.johantibell.com/2010/03/zurihac-summary.html&quot;&gt;ZuriHac summary post&lt;/a&gt;)&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_c6WmXt2id8U/S6_CE67qUII/AAAAAAAAAZI/pld9SOzdlfc/s1600/zurihac-group.jpg&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-1730346027851875549?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>kowey (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Darcs News: darcs weekly news #58</title>
		<link rel="alternate" type="text/html" href="http://blog.darcs.net/2010/03/darcs-weekly-news-58.html"/>
		<id>tag:blogger.com,1999:blog-819021106854702432.post-236377022140380647</id>
		<updated>2010-03-21T21:08:07+00:00</updated>
		<content type="html">&lt;div id=&quot;news-and-discussions&quot;&gt;&lt;h3&gt;News and discussions&lt;/h3&gt;&lt;ol style=&quot;&quot;&gt;&lt;li&gt;&lt;p&gt;The fourth Darcs hacking sprint has just ended! A dozen of Darcs developers were present at Zurich for three days. Before a full-length report is posted, you can consult the wiki for a rough outline of the work done:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://koweycode.blogspot.com/2010/03/darcs-team-at-zurihac.html&quot;&gt;http://koweycode.blogspot.com/2010/03/darcs-team-at-zurihac.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.darcs.net/Sprints/2010-03&quot;&gt;http://wiki.darcs.net/Sprints/2010-03&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;GHC version support was discussed in depth, and it was decided that Darcs would only be guaranteed to compile with the last two stable branches of GHC:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023269.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023269.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023323.html&quot;&gt;http://lists.osuosl.org/pipermail/darcs-users/2010-March/023323.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.darcs.net/Development/Policy&quot;&gt;http://wiki.darcs.net/Development/Policy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div id=&quot;issues-resolved-in-the-last-week-5&quot;&gt;&lt;h3&gt;Issues resolved in the last week (5)&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;issue643 Guillaume Hoffmann&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;darcs send -o outputs remote repo email address&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue643&quot;&gt;http://bugs.darcs.net/issue643&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1456 Guillaume Hoffmann&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;by using Tar and GZip haskell modules for dist&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1456&quot;&gt;http://bugs.darcs.net/issue1456&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1473 mail@stefanwehr.de&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;annotate command accepts &quot;.&quot; and treats &quot;&quot; as invalid input&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1473&quot;&gt;http://bugs.darcs.net/issue1473&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1750 Eric Kow&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;uncover help text for darcs show pristine.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1750&quot;&gt;http://bugs.darcs.net/issue1750&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;dt&gt;issue1767 Ganesh Sittampalam&lt;/dt&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;send CRC warnings to stderr&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.darcs.net/issue1767&quot;&gt;http://bugs.darcs.net/issue1767&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div id=&quot;patches-applied-in-the-last-week-25&quot;&gt;&lt;h3&gt;Patches applied in the last week (25)&lt;/h3&gt;&lt;/div&gt;See &lt;a href=&quot;http://wiki.darcs.net/DarcsWeeklyNews/2010-03-21&quot;&gt;darcs wiki entry&lt;/a&gt; for details.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/819021106854702432-236377022140380647?l=blog.darcs.net&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>guillaume (noreply@blogger.com)</name>
			<uri>http://blog.darcs.net/</uri>
		</author>
	</entry>

	<entry>
		<title>Eric Kow: darcs team at ZuriHac</title>
		<link rel="alternate" type="text/html" href="http://koweycode.blogspot.com/2010/03/darcs-team-at-zurihac.html"/>
		<id>tag:blogger.com,1999:blog-21123659.post-8893200938536930189</id>
		<updated>2010-03-20T15:19:45+00:00</updated>
		<content type="html">Just a quick photo showing what happens when you give a bunch of Darcs hackers a flipchart and a marker pen...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_c6WmXt2id8U/S6Tm6Q5MzzI/AAAAAAAAAXk/7S9T4jsjRzo/s1600-h/IMG_1360.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_c6WmXt2id8U/S6Tm6Q5MzzI/AAAAAAAAAXk/7S9T4jsjRzo/s320/IMG_1360.JPG&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 214px; height: 320px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5450735337666826034&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(With thanks to David Anderson for gamely taking this photo for our collective memory)&lt;br /&gt;&lt;br /&gt;This was the result of a lively discussion on the future &lt;a href=&quot;http://wiki.darcs.net/Ideas/RebaseDesign&quot;&gt;darcs rebase&lt;/a&gt; feature, which will make maintaining long-term branches in Darcs a lot easier.  Perhaps it'll be ready in early 2011.  We'll be sure to take our time to get this right...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/21123659-8893200938536930189?l=koweycode.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>kowey (noreply@blogger.com)</name>
			<uri>http://koweycode.blogspot.com/search/label/darcs</uri>
		</author>
	</entry>

</feed>
