Is this project still active? Yes it is

I’m answering here to Discussion #444 on the Nest.

Is Pijul still under active development?
Last patches on master were June 8th? It seems like patches were pretty regular before then, maybe work is just being done in private and not pushed to public but I sure hope there is still activity, I really love this project.

That’s right, the last patches are pretty old. A few things have happened since then, but they’re not public yet. This has included (1) thinking about new algorithms to solve our remaining problems and (2) thinking about the future and sustainability of the project, including its funding.

Another thing going on is a major rewrite of libpijul. This project was our first Rust project, was started in a pretty early version of Rust, on an incomplete theory that was only finalised in 2019. Until then it wasn’t clear what functions and types we wanted to expose, and how to document them.
I’m currently reorganising everything, in particular using a lot more proc-macros, and making it more general so that it can run on various backends (well, actually different variants of Sanakirja).

We will hopefully have news pretty soon. I’d love to fix all the bugs in the Nest discussions, my hope is that many of them will simply disappear with the rewrite.

20 Likes

Thanks for the update! Really looking forward to it

2 Likes

Whooo! Looking forward to the shiny, new Pijul :heart_eyes:

Awesome! Thanks so much for the update.

Thanks for the update! Are you also thinking about how to significantly improve the performance of the project?

That is the plan, yes, both on disk space and time.

Thanks for the update! I think this question is so frequent because we don’t have a place to visually see that something is in progress. Where is the rewrite happening? Can we help?

1 Like

Will the main commands and their behavior change much from how the current public release behaves? I am eager to learn and practice using Pijul, but I’m wondering if I should continue to wait for the next version to come out before trying to learn it and get familiar with using it. Thank you, and I hope that you’re all doing well during the pandemic!

Hi! Thanks for your question, the main commands will mostly remain the same or similar. A good understanding of the current public Pijul will totally carry over to the new one.

3 Likes

Is the birdy still alive?

Yes, it is still alive.

2 Likes

Hello,

I found the project really interesting but despite declarations there is no activity in the repository or any announcements of new versions. In what sense is it alive?

Thanks!

There is a new version in preparation, hopefully ready really soon. It’s currently able to import really large repositories just fine (all of NixOS/nixpkgs from GitHub, for example).
Since this is going to be Pijul 1.0, there are still a few things that need to happen before we release.

There are several reasons for which this is not happening in public:

  • Some early users of Pijul have been frustrated by our changes of patch and repository formats in the past, and are now commenting each new release on social media with their experience (instead of helping us to debug). I understand that frustration and want to avoid frustrating them again: the new version had to change formats at a very high pace and I didn’t want to have to write conversion scripts.
  • Pijul 1.0 is not yet interactive. This is not really usable for a real-life usage.
  • The network protocol still has to change in order to handle large binary files. Pijul itself can handle binary files, but clones can be more expensive than they need to be.
  • The license (GPL-2.0) has not always been respected by all users, so I’m less eager to share partial work now. But I’ll totally share it when it’s ready.
9 Likes

Hey, great. Thanks a lot for the update.
Could you by chance elaborate a little on this point:

  • Pijul 1.0 is not yet interactive. This is not really usable for a real-life usage.

Are all these points you list to be addressed before the release, or will Pijul 1.0 not be interactive and not usable for real-life usage?

Well, if it’s listed as a reason not to release it yet, and I said we will release Pijul soon…

Sorry! I guess, I was just confused. Somehow I read it as if 1.0 won’t be interactive, and interactivity would come only in a later version. Which made me wonder what kind of interactivity this refers to.

Oh, I understand your question now. “Interactive” means that in Pijul 0.12 you can select which parts of a patch you want to record. In Pijul 1.0 there is a better system, but it’s not completely there yet, in particular for large binary files.

Is storing large files encouraged by pijul? Under git it is something you should avoid.

I don’t have enough experience using Pijul to answer. In Git it is discouraged because you need the entire history of an entire project to work. In Pijul you don’t: because of patch commutation, you can clone just the part of a project you want. Older versions of large binary files are not even cloned unless you explicitly require them, for example.

That said, it can never be “encouraged” to keep large binary files under version control, because it’s hard to diff them, and hence you might end up storing each version of them on the server. Pijul has a garbage collector for that, but it might prevent you from going arbitrarily far in the past on these large files. One interesting point is that the rest of the project will be fine, and you’ll still be able to browse its entire history.

1 Like

Hi, and thank you for your continued work on this awesome project! I am really excited to hear that Pijul is getting more stable.

Since this seems to be the place to discuss the future of Pijul right now, I’d like to ask: Are there plans to eventually add a darcs-like rebase/suspend feature? Manipulating patches that are several layers down in the dependency graph is the only real pain-point for me right now with Pijul 0.12, and it would be lovely if such an operation could be automated. I figured that since a major rewrite is happening, now would be the time to ask. :slight_smile: