1. 45
  1.  

    1. 5

      The original announcement at 2025-03-09 02:29:38Z:

      https://nest.pijul.com/pmeunier/nest

      It’s alive!

      It doesn’t yet have all the features of the currently deployed Nest, but uses a modernised architecture using state-of-the-art frameworks (Axum in the back, Svelte in the front, still Thrussh for SSH).

      Also, Diesel instead of my own thing for asynchronous Postgres, which I had written before “Async Postgres” even existed in Rust.

      Let me know if you can run it.

      Also, Tailwind instead of Bootstrap, which I hope will also appeal to people wanting to contribute graphic design rather than backend/algorithms code.

      My goal with moving to Svelte was also to keep the same super fast backend algorithms, while delegating the JS updates and layout to the front, which I think reduces latency. The architecture for that in the backend is still a little bit fragile as it involves proxying a NodeJS server, so cold renderings (first time you load any page from nest.pijul.com) are probably going to be much slower than the current Nest, while I would expect subsequent renders to be dramatically faster (since NodeJS isn’t involved at all and we save around 95% of the payload sizes).

      1. 4

        I could not find the lines for a simple HTTP server doing a quick glance. One of the missing things IMO is a dead simple way to fetch patches without needing to invoke an entire forge. Darcs, without an equivalent to channels (which is a good feature), can simple sit in front of any HTTP server & host files statically. Pijul from the CLI is expecting query parameters to be parsed such as what channel to pull from—which prior to this release meant the closed-source Nest was tte only way to host over HTTP instead of SSH without reverse-engineering the the system. I will look later, but I hope the HTTP server could run standalone.

        1.  

          Yes, this is hard. The open source Nest doesn’t serve its repos over HTTP. I could write an “over-the-air” version of Sanakirja, that’d fun.

        2. 3

          I’m glad to see the project is still alive; when I looked earlier this year, it seemed to have gone quiet.

          1.  

            Yep, sometimes “quiet” means “a big rewrite, cleanup or refactoring is going on”. Also, I’m working on too many things at the same time, which is bad. I hope I can one day focus on just one thing, it would be cool if it were Pijul.

          2. 1

            What am I looking at?

            1. 13

              pmeunier has an account here and would be most qualified to add some context, but I can add a bit here.

              Pijul is a patch-based VCS, as opposed to snapshot-based, like Git, Mercurial, etc. The leading example of a patch-based VCS otherwise up to this point has been Darcs, written in Haskell. I haven’t used it much. Pijul’s main motivation over Darcs was algorithmic improvements that resolve the worst-case exponential time Darcs can run into; see the Why Pijul? and Theory pages for a bit more context. There’s supposed to be some theoretical soundness improvements as well over Darcs, but I don’t know as much about that.

              Nest has been the main service for natively hosting Pijul projects with a web UI, made by the same team/developer. From what I remember, like git, a Pijul repository can be used remotely over SSH; Nest is more like having gitea/gitlab in addition to that.

              I remember it being closed source with the intention of making it open source later; I think the rationale was around Nest still being alpha and not having the resources at the time to field it as a full open source project in addition to Pijul itself, though nest.pijul.com was available to host other open source projects with Pijul.

              The news here would be that Nest’s been recently open sourced. As someone who’s been interested in Pijul but hasn’t had much opportunity to use it yet, this sounds like significant news that should make adoption more practical in general. Congrats to pmeunier and co., and thank you for your interesting and generous work in the VCS space!

              1. 8

                There’s supposed to be some theoretical soundness improvements as well over Darcs, but I don’t know as much about that.

                As I recall, the problem is that patches in Darcs don’t necessarily commute. For all the nice math to work out, you want independent patches to commute, that is to say, applying patch A followed by patch B, should give you the same result as applying patch B first, followed by patch A. But patches aren’t guaranteed to do that in Darcs, and the only way to ensure this is to simply test pairs of patches by applying them and seeing if both orders give the same result.

                In Pijul, if you have two patches that don’t depend on each other, they always commute. Either they don’t conflict, in which case the non-conflicting outcome is the same regardless of the order, or they do conflict, in which case you get the exact same conflict state regardless of the order.

                1. 5

                  I found these public posts about the history of this Nest implementation and the plans to open source it:

                  1. pmeunier’s 2023-05-23 blog post “A new direction for Pijul’s hosting service” announced a rewrite of Nest that would be more maintainable and would also be open source.
                  2. pmeunier’s 2023-11-10 forum post said “There are currently two very different versions of the Nest, of which the most recent one was supposed to become open source and self-hostable, but it never worked out. I’m working on merging their features.”
                  1.  

                    Great answer, nothing to add from me!

                    The reason it was closed-source wasn’t really by design, it was just that the service had accumulated a lot of tech debt after transitioning through way too many versions of the Rust async ecosystem (the Nest started in 2015). So, this is a marker of Pijul being mature enough that I was able to spend some time rewriting things using the (now) stabilised Rust libs such as Diesel and Axum. Also, Svelte is fun on the front-end but didn’t exist back then, I love how you can have the best of both worlds (static and dynamic).

                  2. 1

                    Pijul is a version control system (alternative to git) descended from darcs, which is built around patches as opposed to snapshots (e.g. commits).

                    Nest is like gitea for pijul repositories, and this is the source code for nest hosted on the public instance of nest run by the pijul org.

                    1. 5

                      I wouldn’t say “descended from Darcs” because that may give the wrong connotations. Pijul isn’t a fork of Darcs. Pijul has a rigorous mathematical foundation, unlike Darcs. They are conceptually related though, so I think it is clearer to say Pijul is inspired by Darcs.

                      Pijul is the first distributed version control system to be based on a sound mathematical theory of changes. It is inspired by Darcs, but aims at solving the soundness and performance issues of Darcs.

                      From Why Pijul?

                      I started pay attention to Pijul many years ago. When it comes to systems that manage essential information, I tend to bias in favor of systems with formal guarantees.

                      1. [Comment removed by author]