WIP forge-agnostic software release tracker https://earl.run/willow
Go to file
Amolith 5fe84d6aff
improve README wording
2024-02-29 16:22:57 -05:00
.files add missing screenshots 2024-02-29 15:52:49 -05:00
.reuse initial sourcehut commit 2023-09-21 14:03:21 -04:00
LICENSES remove unused license 2023-12-31 12:17:32 -05:00
cmd Implement new UI, fix DB use 2024-02-23 18:38:44 -05:00
db Actually finish 🤞 DB-/ID-related refactors 2024-02-23 21:16:50 -05:00
git Improve RemoveRepo implementation 2024-02-29 15:51:42 -05:00
project Improve logic around untracking projects 2024-02-29 15:07:07 -05:00
rss finish implementing authentication 2023-10-25 20:16:36 -04:00
users finish implementing authentication 2023-10-25 20:16:36 -04:00
ws Improve logic around untracking projects 2024-02-29 15:07:07 -05:00
.air.toml ignore future website directory 2023-12-20 14:17:00 -05:00
.gitignore Ignore all SQLite files 2024-02-23 21:24:23 -05:00
.golangci.toml add justfile and ci-lint config 2023-09-24 17:07:42 -04:00
README.md improve README wording 2024-02-29 16:22:57 -05:00
go.mod Bump git-go and its deps 2024-02-23 18:52:05 -05:00
go.sum Bump git-go and its deps 2024-02-23 18:52:05 -05:00
go.sum.license reuse compliance 2023-09-24 16:57:56 -04:00
justfile Beeg refactor for database and users and auth 2023-10-25 00:14:32 -04:00

README.md

Willow

Go report card status REUSE status Donate with fosspay

Forge-agnostic software release tracker

screenshot of willow's current web UI

This UI is Amolith's attempt at something simple and functional, yet still friendly and pleasant. Amolith is not a UX professional and would very much welcome input from one!

What is it?

If you'd rather watch a short video, Amolith gave a 5-minute lightning talk on Willow at the 2023 Ubuntu Summit.

Willow helps developers, sysadmins, and homelabbers keep up with software releases across arbitrary forge platforms, including full-featured forges like GitHub, GitLab, or Forgejo as well as more minimal options like cgit or stagit.

Willow exists because decentralisation, as wonderful as it is, does have some pain points. One piece of software is on GitHub, another piece is on GitLab, one on Bitbucket, a fourth on SourceHut, a fifth on the developer's self-hosted Forgejo instance. The capabilities of each platform can differ as well, making the problem even more difficult to solve. Forgejo and GitHub have RSS feeds that notify you of releases as well as APIs. SourceHut has firehose RSS feeds that notify you of all activity in the repo plus an APIs. GitLab only has an API. Some release announcements might be on the developer's personal blog. Sometimes there's a CVE announcement prior to a release and those get published on a different platform entirely.

Willow brings all that scattered information under one roof by supporting both RSS and one of the very few things all the forges have in common: their Version Control System. At the moment, Git is the only supported VCS, but we're definitely interested in adding support for Pijul, Fossil, Mercurial, and potentially others.

Amolith has recorded some of his other ideas, thoughts, and plans in [his wiki].

Installation and use

Note: prebuilt binaries will be available after we release v0.0.1

  • Clone the repo
  • Build the binary with CGO_ENABLED=0 go build -ldflags="-s -w" -o willow ./cmd
  • Upload it to a remote server
  • Execute the binary
  • Edit the config.toml
  • Create a user with ./willow -a <username>
  • Execute the binary again
  • Reverse proxy http://localhost:1313
  • Open the web UI
  • Click Track new project
  • Fill out the form
  • Indicate which version you're currently on
  • That's it!

Note that we still consider the project to be in alpha state. There will be bugs; please help fix them!

Contributing

Contributions are very much welcome! Please take a look at the ticket tracker and see if there's anything you're interested in working on. If there's specific functionality you'd like to see implemented and it's not mentioned in the ticket tracker, please send a description to the mailing list so we can discuss its inclusion. If we don't feel like it fits with Willow's goals, you're encouraged to fork the project and make whatever changes you like!

Questions, comments, and patches can always go to the mailing list, but there's also an IRC channel and an XMPP MUC for real-time interactions.

If you haven't used mailing lists before, please take a look at SourceHut's documentation, especially the etiquette section.

Configuring git...

…for git send-email

git config sendemail.to "~amolith/willow@lists.sr.ht"
git config format.subjectPrefix "PATCH willow"
git send-email [HASH]

…for signing the DCO

git config format.signOff yes

Required tools

  • Go
  • gofumpt
    • Stricter formatting rules than the default go fmt
  • golangci-lint
    • Aggregates various preinstalled Go linters, runs them in parallel, and makes heavy use of the Go build cache
  • Staticcheck
    • Uses static analysis to find bugs and performance issues, offer simplifications, and enforce style rules

Suggested tools

  • just
    • Command runner to simplify use of the required tools
  • air
    • Watches source files and rebuilds/executes the project when sources change