Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation for Ubuntu #2685

Open
BaksiLi opened this issue Aug 9, 2023 · 10 comments
Open

Installation for Ubuntu #2685

BaksiLi opened this issue Aug 9, 2023 · 10 comments

Comments

@BaksiLi
Copy link

BaksiLi commented Aug 9, 2023

Hi, I like Zellij a lot and have installed it everywhere. I noticed that in the Installation there's no support for Ubuntu, so the user would have to download it from the release, uncompress, and move the binary to a path.

Is there a specific reason why apt was not added? Why not give the user an option to install Zellij automatically (like with a script)?

I wrote a script earlier to do this:
https://gist.github.com/BaksiLi/ea2f505fdbe42349a5225390264c1f40

@imsnif
Copy link
Member

imsnif commented Aug 9, 2023

Hey, happy you like Zellij! Thanks for putting this script together.

The installation page is mostly about pointing people to repositories (official or community) which can be used to install Zellij. If someone adds Zellij to the ubuntu/debian repositories, I think it will automatically appear there. I would certainly welcome it.

@tgross35
Copy link

tgross35 commented Mar 4, 2024

I see that an ITP was filed very recently, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1064050 which is great news (intent to package is the first step toward actually getting it packaged).

@aborrero is anything needed on this repo's side to make that happen? Seems like quite a few deps may not be in salsa yet.

FYI for anyone interested, the process AIUI is more or less getting an entry in https://salsa.debian.org/rust-team/debcargo-conf and messing around with dependency versions until it builds, with a maintainer to support (Arturo).

cc @R-Rothrock who showed some interest in #2458

@imsnif
Copy link
Member

imsnif commented Mar 4, 2024

I think @silwol did some work on this before hitting a wall. Maybe he can shed some light here so that no-one will do double-work?

@aborrero
Copy link

aborrero commented Mar 4, 2024 via email

@silwol
Copy link
Contributor

silwol commented Mar 4, 2024

It's been some time since I took a glance into packaging zellij for Debian, I reported the results in the Zellij Matrix Channel, below is a fullquote for reference.

Not sure if the situation is still the same, but with @aborrero being a Debian developer, they can probably judge the situation quite well.

@imsnif On a side note, has the discussion about wasmtime vs wasmer gone anywhere, or is the situation unchanged on that front?

I invested some time to get a general overview of zelij's dependency tree with
regard to packaging it for Debian.

Upfront some high-level information about Debian's requirements and conventions:

Debian takes licensing very serious, so we attempt to ensure that all copyright
holders and licenses are properly documented and we don't have any license
violations. Besides that we try to only have a single copy of each piece of
software, that's why we don't simply bundle up the whole dependency tree, but
instead package each crate separately. Besides that, the project aims for
reproducibility of the build artifacts, and does not package pre-built binaries
from other sources.

Now these are the results of my analysis:

  • In general, your dependency tree is in good shape, most of the crates are actively maintained and quite a lot are already packaged for Debian.
  • That said, there is still a very large portion of the tree that needs to be packaged. This needs significant work to be done and takes time, mainly because of the requirements and conventions described above.
  • Most of the crates build just fine, we would have to relax dependency ranges here and there or apply a few patches to only have one version of crates that are shared with other crates. I supplied a few PRs to zellij in that context which you already merged really fast, kudos for that.
  • Now the most significant part is wasmer 4.2. Wasmer itself consists of several crates that depend on each other. It contains a "subtree" for cranelift. Cranelift lives in the wasmtime repository. Wasmer currently depends on cranelift 0.91, whereas Debian already has cranelift 0.97 packaged. I quickly looked at the wasmer source, but the patches for updating it to cranelift 0.97 would be rather involved, and that work needs to be done by the wasmer team sooner or later anyway. Packaging wasmer and keeping it updated and in sync with Debian's cranelift version is a maintenance burden that is too high for me to buy into. Migrating wasmer to 0.92 already involves several types moved to other crates which require different dependencies as a consequence. Every version update could potentially contain that kind of change.

I really like zellij and would love to help getting it into Debian. On a
regular basis I think it would be nice if I could just run apt install zellij
on one of my servers, and be done with it. In contrast to my desktop computer,
most of my servers only receive software that is packaged in Debian already.

With the analysis above, these are my ideas.

  • Wait until somebody else packages wasmer, which might happen sooner or later anyway, but it's completely uncertain.
  • Look into whether it would be feasible to migrate zeliij to wasmtime. Somebody is working on getting that into Debian. Due to my lack of hands-on experience with either of them, I can't fully judge the amount of work here. From what I heard the concepts and API appear to be quite similar nowadays though.

Don't know if you have any other ideas how we could get closer to having zellij available in Debian.

@imsnif
Copy link
Member

imsnif commented Mar 4, 2024

Thanks @silwol - I think it's better to have it documented here in an issue than on Matrix.

Right now there's still no progress on the wasmer/wasmtime front. We can't upgrade wasmer because we don't want to use wasix due to it expanding surface into areas we do not need and their potential to cause havoc in our app (eg. this was driven forth by @tlinford making some attempts at upgrading and having Zellij crash when his laptop was sleeping).

I'm hoping @tlinford finds the time to move us to wasmtime. As far as I remember, this move will remove this particular blocker for the debian packaging, right?

@silwol
Copy link
Contributor

silwol commented Mar 4, 2024

As far as I remember, this move will remove this particular blocker for the debian packaging, right?

There is at least one other blocker from the Debian side. The rust-wasmtime source package uses the upstream wasmtime repository contents to create packages of cranelift libs which is required as a dependency for other software, but does not yet yield any wasmtime packages. No idea about the timeframe, Jonas created an ITP for wasmtime as well, but that's definitely a blocker before we could use it in the zellij dependency tree.

@tgross35
Copy link

tgross35 commented Mar 5, 2024

Would it be feasible to put plugin support behind a feature flag to make those dependencies optional? If no core functionality depends on plugins, that would significantly cut down on the number of missing dependencies. At least as an initial step.

@imsnif
Copy link
Member

imsnif commented Mar 5, 2024

Would it be feasible to put plugin support behind a feature flag to make those dependencies optional? If no core functionality depends on plugins, that would significantly cut down on the number of missing dependencies. At least as an initial step.

Not feasible at all, I'm afraid. The status-bar, tab-bar, compact-bar and session-manager are implemented as plugins - we're also slowly and surely offloading more logic from the app to plugins. Just on a product level it would be gutting the app completely. Not to mention that on a technical level, since plugins are first-class citizens, this would be a massive undertaking.

@R-Rothrock
Copy link

Hello. Thanks for CC'ing me.
So, I'm not a Rust programmer by any means, but this issue is seemingly not one that revolves around knowledge of Rust. If there is any busy work to be done, I could see to doing it, though I don't know how knowledgeable/useful I am. It seems, though, that it's somewhat of a waiting game. I use Zellij more than I use my desktop environment, so I would love to see this project in as many places as possible.

Cheers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants