1. 21
  1.  

  2. 3

    I still wonder why they don’t provide precompiled binaries. That would make it quite a bit easier to give it a try.

    1. 2

      This is just a matter of time resources. Pijul is moving fast, and building it for various platforms would take a lot of time. We do have a CI system, but it’s fairly basic.

      1. 1

        True, but realistically, support for Linux, Windows, and macOS on x86-64 covers the vast majority of development setups.

        1. 1

          Sure, but:

          • Linux binaries require support for all common distributions (Ubuntu, Debian, Arch, Fedora, Suse), which means a different VM each time.
          • MacOS requires an Apple computer, there are no real options in the cloud that I’m aware of. Now that Apple is changing their architecture, this actually requires two expensive Apple machines.
          • Windows requires a heavy Windows VM, started fresh every time to test static linking.
          • Docker is also to be added to the list of common “distributions”.

          Additionally, I use none of these systems (I’m on NixOS on all my machines).

          1. 1

            Linux binaries can be linked statically with musl, that’s completely foolproof. You can also build for the oldest glibc you want to support, which works well enough in practice.

            A number of hosted CI services provide MacOS build VMs. I use Travis to build MacOS binaries of some of my projects, since I haven’t owned an Apple machine for a while. Apple on ARM supports x86-64 emulation so special binaries for it is “nice to have”, not “must have”.

            Same with Windows, you can get it from GitHub Actions, Circle CI, and some other cloud CI services.

            1. 1

              Yes, integration with other CI systems is planned, but not there yet.

            2. 1

              RE Linux binaries: https://guix.gnu.org/manual/en/guix.html#Invoking-guix-pack

              Doesn’t have to be too painful?

              1. 1

                Interesting. I wonder if NixOS has that too.

                1. 1

                  Nix has dockerTools which I’ve had some success with before, managing to build smaller images than our existing docker compose.

                  https://nixos.org/guides/building-and-running-docker-images.html

                  1. 1

                    This is very cool, I wasn’t aware of this. I wonder how that could work to build a better CI system.

              2. 1

                I thought Rust supported cross-compilation quite well?

                1. 1

                  I never got it to work.

                  1. 1

                    This was my experience too. In particular, xargo had some blocking issues on nixos last time I tried.

        2. 2

          Does Pijul accomodate the “stack of changes” workflow? I’ve been giving stgit a try, it seems much easier than a bunch of branches

          1. 2

            I would argue that Pijul is easier than Stgit, since it’s essentially a “bag of changes” rather than a stack. It addresses the same problems (the lack of commutation in Git), but actually solves them by being truly commutative. This makes a big difference around conflicts, for example, which is where you need a good tool the most.

          2. 2

            a history reset is needed when we need to change the on-disk representation for one reason or another. It happened a few times in the past, and did happen again after the current alpha was published. This is, however, very unlikely to ever happen again.

            Maybe wait a few years and see if the last sentence comes out true or not? If you ask people to trust your system, the last thing I would want to hear is any mention of “we are moving fast”.

            1. 3

              the last thing I would want to hear is any mention of “we are moving fast”.

              The first thing I would like to hear as a user is “we’re transparent about what happened and what didn’t”, which is the reason this is stated very clearly there.

              1. 1

                Sure. Openness is good. Instability is bad. They coexists. A vcs becomes popular only after big projects start to migrate to it, and for that to happen, stability is key.

                1. 1

                  Sure.

                2. 1

                  Sure, just “we are moving fast” and “99% of people shouldn’t use this” are the same statement, for systems stuff.

                  1. 1

                    That’s true, I never said otherwise. But this also means that when we announce we’re ready, we will be ;-)

              2. 2

                Personally, I can’t wait to use Pijul once it hits beta. Kudos to the project on transparency!

                1. 1

                  I created an account on the Pijul Nest less than a year ago when I first read about it, but haven’t used it since. Now I went to log in and found nothing happened when I tried to log in – seems my account was removed, and I could sign up again with the same username and email to create another account.

                  Please don’t randomly delete peoples accounts without notifying them beforehand.

                  1. 4

                    Sorry about that. I’m 100% guilty for this. I can explain what happened, and why you can trust that it will never happen again:

                    • Pijul up to 0.12 had terrible scalability problems, to the point that I considered abandoning the whole project. Even though the ideas were cool, and could work in principle, I was convinced that we could never reach the point where it would be possible to test Pijul itself on very large projects.

                    • Then, I found the solution to the scalability problems, but that required rewriting it from scratch, which I did.

                    • I announced two months ago (https://pijul.org/posts/2020-11-07-towards-1.0/#what-about-the-nest) that I would stop supporting the buggy Nest with the old algorithms on December 31st, 2020. I realise that you may not have seen that announcement, and I’m super sorry about that.

                    However, the algorithms are now solid and scalable, to the point that I don’t think the on-disk representation can be compressed any further. Moreover, we are still in the alpha phase, and will soon enter our beta phase, once the current bugs are fixed.

                    1. 1

                      Thank you for the explanation!