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

Is there some integration we could do with esy? #105

Closed
jordwalke opened this issue Mar 17, 2019 · 11 comments
Closed

Is there some integration we could do with esy? #105

jordwalke opened this issue Mar 17, 2019 · 11 comments

Comments

@jordwalke
Copy link

Hi,

I'm curious if there's some way we could leverage 0install for esy. One of the primary use cases is for distributing builds of applications that are build/developed with esy. One idea is that for esy projects, we could have an esy release-0install command which creates a cross platform binary package to be installed on any platform.

Would this require that consumers install 0install to install the package? Or does 0install have a mode where it generates totally dependency-free one-click installers?

@talex5
Copy link
Member

talex5 commented Mar 17, 2019

The http://0install.net/0export.html tool was designed to do that, but it is a bit out-of-date now probably. If possible, it would be better to use the distribution-provided copy of 0install. Then your installation instructions will look something like:

$ sudo apt install 0install
$ 0install add myprog http://example.org/myprog
$ myprog

But of course you need to change the first line depending on the distribution, which is annoying. But maybe still easier than telling users to download a file, find where it went, mark it executable, etc.

@bastianeicher
Copy link
Member

Another possibility would be to use 0bootstrap-php, a simple PHP script that creates bootstrapping EXEs or bash scripts for installing Zero Install and then running a feed.

An instance of the script is hosted at https://0install.de/bootstrap/. Links to this are automatically generated by the default feed stylesheet used by 0repo.

For example, take a look at the the "Run gnuplot" and "Integrate gnuplot" buttons shown at the top of this feed: http://repo.roscidus.com/utils/gnuplot

@jordwalke
Copy link
Author

Is there any intention of fixing bugs in the 0export workflow if we encounter them? In our case, we want a feature of esy that lets developers create releases of their software where those releases are zero friction for consumers. For example, if consumers were going to install VSCode, they would like to just download VSCode, and they don't want to have to install 0install in order to install VSCode.

@jordwalke
Copy link
Author

I tool a look at some of 0installs requirements, and I think that esy and 0install would go really well with eachother. The reason is that esy allows projects that have absolute paths to be relocatable to almost arbitrary locations. So that means that an esy->0install distribution workflow could automate the step that makes a lot of packages work on 0install when they wouldn't otherwise.

@probonopd
Copy link

probonopd commented Mar 24, 2019

For example, if consumers were going to install VSCode, they would like to just download VSCode, and they don't want to have to install 0install in order to install VSCode.

That is exactly what the AppImage format was made for:
https://github.com/AppImage/AppImageSpec/blob/master/draft.md

Do you see areas for collaboration?

@talex5
Copy link
Member

talex5 commented Mar 24, 2019

For example, if consumers were going to install VSCode, they would like to just download VSCode, and they don't want to have to install 0install in order to install VSCode.

We actually have VSCode feed: http://repo.roscidus.com/editors/vs-code

You can either click on the Run button (as @bastianeicher mentioned) to download a launcher, or use the command-line. But, at least on Fedora, Firefox didn't offer to execute the launcher by default; I had to save it and then run it manually.

(also, it looks like the feed should declare a dependency on libXScrnSaver)

@jordwalke
Copy link
Author

@probonopd:

For example, if consumers were going to install VSCode, they would like to just download VSCode, and they don't want to have to install 0install in order to install VSCode.
That is exactly what the AppImage format was made for:
https://github.com/AppImage/AppImageSpec/blob/master/draft.md
Do you see areas for collaboration?

That's a cool solution for Linux. We'd also like something like that for mac and windows. Ideally one toolchain like 0install could handle it all?

@talex5

You can either click on the Run button (as @bastianeicher mentioned) to download a launcher, or > use the command-line. But, at least on Fedora, Firefox didn't offer to execute the launcher by default; I had to save it and then run it manually.

For app distribution, it's usually ideal to let people download the complete bundle without them having to install from the internet after they've downloaded the bundle. Isn't that what 0export intends on doing? Does 0export not currently work?

@probonopd
Copy link

For the Mac you would do an .app application bundle inside a .dmg disk image. For Windows, you could look into PortableApps. I am not aware of a unified solution for all three operating systems.

@jordwalke
Copy link
Author

What about command line based solutions? Is 0export not the right solution for that? How is 0export different from what I described?

@talex5
Copy link
Member

talex5 commented Mar 28, 2019

I see a few problems with 0export:

  1. It (probably) doesn't work on Windows.
  2. It hasn't been updated since 2013. It still uses the old Python version of 0install.
  3. It still needs to install 0install to make adding a launcher work, and only appears to support Debian-based systems for that (it opens a terminal and runs sudo apt-get zeroinstall-injector).

So while it might work, I think it would be much better either to use 0install as intended, letting it download the packages, or use a dedicated system for producing self-installing bundles. 0export is a very minor utility in the context of 0install with very little effort put in to it.

@bastianeicher
Copy link
Member

0export does not work Windows, however Zero Install for Windows has roughly equivalent functionality built in. Running 0install export --bootstrap=run http://example.com/somefeed.xml will generate a directory with archives holding all required implementations and a small bootstrapping executable for importing them and setting up Zero Install on systems that don't have it yet.

@jordwalke I understand the wish to offer users a single file download, however this negates many of the advantages of 0install, such as only downloading shared dependencies only once.

talex5 added a commit to 0install/web-site that referenced this issue Mar 30, 2019
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

4 participants