bgrabitmap / lazpaint

🎨 Cross-platform image editor with raster and vector layers similar to Paint.Net written in Lazarus (Free Pascal)
https://lazpaint.github.io/
GNU General Public License v3.0
406 stars 57 forks source link

Snap package #217

Closed asmarcz closed 2 years ago

asmarcz commented 4 years ago

Hello, this is just a friendly suggestion to create a Snap package for LazPaint.

I was considering introducing LazPaint to teachers as an alternative to Paint.Net, however, the inavailability in repositories has made it a no go for me. We got stuck with Windows anyway.

Creating snap shouldn't be too hard AFAIK from the docs: https://snapcraft.io/docs/snapcraft-overview

Here is a project you can take inspiration from that uses Lazarus and packages for Snap: https://github.com/GerryFerdinandus/bittorrent-tracker-editor/blob/master/snap/snapcraft.yaml

Cheers

EDIT: The advantage of Snap is that you deploy once for all major distributions out there.

circular17 commented 4 years ago

Hello,

About the non availability in the repositories, version 6.4.1 has been release on Debian distributions and hopefully soon there will be version 7.

It is a good idea to make a snap package, though I don't use Linux these days, so it is already cumbersome to make Debian builds with a virtual machine. Maybe you can help me doing those snap builds? If you have questions on some point, I will try to get you the information you need.

Regards

asmarcz commented 4 years ago

The problem with Debian repos is that it will take at least until April before it is upstreamed to Ubuntu flavors (when 21.04 is released). By publishing to Snap you would have solved the problem right now with the added benefit of non-Debian distributions.

Sorry, I am not likely to devote to software I do not use, at least not in the near future. I will consider it though.

EDIT: Leaving aside the fact that a lot of Ubuntu users actually only use LTS releases, postponing the availability to October.

circular17 commented 4 years ago

If I understand what you say, I have made a mistake by providing a Deb package and providing it into Debian and it would have been better if I had done a snap package instead.

As a beginner on Linux, I disagree, because Debian packages and repositories are the most obvious way to install software. At some point I came across snap, but I used it essentially because there was no Debian package.

Like you, I wish that LazPaint will be made available on as many systems as possible. Maybe as my software becomes more widespread, I will get more help from people to make packages for their system. Some have already done that by the way: https://repology.org/project/lazpaint/versions

You're request is contradictory as you say the obstacle for you was that it was not on the repositories and the same time you complain about the slowness of Debian to get updated and want snap packages.

asmarcz commented 4 years ago

If I understand what you say, I have made a mistake by providing a Deb package and providing it into Debian and it would have been better if I had done a snap package instead.

Yes, this is what I think but that doesn't really matter now.

You're request is contradictory as you say the obstacle for you was that it was not on the repositories and the same time you complain about the slowness of Debian to get updated and want snap packages.

I may have expressed myself in a wrong way. I sincerely do not care whether I install the package from the distribution repo or from Snap/Flatpak. I just need one-line install and easy updates provided by the respective source (repo/Snap).

I am not criticizing your work. You have done a great deal of good work. The sole purpose of this issue was to suggest an easier way of doing things and explain why I believe Snap is a good choice for LazPaint. I hoped to save you work in the long run while reaching most of the potential audience.

circular17 commented 4 years ago

It makes sense indeed that have a universal way to provide packages can make things simpler. I would say that anyway I would have done the Debian package, so that doesn't really make less work for me. Also I would prefer that the software be actually tested on the platform it is released on. I am not really comfortable with providing a software that I have no idea if it is functional.

I am curious about the fact that you need a one-line install. Is this part of a project of yours?

asmarcz commented 4 years ago

I am curious about the fact that you need a one-line install. Is this part of a project of yours?

No, this is simply a matter of convenience. If I am to install LazPaint on 30 computers I need to do snap install lazpaint and not build it myself. On my Manjaro (Arch), I can use yay that has all the build steps prepared and makes it a one-line install. But most of the time, it is more convenient to install binary right away, please do not delve into the discussion of source code vs binary distribution.

Developers can figure out how to run the software anywhere. Other users though need to open their Software Center and click-install their software.

It makes sense indeed that have a universal way to provide packages can make things simpler. I would say that anyway I would have done the Debian package, so that doesn't really make less work for me. Also I would prefer that the software be actually tested on the platform it is released on. I am not really comfortable with providing a software that I have no idea if it is functional.

That is one of the other advantages of snaps. They originated to solve exactly this problem. In the snap, there are all the necessary libraries packaged, think of it as a box that has everything the app needs to run. This is why many big companies are using it so that they do not have to actually test every platform. Once the snap works on one system it is 'guaranteed' to work on all of the others where Snap runs.

Oymate commented 4 years ago

On the topic if someone were to make a build then a flatpak version would also be nice.

asmarcz commented 4 years ago

On the topic if someone were to make a build then a flatpak version would also be nice.

I believe it doesn't have to be built manually every time. I do not know about Flatpak but Snap builds it automatically, it hooks on releases/tags on GitHub, something like that.

circular17 commented 4 years ago

I am curious about the fact that you need a one-line install. Is this part of a project of yours?

No, this is simply a matter of convenience. If I am to install LazPaint on 30 computers I need to do snap install lazpaint and not build it myself.

I see, if you want to prepare computers. So I suppose you are into that?

On my Manjaro (Arch), I can use yay that has all the build steps prepared and makes it a one-line install. But most of the time, it is more convenient to install binary right away, please do not delve into the discussion of source code vs binary distribution.

I don't know what you're talking about.

That is one of the other advantages of snaps. They originated to solve exactly this problem. In the snap, there are all the necessary libraries packaged, think of it as a box that has everything the app needs to run. This is why many big companies are using it so that they do not have to actually test every platform. Once the snap works on one system it is 'guaranteed' to work on all of the others where Snap runs.

Guaranteed to compile and run. Though there might be some surprises with a different desktop for example.

circular17 commented 4 years ago

On the topic if someone were to make a build then a flatpak version would also be nice.

Indeed that would be nice. I've heard it is useful on Fedora for example.

lainz commented 4 years ago

Maybe just a script that downloads and extract lazpaint will be enough. That is how apps are installed on Windows for example with a single line of powershell.

circular17 commented 4 years ago

This can be done indeed in one (long) line of bash:

TEMP_DEB="$(mktemp)" && PROJECT_URL="https://github.com/bgrabitmap/lazpaint/releases" &&
wget -O "$TEMP_DEB" "$PROJECT_URL/download/v7.1.5/lazpaint7.1.5_linux64.deb" &&
sudo dpkg -i "$TEMP_DEB" ; rm -f "$TEMP_DEB"
asmarcz commented 4 years ago

This is good for Debian based distributions. However, there is also the executable download. Is that one statically linked? If that is the case, then packaging similar download script along with some icons and description could do the trick to make it a snap.

circular17 commented 4 years ago

I don't understand "there is also the executable download".

LazPaint is statically linked with BGRABitmap and BGRAControls, but of course it depends on a few libraries like gtk2 or qt5, depending on the widgetset.

One thing to consider is: to make one or two packages. For example lazpaint-gtk2 and lazpaint-qt5 like for Debian distros.

asmarcz commented 4 years ago

I'm sorry, I meant the Linux * bit (no install) downloads on the homepage.

circular17 commented 4 years ago

Well some package makers rely on the files published in the releases. Though that works only for 8086-like processors.

Oymate commented 4 years ago

Just to be clear even one version is sufficient cause I don't need a paint.net alternative to be updated.

circular17 commented 4 years ago

@Oymate I take a note of your wish. Probably if someone makes the structure for a flatpak, it won't be too complicated then to update anyway.

lainz commented 4 years ago

Seems that there are a lot of ways of installing in Linux. Here a video 5 ways of installing on Linux https://www.youtube.com/watch?v=bwOp46xAmkM

I think here we're talking about the point 4 in the video, snap, flatpack or app image.

If I'm correct lazpaint already supports (or will with the new debian release) install from the store, install from the command line, and as well the way of downloading from the website the deb or the compressed version. As well the long line of bash mentioned here.

Too many ways =)

circular17 commented 3 years ago

Yeah lot of ways.

I had a look at snap and in fact it does not seem too complicated. I'll see if I get somewhere with it.

circular17 commented 3 years ago

Well it doesn't seem I can use snap on the virtual machine.

If someone would like to try, here are some thoughts:

alexmyczko commented 2 years ago

It already is available on many systems? https://repology.org/project/lazpaint/versions

But what about a new version/release?

circular17 commented 2 years ago

Lots of things remain to do, lots of issues.

chronoscz commented 2 years ago

As LazPaint is now available as a snap package https://snapcraft.io/lazpaint this issue can be closed.