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

release documentation #1779

Closed
wxl opened this issue Apr 14, 2020 · 82 comments
Closed

release documentation #1779

wxl opened this issue Apr 14, 2020 · 82 comments

Comments

@wxl
Copy link
Member

wxl commented Apr 14, 2020

As discussed (offtopic) on #1778 @tsujan and I are of the opinion that we could use more clear documentation about how and when to do releases.

I'm pretty sure the how is well sorted (but not ever written down from what I can tell) but the when has probably been a bit more organic. I think that latter issue could especially use development. I'm not saying that we adhere strictly to some time-based schedule, but there may be triggers to releases. What are those triggers?

I think the more detailed this documentation, the more the burden of releasing can be shared among multiple people, which should make releases easier, which should mean more releases, and that's a very good thing.

It certainly would save us the trouble (like on the aforementioned issue) of telling people that they should use git master because the releases are too darned old.

@tsujan
Copy link
Member

tsujan commented Apr 14, 2020

Everyone, please don't hesitate to tell about your opinions on how we could release more easily and efficiently. If you think that git is enough, please tell why. If it isn't enough, how could we release LXQt components faster and more easily?

LXQt has its git users but many users don't know how to have git LXQt -- I've seen Arch users that have problem with git. Others may suppose that gt LXQt is as unstable as git KDE....

As far as I've seen, we get lots of useful reports only after a release.

@wxl
Copy link
Member Author

wxl commented Apr 14, 2020

Well, and many distros are just not geared well towards anything but released software, so another reason for regular releases.

However, Arch isn't one of them. I'm shocked by the comment that you say that some of them have a problem with git. Could you elaborate more on that?

If the useful reports come after a release, that certainly suggests a very good value in regular releases. The more releases, the more feedback, the more improved each subsequent release.

@tsujan
Copy link
Member

tsujan commented Apr 14, 2020

However, Arch isn't one of them. I'm shocked by the comment that you say that some of them have a problem with git. Could you elaborate more on that?

Git LXQt is maintained very well in AUR but I've seen many Arch users with less than minimal knowledge of their systems. Installing Arch doesn't make a magic ;)

If the useful reports come after a release, that certainly suggests a very good value in regular releases.

I completely agree. I've experienced its usefulness first hand. Debian and Ubuntu users make sensible bug reports/feature requests after new releases.

I don't know how many times I've had to say, "your installation is too old."

@wxl
Copy link
Member Author

wxl commented Apr 14, 2020

I guess I'm just surprised to see Arch users that don't know what they're doing!

Anyways I'd like to hear from others on this. Most importantly, we need to hear from @agaida since it sounds like he's been the one carrying the release torch.

@apt-ghetto
Copy link

It seems, that no release concept exists. I am new to the whole LXQt world. The only release that I have seen is 0.14.X from Lubuntu 18.10 onwards. In other words, I have no idea, how release management was handled before 0.14.

If I had to create a release concept, I would ask myself this:

  • Is the release planning more time based or feature based? Or based on the mood of the release manager or the community?
    • Is there a list of milestones to reach the point for a new release?
    • Or is every year/6 months a new version released?
  • What is the support status for the releases?
    • Is only the last stable release supported by LXQt?
    • Are there several supported releases?
    • Are there long term support releases? How long are they supported?
  • Are security fixes and bug fixes backported to older releases?
    • Who does the work? The committer itself? Someone else?
  • Are Pull requests for older releases accepted, without fixing the bug in master?

Based on the answers, it has quite different consequences for downstream.

@tsujan
Copy link
Member

tsujan commented Apr 16, 2020

@apt-ghetto
One thing is certain: We don't and can't support old releases — no LTS, no multiple-release support, no backport — we simply don't have the manpower. If releasing becomes more frequent (and I really hope so), "point releases" will be made to fix bugs in the latest release.

@luis-pereira
Copy link
Member

IIRC our goal was/is a major release every six months more or less, followed by point (fix) releases to the latest major release. Considering the available manpower, aiming for more frequent releases/backports etc is not realistic.

@tsujan
Copy link
Member

tsujan commented Apr 17, 2020

@luis-pereira
The current manpower could do much more efficiently if each developer can release the component(s) he works on after consulting others (or after asking @agaida).

For example, releasing lxqt-archiver should be a piece of cake. It shouldn't wait for only one person to do the whole job.

@wxl
Copy link
Member Author

wxl commented Apr 17, 2020

@luis-pereira we are about 9 months too late for our 6 month milestone, so maybe we can start with sticking to that!

@wxl
Copy link
Member Author

wxl commented Apr 17, 2020

Also what dictates when a point release comes out? Only for security and critical bug fixes or what?

@luis-pereira
Copy link
Member

The current manpower could do much more efficiently if each developer can release the component(s) he works on after consulting others (or after asking @agaida).

Of course it can.

@luis-pereira
Copy link
Member

@luis-pereira we are about 9 months too late for our 6 month milestone, so maybe we can start with sticking to that!

That would be a great start.

@luis-pereira
Copy link
Member

Also what dictates when a point release comes out? Only for security and critical bug fixes or what?

Security and critical bugs at least.

@tsujan
Copy link
Member

tsujan commented Apr 17, 2020

I agree with @luis-pereira that point releases are for critical bugs and security. Also for that reason, it'll be great if each developer is able to make them by consulting others — instead of waiting for @agaida, who may have lots of other jobs to do. That will be a wok division, which will benefit both users and developers (because of more helpful reports and less reports against outdated codes).

@tsujan
Copy link
Member

tsujan commented Apr 19, 2020

FYI:

The first release by me: https://github.com/lxqt/lxqt-archiver/releases/tag/0.1.0. Please package it for your distros and for us to get real feedback!

@yan12125
Copy link
Member

yan12125 commented Apr 19, 2020

Awesome! I published https://www.archlinux.org/packages/community/x86_64/lxqt-archiver/.

From the perspective of a packager, the first thing I noticed for this release is that there are no GPG-signed source tarballs. Arch Linux enforces package authenticity by PGP key IDs (ex: line 22 in PKGBUILD for lxqt-about)

Seems GPG-signing is done by https://github.com/lxqt/lxqt-release-foo/blob/master/scripts.d/archive.sh.

EDIT: lxqt-archiver moved to stable repo.

@tsujan
Copy link
Member

tsujan commented Apr 19, 2020

@yan12125
Thanks for telling me about GPG-signing! I'll consider it in next releases.

@tsujan
Copy link
Member

tsujan commented Apr 19, 2020

OK, please tell if this is correct.

To make a release of an LXQt component (minus the general announcement, which isn't possible for now):

  1. Complete the CHANGELOG inside the source, make a PR and merge it.
  2. Make a signed tag (the version), verify it and push it.
  3. Create PACKAGE-TAG.tar.xz from the latest git source and also PACKAGE-TAG.tar.xz.asc by using gpg. (@agaida's script can be used for that.)
  4. Go to GitHub release page, edit the latest release (which is already created because of 2), add some explanation and upload PACKAGE-TAG.tar.xz and PACKAGE-TAG.tar.xz.asc.
  5. Release it!

@yan12125, am I missing anything, especially for Arch?

EDIT 1: I meant "signed tag" but wrote "annotated tag"; corrected it.

EDIT 2: I made a release for Arqiver in the above-mentioned way: https://github.com/tsujan/Arqiver/releases/tag/V0.5.0

@yan12125
Copy link
Member

am I missing anything, especially for Arch?

Nothing :) Thanks for the note!

@jubalh
Copy link
Member

jubalh commented Apr 20, 2020

Create PACKAGE-TAG.tar.xz from the latest git source and also PACKAGE-TAG.tar.xz.asc by using gpg

Most distros will check against @agaida and/or @jleclanche GPG key though.
So we need to announce on an offical location which key we use this time.

@tsujan
Copy link
Member

tsujan commented Apr 20, 2020

@jubalh
Supposing that @agaida doesn't show up, about 3 weeks later, I'll start to release libfm-qt-0.15.0 and pcmanfm-qt-0.15.0 but only after telling everyone about it and asking for opinions and guidance.

@jubalh
Copy link
Member

jubalh commented Apr 20, 2020

Okay, good to know. Do you plan to do a release of the whole of LXQt in the end or only some individual parts?

@tsujan
Copy link
Member

tsujan commented Apr 20, 2020

Actually, I think its highly preferable (even a must) to releaselxqt-build-tools first and then make libfm-qt's build depend on its new version (I should ask @luis-pereira about his PR). Then, we should release other components too.

My plan, so far:

  • Release lxqt-build-tools after deciding about @luis-pereira's PR.
  • Bump libfm-qt's ABI and release it.
  • Release pcmanfm-qt.

After that, other components could be released. But I should do some tests before doing anything. We also need to wait for @selairi to finish his works. I hope libfm-qt/pcmanfm-qt could be released 3 weeks later but other components might need to wait a little longer.

@wxl
Copy link
Member Author

wxl commented Apr 20, 2020

@tsujan that sort of sequencing is the sort of things the docs need. So should we create a wiki page to start collecting some of this stuff?

@tsujan
Copy link
Member

tsujan commented Apr 20, 2020

@wxl
I'm making a list of jobs for myself but I'll surely put it somewhere in https://github.com/lxqt when it's finished and tested.

@tsujan
Copy link
Member

tsujan commented Apr 20, 2020

OK, the whole LXQt should be released on bumping lxqt-build-tools's version.

I update all changelogs in PRs whenever I find time (already made 2 PRs). Then I prepare summaries for release pages (previously, we did it in "lxqt.org" but it's better and cleaner to do it for each component in its own release page). The order of releasing is obvious but distro packaging should be done after all components are released (I'll tell everyone about it).

@tsujan
Copy link
Member

tsujan commented Apr 22, 2020

@wxl
This works (later we could put it — or, perhaps, a better version of it — somewhere):

How To Release A New Version of LXQt

Order

Preparing and releasing of LXQt components can be done in this order (only important components are listed and the order isn't strict near the end):

  lxqt-build-tools
  libqtxdg
  liblxqt
  libfm-qt
  pcmanfm-qt
  lxqt-qtplugin
  lximage-qt
  lxqt-archiver
  libsysstat
  lxqt-about
  lxqt-config
  lxqt-globalkeys
  lxqt-notificationd
  lxqt-policykit
  lxqt-powermanagement
  lxqt-session
  lxqt-sudo
  lxqt-panel
  lxqt-runner
  lxqt-themes
  qtermwidget
  qterminal
  lxqt-openssh-askpass
  lxqt-admin
  pavucontrol-qt
  screengrab
  qps
  …

You should have installed the latest git versions of all LXQt components and be satisfied with their performance before proceeding.

Preparation

  1. Prepare the components for their new releases by making PRs (with titles like "Pre-release changes") for:
    • Incrementing versions;
    • Incrementing ABI versions if relevant;
    • Incrementing versions of dependencies;
    • Incrementing the minimum Qt version only if needed; and
    • Updating CHANGELOGs.
  2. Merge the above-mentioned PRs when ready and prepare release notes for release pages. Release notes can be extracted from change logs — from the most to the least exciting changes — so that the average user could understand them easily.

Releasing

Release the components in the above-mentioned order. To do so, for each component:

  1. Make a signed tag (the version), verify it and push it.
  2. Create PACKAGE-TAG.tar.xz from the latest git source and also PACKAGE-TAG.tar.xz.asc by using gpg.
  3. Go to GitHub release page, edit the latest release (which has already been created because of 2), add its release note (which you've already made) and upload PACKAGE-TAG.tar.xz and PACKAGE-TAG.tar.xz.asc.
  4. Release it!

Announcement

Announce the new version of LXQt with some highlights as the release note of lxqt-about.

Tell distro maintainers that they can start their jobs. If someone finds an issue in your work, fix it — of course, reluctantly because you're tired now.

@luis-pereira
Copy link
Member

@wxl @tsujan @yan12125 @jubalh
Copied @tsujan instructions to the LXQt Wiki and created a How to release a new version section.

@tsujan
Copy link
Member

tsujan commented Apr 24, 2020

@luis-pereira, thanks a lot! I might make minor changes to it later.

@yan12125 @jubalh @wxl @luis-pereira
I finished the releasing of LXQt 0.15.0 and made a symbolic release of the super-project to include the general announcement: https://github.com/lxqt/lxqt/releases/tag/0.15.0

I double checked everything -- and hope that my double-checking hasn't had the inverse effect ;) -- but please check it and tell me if something is wrong.

@wxl Please tell Lubuntu team that the new version is ready; I didn't know whom I should call.

I hope Debian will have a new maintainer.

@stefonarch
Copy link
Member

You mean how new features get into .ts files? In CMakeLists.txt is set
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)

There was also something like -DCMAKE_UPDATE_TRANSLATIONS=ON while compiling but I think it's ignored.

@tsujan
Copy link
Member

tsujan commented Apr 28, 2020

@stefonarch
We started to comment simultaneously :) I meant updating the translations inside each source (previously and as a developer, I didn't care about translations but now, I should).

Minutes ago, I saw that everything had already been done cleanly in lxqt-build-toolslxqt-transupdate. It's enough to run lxqt-transupdate inside each source to update its translations.

@wxl
Copy link
Member Author

wxl commented Apr 28, 2020

  • Do I need to add my exported key, that I've added to GitHub, to a keyserver?
  • Which keyserver?

It might be helpful to put it elsewhere. the SKS pool is probably your best bet.

@tsujan
Copy link
Member

tsujan commented Apr 28, 2020

It might be helpful to put it elsewhere

You mean "elsewhere too"; it should be in GitHub.

@wxl
Copy link
Member Author

wxl commented Apr 28, 2020

Well elsewhere, by definition, acknowledges one place and points at one that is not like it, so yes 🤣

@jubalh
Copy link
Member

jubalh commented Apr 29, 2020

Last but not least, can you please ensure that option(WITH_INPUT "Build the 'lxqt-config-input'" ON) in lxqt-config will always be possible to set to OFF? libinput does not exist on NetBSD and I don't believe it will.

@voidpin Well, like always: just because something doesnt exist on one distribution/os we won't change it (unless there is a general good reason). You can just set the setting yourself in your build scripts :)

@tsujan
Copy link
Member

tsujan commented Apr 29, 2020

@jubalh
I don't think it's easy to remove that part of lxqt-config in a build script (but I haven't tested). IMHO, we can add an option and set it OFF by default. It seems Gentoo users might need it too.

@jubalh
Copy link
Member

jubalh commented Apr 29, 2020

I see, I thought just a switch can be used.

@ghost
Copy link

ghost commented Apr 29, 2020

@jubalh I think it has been a misunderstanding here.
Currently I can set it to ON or OFF using CMAKE_ARGS.
I was simply asking to please keep it like that. It seems my comment had caused some confusion, I'm sorry for that.

@tsujan
Copy link
Member

tsujan commented Apr 29, 2020

Currently I can set it to ON or OFF using CMAKE_ARGS

So, I was wrong. We don't need to change anything :) @jubalh, you were right.

@ghost
Copy link

ghost commented Apr 29, 2020

@tsujan yes, I was just asking to please keep it as is :)

@jubalh
Copy link
Member

jubalh commented Apr 29, 2020

Thanks for clarifying @voidpin !

@ghost
Copy link

ghost commented Apr 30, 2020

FYI,
2020-04-30-103117-1366x768-scrot
:)

@tsujan
Copy link
Member

tsujan commented Apr 30, 2020

Nice.

You might want to override the panel's icon theme with a set that has light (symbolic) icons. That's possible at the bottom of panel config dialog.

@yan12125
Copy link
Member

yan12125 commented May 2, 2020

Alright, apparently I was wrong and GPG public keys on some key servers is still necessary for some scenarios. An example is Arch Linux's reproducible builds server, which uses gpg to fetch public keys.

That is as simple as a command

gpg --keyserver pool.sks-keyservers.net --send-keys 19DFDF3A579BD509DBB572D8BE793007AD22DF7E

That should be enough as SKS server exchanges keys periodically.

@tsujan mind to add that?

@tsujan
Copy link
Member

tsujan commented May 2, 2020

Please tell me where I should add it and I will tomorrow -- I'm not familiar with key servers.

@AlfredoRamos
Copy link

@tsujan on the terminal, using the command @yan12125 gives you.

They key will be synced to other key servers, so you only need to send it once.

Although it's possible getting the key directly from GitHub, I don't think is a good idea to rely only on that.

gpg --fetch-keys https://github.com/tsujan.gpg

@tsujan
Copy link
Member

tsujan commented May 3, 2020

@AlfredoRamos
Thanks! I did it and encountered no problem (received no error message in the terminal).

However, I can't find it with --search-keys. Have no clue why it's so.

@tsujan
Copy link
Member

tsujan commented May 3, 2020

OK, after using --search-keys for more than 10 times, it worked at last. Weird!

@tsujan
Copy link
Member

tsujan commented May 3, 2020

Back to the main subject:

We did it :) Thank you all for your suggestions, guidance and help, without which a release wouldn't be possible.

I'll clean up the explanations whenever I find the time, although they're usable as they are.

A few components need point releases, which I'll make in 2 weeks or so. Future releases will be straightforward.

@tsujan tsujan closed this as completed May 3, 2020
@jubalh
Copy link
Member

jubalh commented May 16, 2020

@tsujan do you know when you plan to do 0.15.1?
Not that I want to hurry or anything, I just wanted to plan my time so that I have time to package 0.15.1 quickly after the release :)

@tsujan
Copy link
Member

tsujan commented May 16, 2020

@jubalh Only lxqt-panel, pcmanfm-qt/libfm-qt and lxqt-archiver need point releases (lxqt/lxqt.github.io#43). Tomorrow, I'll release pcmanfm-qt, libfm-qt and lxqt-archiver. lxqt-panel may need to wait a little because of lxqt/lxqt-panel#1404.

In general, whenever I want to make point or, especially, major releases, I'll ask everybody for their opinions and, when I make them, I'll tell you and @yan12125.

@jubalh
Copy link
Member

jubalh commented May 16, 2020

Perfect! Thanks @tsujan !

@tsujan
Copy link
Member

tsujan commented May 16, 2020

You're welcome.

@ghost
Copy link

ghost commented Jun 1, 2020

FYI LXQt-0.15.0, including all the point releases until yesterday, has been imported and is now available for all NetBSD users.

@luis-pereira
Copy link
Member

@tsujan translations can be extracted with the lxqt-build-tools/lxqt-transupdate script.
Will check if the -DCMAKE_UPDATE_TRANSLATIONS=ON is still in place.

@luis-pereira
Copy link
Member

The -DCMAKE_UPDATE_TRANSLATIONS=ON is still working

@tsujan
Copy link
Member

tsujan commented Jun 2, 2020

@luis-pereira
Yes, I've used it several times to update translations for translators and will do so once in a while.

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

8 participants