Monday, January 18, 2016

darcs hacking sprint 10 report

Last weekend we had our tenth Darcs sprint, and our first one in Spain. This time indeed, the sprint was organised in the University of Seville, ETSII (Technical Superior School of Informatics Engineering), on January 15th to 17th.

We were 3 participants: Florent Becker, Guillaume Hoffmann and Ganesh Sittampalam. We also had Pierre-Étienne Meunier on video call and Simon Michael on IRC.

Darcs and Pijul integration

One major topic during the whole sprint was the possible integration of Darcs with Pijul. Pijul is a new version control system based on a different patch theory, whose main author is Pierre-Étienne Meunier. Florent also contributes to Pijul and announced its first release last October.

Pijul is promising in terms of how it handles conflicts in a better way than Darcs (better as: better presentation to the user and better performance). There may be a future where Darcs uses Pijul patches by default.  We had many conversations with Florent to understand the internals of Pijul and how it manages patches.

On the first day of the sprint we did a video call with Pierre-Étienne Meunier, to discuss integration of Pijul core with Darcs. It happens that the Darcs code is modular enough to handle Pijul patches (with some work). That afternoon Florent started to work on a Haskell binding for libpijul (through a C binding maintained by Pierre-Étienne, Pijul being implemented in Rust).

Ganesh, Florent and Pierre-Étienne are going to work towards a better integration of both systems. Pierre-Étienne plans to release a 0.2 version of Pijul soon.

Ganesh and Florent with Pierre-Étienne on video call

Renaming Patch/RealPatch to RepoPatchV1/RepoPatchV2

The code of Darcs contains many different layers of patch types. One of them is represented by the two types Patch and RealPatch, and specifies the behaviour of named patch when they are commuted and in case of conflicts. The "Patch" type is the behaviour of patches in repositories with the darcs-1 patch semantics (which can still be created by Darcs) and "RealPatch" is for darcs-2 semantics (the current default of Darcs). I sent a patch to rename these types into something less confusing: RepoPatchV1 and RepoPatchV2.

Interactive selection performance and refactoring

Even if we wrote a patch that improved greatly performance during the last sprint (and we now have a unit test for it), the command "darcs rollback -p ." still remains much slower than "darcs rollback" before presenting the first choice of patch to the user. Florent determined that this was because the action of matching patches within interactive selection is not lazy, ie, the whole list of patches has to be scanned and classified before the first prompt is shown to the user. Florent unearthed a refactor he had of the patch selection code and started rebasing it against the current code.

User manual and developer handbook

We want Darcs to have a user manual again, and a developer handbook that would compile documentation for programmers and computer scientists. We decided the manual should live in darcs' repository itself (so that it stays up-to-date) and the developer handbook on the wiki.

Darcs on Stackage

On IRC, Simon Michael (after an initial request by Joachim Breitner) committed himself to maintain a stack.yaml file for Darcs, and during the weekend Darcs was added to stackage for easier building.

Cleanup, fixes and refactorings

Ganesh tracked down bugs in rebase and sent a few cleanup patches. Moreover he's improving the code of "darcs test" (formerly called "darcs trackdown") so that uncompilable states are neither considered as Passing nor Failing, and bisect is going to be more efficient.

What happens next

I am going to release Darcs 2.10.3 within a couple of weeks, and Darcs 2.12 within a couple of months. This new major version will have optimizations (some of them are already backported to the 2.10 branch) and code refactorings. It may contain the stash feature currently developed by Ganesh. 

This year we hope to have another sprint, and to have more developers participating. Please consult the How to Help, Developer's Getting Started and Projects page on the wiki to get involved!

Ganesh, Florent and Guillaume


Unknown said...

Florent unearthed a refactor he had of the patch selection code and started rebasing it against the current code. | popcorn ceiling removal near me

Joana said...

We had many conversations with Florent to understand the internals of Pijul and how it manages finish room and patches.

Angel17 said...

I find this interesting. Keep sharing! Wood Fence Installation Amarillo, TX

Horea said...

The article's extensive research added credibility and ensured that the information presented was well-supported.

click here

Unknown said...

Florent unearthed a refactor he had of the patch selection code and started rebasing it against the current code.

Ethan said...

It's great to hear about the Darcs sprint in Spain and the progress made during the event.

KellyP said...

The Darcs hacking sprint 10 was a success, and it resulted in a number of significant improvements to Darcs. The sprint also helped to build the Darcs community and to generate excitement for the future of Darcs.

anonymous said...

Florent deduced that this was because interactive selection does not employ a lazy matching process; rather, the user must first scan and classify the entire list of patches before seeing the first query. | dallas factoring companies

Anonymous said...

Thanks for this insightful blog post! Your perspective added depth to the topic. Explore our fencing companies Logan

Logan Drywall Repair & Painting said...

I completely understand where you're coming from. interior painting companies Logan

Kerstin said...

Thank you for this great blog you shared. branded coffee cups

Zabel said...

Very informative post. commercial concrete

Unknown said...

It sounds like the Darcs sprint in Seville was productive and engaging, with valuable discussions and progress made on various fronts. The integration of Darcs with Pijul seems to be a significant focus, aiming to leverage the strengths of both version control systems. It's promising to hear about the collaboration between developers towards achieving better integration.

KellyP said...

That's exciting! It sounds like the Darcs community had a productive sprint in Seville, Spain.

gutter cleaning cincinnati

Kerstin said...

Such a great site to visit. concrete paths

Ashley John said...

It sounds good and I like these ideas you shared about your working on the darcs hacking sprint 10 report. This is an important source of information that we need to know about so we can learn more about it.