kotlin-language-server icon indicating copy to clipboard operation
kotlin-language-server copied to clipboard

Automatically publish updates to winget on each release

Open RenFraser opened this issue 2 years ago • 6 comments

Similar to #429 but publishing to winget so that windows users can simply run winget upgrade when they want to upgrade to the latest features. I've made an issue in the winget repo to add kotlin language server. To do this initially, it should just be a case of running the create script with the details I've provided in that issue. To auto-update the package in winget, the maintainers have stated the following on the issue:

The best way is to integrate winget-create into your release process. PowerToys and OhMyPosh are some examples of how to do this

RenFraser avatar Mar 01 '23 19:03 RenFraser

The few times I use Windows for something, I always use Chocolatey (similar, as it is a package manager as well). It has always made the horrid experience of using Windows better. Maybe we could consider releasing to Chocolatey as well? Maybe it could drive adoption, as I know of several developers who also enjoy Chocolatey 🙂 (don't know how they enjoy Windows though, but they probably play more games than me)

themkat avatar Mar 01 '23 19:03 themkat

Interesting. Obviously the language server requires Java, so I'm not sure how well winget deals with this kind of non-self-contained software, i.e. dependencies in general. Most Windows software seems to use some form of installer which we don't do either.

Other package managers like Chocolatey or Scoop seem to take a more Unix-style approach to packages and dependencies there.

fwcd avatar Mar 01 '23 21:03 fwcd

Maybe we could consider releasing to Chocolatey as well?

I wonder if we should make a few GitHub issues around this. One for each package manager. Perhaps we could have some sort of continuous deployment that would publish to:

  • Homebrew
  • Winget
  • Chocolatey
  • Scoop

I'm not sure how parent issues work in GitHub but maybe we could have some sort of subtasks/parent issue to track them? That way we could break them up a little.

how well winget deals with this kind of non-self-contained software

It's a little hard to find the documentation but Winget can use zip files now as well. I've opened this issue in the winget repository and have received some advice from the maintainers about reference implementations for GitHub actions. They've linked a couple of examples that we might be able to paste into our own actions.

RenFraser avatar Mar 05 '23 00:03 RenFraser

I would actually prefer not to make a bunch of issues (in this repo) for this for now. A couple reasons:

  • Packaging is somewhat low priority compared to a whole range of other, more urgent, issues. I would prefer to keep the issues section mostly feature-focused.
  • As much as I would like it to be, in many cases the language server is simply not mature enough to be considered production-quality software yet, and thus I wouldn't feel comfortable advertising it as such.

Also I feel like there's a more general bottom line here: Packaging in the Unix world is generally not be the responsibility of the project itself but that of the maintainers of the package repositories. We cannot and should not support every package manager in existence, instead the package managers interested in hosting the language server can poll our GitHub releases every now and then to check for updates. In fact, Homebrew even automates this to a certain degree with their livechecks from what I understand.

fwcd avatar Mar 05 '23 00:03 fwcd

Sorry, I hope this didn't come across as too harsh and I am definitely not entirely opposed to the idea of pushing to third-party package managers in the future. However every package manager we support through direct deployments comes with a certain maintenance cost and focusing on GitHub Releases (only) for now keeps the release process more streamlined and centralized.

Once the language server reaches production-level quality we can revisit this, but for now I'd feel more comfortable with leaving this support up to the third-party package managers themselves.

fwcd avatar Mar 05 '23 01:03 fwcd

No problem! I didn't realise that homebrew automatically scans for updates. I'll have to look it up. Thanks!

I do think it's worthwhile giving users on different platforms access to the software in an easy way. Why don't we leave the issues as is in that case and in the future we can come back to it if we need to?

RenFraser avatar Mar 05 '23 02:03 RenFraser