Skip to content

release: propose 3.0.0-beta changelog (RFC) - #521

Merged
mrjimenez merged 4 commits into
amule-project:masterfrom
got3nks:pr-3.0.0-beta-changelog
May 3, 2026
Merged

release: propose 3.0.0-beta changelog (RFC)#521
mrjimenez merged 4 commits into
amule-project:masterfrom
got3nks:pr-3.0.0-beta-changelog

Conversation

@got3nks

@got3nks got3nks commented May 3, 2026

Copy link
Copy Markdown
Contributor

Summary

RFC for the next aMule release. It's been 5+ years since 2.3.3 (2021-02-07). This PR proposes shipping the accumulated work as 3.0.0-beta and adds the CHANGELOG entry, the version bump, and the CMake plumbing so future releases need only a tag plus a CHANGELOG entry — no source-bump dance required.

Four commits, smallest first:

  1. cmake: derive VERSION/PACKAGE_VERSION from git tag when HEAD is on one — extends the existing git-describe block so tagged builds automatically inherit the tag name in VERSION / PACKAGE_VERSION / PACKAGE_STRING. Tagless builds keep the existing SVN/GIT placeholders. Also forwards an AMULE_TAGGED_RELEASE flag through config.h.cm so the next commit can self-manage the __SVN__ dev marker.

  2. release: bump VERSION_MJR/MIN/UPDATE to 3.0.0 + auto-suppress __SVN__ on tagged builds — bumps the integer triplet to 3.0.0 (was 2.4.0, the never-shipped in-tree marker since 2.3.3), and makes __SVN__ conditional on AMULE_TAGGED_RELEASE. Source builds still show "aMule SVN"; tagged release builds show "aMule <tag>" automatically. Together with 1, this means future releases are tag-only.

  3. docs: add 3.0.0-beta CHANGELOG entry — the 5-year retrospective. Format breaks with the per-author bullet style of older entries and adopts Keep-a-Changelog topic sections.

  4. cmake: suppress "(Snapshot: ...)" trailer on tagged release builds — discovered during fork testing of the AppImage banner: tagged builds were rendering "Initialising aMule 3.0.0-beta ... (Snapshot: rev. 3.0.0-beta)", with the version string duplicated and "Snapshot:" misleading on a real release. Pairs an unset(SVNDATE) in the cmake tagged-release block with a #define#cmakedefine change in config.h.cm so the #ifdef SVNDATE gate in MuleVersion.h drops the trailer entirely. Source/dev builds keep the trailer (still useful for identifying which dev revision a build came from).

Highlights of what's in 3.0.0-beta

Full breakdown across 98 merged PRs / 284 commits / +65k −100k lines (net −35k) in the proposed CHANGELOG entry.

RFC: questions for maintainers

1. Version number

3.0.0-beta vs 2.4.0-beta vs something else? I lean 3.0.0 because:

  • 5 years of accumulated work (98 merged PRs, 284 commits, +65k / −100k lines = net −35k despite all the new features, thanks to the legacy purge).
  • Half the C++ files were touched.
  • Build system replaced (autotools → CMake).
  • Every legacy wxWidgets / Boost API rewritten.
  • Net: this is a "we are a different project now" signal more than an incremental release.

The semver-purist counter-argument is "no breaking changes to user state, so 2.4.0". I think the project isn't a strict-semver project (no API consumers), so versioning is signaling rather than contract — and the 3.0.0 signal is what matches the substance. Happy to renumber if you'd prefer 2.4.0-beta.

2. Beta vs stable

Proposing beta because:

  • Major rewrites (throttler, disk I/O, ASIO bindings) deserve wider testing before the stable label.
  • I've been running this on my own node for several weeks against real ed2k traffic with no crashes, no memory leaks, and substantial performance improvement — but that's one machine.
  • A beta cycle gives translators time to fill in new strings and lets the AppImage / Flatpak / Windows / macOS artifacts collect real-world reports.

A short beta period (2-4 weeks) before declaring 3.0.0 stable feels right. Could also skip beta and go straight to stable if you'd prefer.

3. Date

Currently `2026-MM-DD` placeholder in the changelog. Fill in when you tag.

4. Tagline

`"alive again"` follows the existing snarky-tagline convention (`"delayed too many times"`, `"can we have two releases in the same year?"`). Open to other suggestions or no tagline.

Builds on top of merged #520

#520 (ci: add tag-triggered release.yml workflow) is now merged into master — the tag → packaging-matrix → draft-Release pipeline is live. Tagging the merge commit of this PR will fire it automatically.

How to verify the cmake plumbing

# Off-tag (current state on this branch):
cmake -B build -S .
# → "VERSION = GIT", "PACKAGE_VERSION = SVN", "PACKAGE_STRING = aMule SVN"
# → no "tagged release" status line
# → MOD_VERSION_LONG = "aMule SVN"

# On-tag (simulating tagged release):
git tag -a 3.0.0-beta -m "test"
cmake -B build -S .
# → "-- building tagged release: aMule 3.0.0-beta" status line
# → VERSION = PACKAGE_VERSION = "3.0.0-beta", PACKAGE_STRING = "aMule 3.0.0-beta"
# → MOD_VERSION_LONG = "aMule 3.0.0-beta"
git tag -d 3.0.0-beta

Test plan

  • git describe --tags --exact-match HEAD semantics verified locally (off-tag = exits non-zero with ERROR_QUIET swallowing; on-tag = returns the tag string).
  • Local Mac build of amuled against this branch (Homebrew env per cmake/cryptopp.cmake's known CPATH / LIBRARY_PATH requirement on Apple Silicon):
    • Off-tag (detached HEAD on the CHANGELOG commit, no exact-match tag): cmake configure emits git revision rev. 2.3.3-292-gceab4ee68 found and no building tagged release: ... line; generated config.h has /* #undef AMULE_TAGGED_RELEASE */ and #define SVNDATE "rev. 2.3.3-292-gceab4ee68"; amuled --version prints aMuleD GIT compiled with wxBase(OSX Cocoa) v3.3.2 and Boost 1.90 (Snapshot: rev. 2.3.3-292-gceab4ee68) (OS: macOS). Dev path preserved — VERSION is the "GIT" placeholder, SVNDATE trailer is intact.
    • On-tag (3.0.0-beta tag at branch tip, .dmg downloaded from the fork CI run): mounted Universal2 .dmg locally, amuled --version prints aMuleD 3.0.0-beta compiled with wxBase(OSX Cocoa) v3.3.2 and Boost 1.90 (OS: macOS). Release path correct — VERSION carries the tag, Snapshot trailer suppressed by commit 4.
  • Version macros traced: VERSION (string) flows through config.h.cm → About dialog & --version; VERSION_MJR/MIN/UPDATE (integers) feed Windows .exe File Version, tray menu, ed2k peer announcements, server login, log line, and version.rc.
  • Fork-tested via tag 3.0.0-beta on the combined ci: add tag-triggered release.yml workflow #520 + release: propose 3.0.0-beta changelog (RFC) #521 branch (run 25277950923):
    • Artifact filenames carry the tag — verified aMule-3.0.0-beta-aarch64.AppImage, aMule-3.0.0-beta-macOS-universal2.dmg, aMule-3.0.0-beta-Windows-{x64,arm64}.zip etc.
    • Binary --version banner: mounted the fresh Universal2 .dmg locally, ran aMuled --versionaMuled 3.0.0-beta compiled with wxBase(OSX Cocoa) v3.3.2 and Boost 1.90 (OS: macOS). The CMake auto-detection (commit 1) flowed the tag into VERSION correctly.
    • Commit 4's (Snapshot: ...) suppression confirmed: the same banner has no trailing (Snapshot: rev. 3.0.0-beta). Compare to the off-tag dev-build banner which still appends (Snapshot: rev. 2.3.3-NN-gXXXXXX) as before.
    • Flatpak (x86_64 + aarch64) failed across 3 retries on the same libdbusmenu SSL connection timeout against git.launchpad.net — known launchpad outage tracked in flatpak: vendor launchpad-only deps (intltool + libdbusmenu) to fix CI flakiness #517 (vendoring rejected, deferred until ecosystem stabilises). No code change in this PR or ci: add tag-triggered release.yml workflow #520 affects the Flatpak path; expectation is it'll succeed on the upstream side once launchpad recovers. Retry loop scheduled to keep trying every 30 min.
  • After merge: maintainer tags 3.0.0-beta on the merge commit; release.yml (already in master from ci: add tag-triggered release.yml workflow #520) fires; draft GitHub Release lands with 7 platform artifacts for review and publish.

got3nks added 4 commits May 3, 2026 15:04
Extends the existing git-describe block in CMakeLists.txt with a second
`git describe --tags --exact-match HEAD` call.  When HEAD sits on a
tag, override the SVN/GIT placeholders with the tag name so artifact
filenames, the About dialog string, the tray menu label, and the
Windows version resource all reflect the release.  Tagless builds
(normal source clones, dev branches) keep "SVN"/"GIT" — the
existing dev marker is unchanged.

Also forwards an AMULE_TAGGED_RELEASE flag via config.h.cm so
ClientVersion.h can suppress the __SVN__ dev marker on tagged builds
without touching ClientVersion.h on every release.

Side benefit: the "RELEASERS: REMOVE THE DEFINE ON THE RELEASES"
comment in ClientVersion.h becomes obsolete — the release process now
just tags a commit and lets CMake figure out the right macros.  Future
releases need only a CHANGELOG entry plus the tag.
… on tagged builds

Bumps the integer version triplet from 2.4.0 (the never-shipped
in-tree next-dev marker, in place since 2.3.3) to 3.0.0.  The triplet
surfaces in five user- and peer-visible places:

 - Windows .exe Properties → File Version
 - tray-icon menu label
 - ed2k version integer broadcast to peers and the server
 - the "Your aMule version is X.Y.Z" log line
 - the .rc resource on Windows

so it has to match the planned release line, not be left at the prior
in-tree placeholder.

Also makes the __SVN__ dev marker conditional on AMULE_TAGGED_RELEASE,
which CMake now derives from `git describe --tags --exact-match` and
forwards via config.h.  Source / dev builds keep __SVN__ defined and
MOD_VERSION_LONG = "aMule SVN" (existing behaviour); tagged release
builds get __SVN__ suppressed automatically and MOD_VERSION_LONG
becomes "aMule <tag>" (e.g. "aMule 3.0.0-beta").  Tarball builds
with no .git can still pass -DAMULE_TAGGED_RELEASE on the cmake
command line if needed.

The hardcoded `#define VERSION "2.4.0"` fallback is updated to
"3.0.0-dev" — it's only used when config.h doesn't define VERSION
(e.g. when ClientVersion.h is included from windres processing the
.rc file with RC_INVOKED), so the value matters cosmetically rather
than functionally, but matching the next-dev triplet keeps it
self-consistent.
Replaces the empty 2.3.4 placeholder (dated 2021-??-??, never shipped)
with a 3.0.0-beta entry covering the 5+ years of work since 2.3.3
(2021-02-07): 98 merged PRs, 284 commits, +65k / -100k lines (net
-35k).

Format breaks with the existing per-author bullet style and adopts
Keep-a-Changelog topic sections.  Headlines: throughput rewrite (peer-
to-peer upload ~300x, download 2-4x depending on platform), CMake
replacing autotools, native binaries for Linux / macOS / Windows,
HTTPS download stack rebuilt on wxWebRequest, Kad parallel searches,
MaxMindDB replacing deprecated GeoIP.

Date placeholder "2026-MM-DD" — to be filled in when the maintainers
approve and tag.
On a tagged build, the existing SVNDATE git-describe block produces
"rev. <tag>", and MuleVersion.h's `#ifdef SVNDATE` gate appends
"(Snapshot: <SVNDATE>)" to the version string.  Result on tagged
builds was:

  Initialising aMule 3.0.0-beta compiled with wxGTK3 v3.2.6 \
      and Boost 1.74 (Snapshot: rev. 3.0.0-beta)

"Snapshot:" is misleading on a tagged release (a release is not a
snapshot) and the version string is duplicated.  Two-line fix:

 - In CMakeLists.txt's tagged-release detection block, `unset
   (SVNDATE)` after detecting the tag.  The earlier git-describe
   call had set it to "rev. <tag>"; clearing it on tagged builds
   prevents that value from flowing through to the banner.

 - In config.h.cm, change `#define SVNDATE "${SVNDATE}"` to
   `#cmakedefine SVNDATE "${SVNDATE}"`.  Without this, an unset
   SVNDATE would still produce `#define SVNDATE ""` in config.h
   (empty string, but still defined), which keeps the `#ifdef`
   true and renders "(Snapshot: )" with empty content.
   `#cmakedefine` produces `/* #undef SVNDATE */` for unset
   variables, which finally lets MuleVersion.h's `#ifdef` skip
   the segment entirely.

After this commit the tagged-build banner becomes:

  Initialising aMule 3.0.0-beta compiled with wxGTK3 v3.2.6 \
      and Boost 1.74

Source / dev builds are unchanged — the SVNDATE block still runs and
produces "rev. <git describe>" as before, and the trailer renders
normally.
@got3nks
got3nks force-pushed the pr-3.0.0-beta-changelog branch from 005621b to df8f937 Compare May 3, 2026 13:04
@mrjimenez

Copy link
Copy Markdown
Contributor

Hi @got3nks ,

Excelent work! Congratulations.

As for your questions, of course, I answer for myself, we should also hear the others:

  1. I think it is more a 3.0.0. I agree with all your arguments. It is definetely a new ground to stand upon.
  2. beta, for sure.
  3. Not really a question :D
  4. Tag line is fine for me, unless someone comes with something more creative and fun, but you certainly have a priority vote on that.

I've been thinking about that aMule release from the pace of last week work, and there is something bothering me. We still have not managed to get admin access to the organization. That limits our capabilities in some ways. I believe we are able to produce a formal release, but there are lots of configurations I cannot do, e.g. I cannot add people to the team, which clearly sucks at the moment. I also cannot create the wiki, which is too bad since we have people willing to work on that too (e.g. @frnjjq) and the aMule wiki site and forum are mostly abandoned.

So, @gonosztopi , I hope you are well, and if you are there, please give me or @Vollstrecker or @sc0w admin access so that we can go on with the work.

Regards.

@got3nks

got3nks commented May 3, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @mrjimenez for the kind words — much appreciated.

Following up on this PR with a practical question.

Acknowledging up front that the upper levels of the amule-project org administration have been quiet for a while — no responses to issues, no tag operations, no release artifacts since 2.3.3 (Feb 2021).

To be explicit, I'm not advocating for a fork in any way. aMule has 22 years of history reaching back to xMule and lMule, a recognised name, an installed user base, and a contributor lineage that's worth preserving. The whole point of the work in #510–520 (and this PR closing it out) is to ship a proper release under the original project, not to splinter off.

So the practical question for the active maintainers:

Do you have enough permissions on the amule-project org to tag a release and publish the resulting draft Release once we land this PR? Specifically:

  • Pushing a 3.0.0-beta (or whichever version label we settle on) tag to amule-project/amule:master.
  • Either letting release.yml's auto-generated draft Release stand, or publishing / editing it on the GitHub side.

If yes — great, I'll align with whatever review cadence works for you and we can move at your pace. If org-admin involvement is required for tagging or publishing and there's a path to reach them, I'll follow whatever process you suggest.

No urgency on this PR specifically — happy to wait on the 3.0.0-beta vs 2.4.0-beta RFC discussion as long as needed.

@got3nks
got3nks marked this pull request as ready for review May 3, 2026 13:40
@mrjimenez
mrjimenez merged commit 5683b88 into amule-project:master May 3, 2026
12 checks passed
@mrjimenez

Copy link
Copy Markdown
Contributor

Hi @got3nks ,

I am also not advocating a fork. I've been around for quite a while, and I know how hard it is to appear people good enough to help and add value to a project. These opportunities are rare, and should not be ignored. I see that we have one such opportunity right now, for both code and documentation.

I have just checked, and it seems that I am able to release, since the button appears to me. So from the release front, we are ok to go.

We used to have a large translator base and just before release, there used to be a general call for translators to update their work. I guess we are close to need them now, but I don't know how to call them, if they are still around.

@got3nks
got3nks deleted the pr-3.0.0-beta-changelog branch May 3, 2026 15:11
@Vollstrecker

Copy link
Copy Markdown
Collaborator

Again I'm late to the party.

I agree with the jump to 3, as it contains foundational changes. However I not that happy with calling it beta, as mayn distros tend to ignore betas, so the testing would mostly be done by users following git. My vote would be for a plain 3.0.0 and when reports appear 3.0.1 etc.

For the translators: I can try to scratch them out of the forums and from notes in the .po-files. For the ones that can be found on github I'll open an issue where they can be tagged, otherwise I'll use the email from forums to try to contact them.

For the repo ownership: If we need to fork to get more members into the team and make use of more helpful features, I wouldn't hesitate this and give the one the rights to elevate us some time. On the other hand a new release would be the right time to so, as users don't need to adjust with the 3.0 series. I would suggest something like amule-org to stay as close to the original as possible and also add gono and scow there to enable them to participate.

For the content of this PR:

  • Maybe it would be nice to have all the old contributors mentioned somewhere prominent to honour the base
  • What version is set when i.e. I use zip download for the code, where no .git dir is included?

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

A few follow-ups now that I've had a moment to digest:

-beta suffix — agreed. Will drop it from the CHANGELOG entry as a small follow-up.

Repo ownership — refining the position from my earlier comment, I'd propose a middle path that captures both concerns:

Tag and publish 3.0.0 on the current amule-project/amule repo first. Uses the existing watcher / star audience for the release announcement — anyone who clicked Watch over the years gets an automatic notification the moment we publish, plus the long tail of forum / wiki / search-engine links keeps pointing at a live release. After a 5-year lull, that "we're alive again" signal reaches a userbase that an empty fresh org wouldn't.

Then, once the release is out, fork to amule-org (or whichever name) for ongoing development with the team properly elevated. The amule-project repo and the 3.0.0 release page can include a "the project's new home is at amule-org" pointer so anyone arriving via the announcement finds the active fork. Subsequent releases (3.0.1, 3.1.0, etc.) happen on the new org. We get the audience benefit of releasing on the existing repo without permanently locking ourselves to the old org's admin situation.

@mrjimenez has confirmed he can push tags and create Releases on amule-project, so the middle path is viable from a permissions standpoint. If that aligns with your thinking too, this is what I'd propose.

Contributors prominently mentioned — making sure I'm reading you right: do you mean in the CHANGELOG entry's Contributors section, in docs/AUTHORS.md, or somewhere else (a README banner, a separate CREDITS file)? The docs/AUTHORS.md file already preserves the full lineage — xMule (2002), lMule, aMule maintainers and developers from 2003 onward, the gold members, former developers, the whole chain. None of that was touched in this PR. My current CHANGELOG entry only credits the recent 5-year cycle though, which on reflection undersells the heritage. Easiest path I see: expand the CHANGELOG's Contributors section into a short "Heritage / Lineage" subsection that explicitly links to docs/AUTHORS.md and frames the 3.0.0 release as a continuation of the xMule → lMule → aMule chain rather than as a fresh start. Happy to draft that edit — does that match your intent, or were you thinking something more prominent (e.g. a dedicated CREDITS section in the README)?

Packaging follow-up (zip download without .git) — drafted as a separate small PR: #524 (version-check: parse .git_archival.txt as fallback when .git is absent). Standard export-subst + .git_archival.txt template; CMake reads it as a fallback when .git is absent. Verified end-to-end on macOS: git archive of master tip produces a self-identifying zip whose binaries banner-print as aMule GIT ... (Snapshot: rev. 2.3.3-NNN-gXXX) — identical to a .git-present clone of the same commit. After the next release tag lands, GitHub's "Download ZIP" button on the tag will produce binaries banner-printing as aMule <tag> ... automatically, no extra step at release time. Lands cleanly on top of current master.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Quick status: the -beta drop is up as #525 — single commit, two files (CHANGELOG entry header + lead paragraph + Known Limitations section header/lead, plus two illustrative comments in packaging.yml). Ready when you have cycles.

mrjimenez pushed a commit that referenced this pull request May 4, 2026
Following PR #521's review discussion (see comments thread), dropping
the `-beta` suffix and shipping as plain `3.0.0`, with `3.0.x`
for follow-up fixes.  Vollstrecker's argument carried the day:
distros tend to ignore betas, so a beta cycle would route most
testing through users following git directly, which is the same
pool that's been involved across the development cycle anyway.
Plain `3.0.0` reaches the wider distro packagers immediately;
issues found post-release become `3.0.1` etc.

Three trivial edits, one mechanical theme:

 - `docs/CHANGELOG.md`: "Version 3.0.0-beta" → "Version 3.0.0"
   in the entry header; drop the "published as a beta to gather
   wider testing before declaring stable" sentence from the lead
   paragraph; rename the "Known Limitations (3.0.0-beta)" section
   header to plain "Known Limitations" and rework its lead from
   "This release is published as **beta**..." to a plain "Known
   caveats users should be aware of for this release:".  The
   bullet points themselves (macOS notarization, Flathub, AppImage
   launcher, libayatana-appindicator deprecation) stay — they're
   real limitations regardless of beta classification.

 - `.github/workflows/packaging.yml`: two illustrative comments in
   the post-build smoke-test step previously read "aMuleD
   3.0.0-beta ..." as their tagged-release example; updated to
   "aMuleD 3.0.0 ...".  The grep pattern (`'^aMuleD '`) accepts
   any tagged release shape unchanged; this is comment-only.
@mrjimenez

Copy link
Copy Markdown
Contributor

Since we seem to agree on the name, and it has been mentioned here, I took the liberty to create the organization before someone outside tried to do so. So amule-org is ours.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Great that you grabbed amule-org early @mrjimenez — neutralizes the squatter risk.

One coordination flag for whoever ends up tagging and releasing 3.0.0: please give me a heads-up before you push the tag. #522 wired the version-check probe to a hardcoded api.github.com/repos/amule-project/amule/releases/latest URL, so every 3.0.0 binary built today will query that repo for future releases forever. If you'd like the canonical release home to be amule-org/amule from 3.0.0 onward, we'll want to land a small URL-update commit before the 3.0.0 tag (literally one line). I'm happy to send that PR — just need to know which way you're going before the tag, since it can't be retro-fitted into 3.0.0 binaries that have already shipped.

@mrjimenez

Copy link
Copy Markdown
Contributor

@got3nks , it's your call. You tell me when to tag, I am not in a hurry, no pressure. We will do it properly and well.

Also, we need to give @Vollstrecker some time to warn translators, so @Vollstrecker , it is your call too.

I am not tagging before you both say it's ok.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Yes I’d wait @Vollstrecker to give us his ok too before we proceed. 👍

@mrjimenez

Copy link
Copy Markdown
Contributor

Oh, @got3nks , I am sorry, I see I did not answer your point.

I don't have a closed opinion on that matter (which URL should be used). Since we are going for the middle-ground solution, maybe we should leave it pointing to here, and if we start using a repo on amule-org, the next binaries would point there, but I'd like to hear @Vollstrecker and others for that.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

@mrjimenez fair point that "next binaries point elsewhere" is operationally simpler — but I want to flag a wrinkle that changes the math:

Once 3.0.0 ships, every binary in users' hands has the URL hardcoded. There's no remote-config or follow-up patch we can apply. So the choice we make for 3.0.0 specifically is permanent for that cohort:

  • If URL stays at amule-project: 3.0.0 binaries query amule-project/releases/latest forever. If the next release (3.0.1, 3.1.0, …) lives only on amule-org, those users see 3.0.0 as the latest indefinitely and never know to upgrade through the in-app version-check. They'd only find out via forum / package-manager / word-of-mouth — not via the in-app prompt that's specifically designed to nudge them.

  • The only way to keep them informed without changing the URL is to also publish each subsequent release on amule-project in addition to amule-org. That's a dual-release maintenance burden across the entire 3.0.x line, and it muddies the "we've moved" signal for casual visitors of the old repo.

  • The clean alternative is to update the URL to amule-org/amule before tagging 3.0.0. Then 3.0.0 binaries already query the new home, and future single-publish releases on amule-org automatically reach them. We can still publish 3.0.0 itself on amule-project for the existing-watcher audience — that's the middle-path I proposed earlier, and it's a separate axis from where future versions get checked from.

My position: keep the release of 3.0.0 on amule-project for visibility, but flip the version-check URL to amule-org/amule before tagging.

While I was at it I grepped for the broader picture — every amule-project reference baked into the source / docs / packaging today:

File:line Kind What it is
src/amule.cpp:642 URL version-check probe (already discussed above)
packaging/linux/flatpak/org.amule.aMule.yaml.in:335 URL Flatpak manifest's git source — load-bearing, the Flatpak builder fetches from this URL
org.amule.aMule.metainfo.xml:22 URL AppStream bug-tracker — surfaces in Flathub / GNOME Software / KDE Discover
README.md:3 image logo URL on raw.githubusercontent.com (renders in the README view)
README.md:78,94 links Issues / Pull Requests links in the README
docs/INSTALL.md:160 doc upstream issue tracker reference
docs/README.md:165 doc GitHub Issues link
src/HTTPDownload.cpp:252 comment references issue #455 (historical context — optional, can stay or get qualified)

The two CHANGELOG-history hits (amule-project.de, amule-project.net from 2003) are old domain references unrelated to the GitHub org — leaving them untouched.

Out of these, the Flatpak manifest URL is the only one that affects runtime builds (it's where flatpak-builder clones source from); the AppStream bug-tracker surfaces in OS-level software-listing UIs; the rest are doc/branding-level. None affect the running binary today, but they cumulatively determine where users' "I want to file a bug / look at the project page" attention lands.

So if we're flipping the version-check URL pre-3.0.0, the natural follow-on is one batched migration PR covering all 8 of these in lockstep. I'd propose doing that work as a single atomic "migrate references to amule-org" PR, ready to land the moment the canonical URL is settled.

Curious for @Vollstrecker's take here too — version-check URL surfaces sooner than the broader sweep but the consequence per shipped binary is irreversible.

@Vollstrecker

Copy link
Copy Markdown
Collaborator

My take is clear to point to the new org before releasing anything. One clean "Turn off the lights" commit, then release, then mirgate the codebase.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

Heads-up @mrjimenez @Vollstrecker — opened #526 (Draft) with the two-commit prep we discussed:

  1. Flip every load-bearing URL from amule-project to amule-org (version-check API, Flatpak source, AppStream bug-tracker, README/INSTALL/docs links). Lands before tagging 3.0.0 so the released binaries don't permanently query a dead-end URL.
  2. Remove all forum.amule.org / wiki.amule.org / www.amule.org / bugs.amule.org references — admins are MIA. Replaced with github.com/amule-org/amule/{discussions,issues,wiki}. Translations are URL-only swaps applied symmetrically to msgid + msgstr so no msgmerge fuzz; copyright headers and personal @amule.org emails kept as-is.

Staying in Draft until amule-org/amule is bootstrapped — the Flatpak manifest fetches sources from the new origin and Packaging CI will fail until the repo exists. Ping me when it's up and I'll flip to Ready for review.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

@mrjimenez one more low-priority ask for whenever you have a moment after bootstrapping amule-org/amule: could you also create amule-org/amule-org.github.io (org-level GitHub Pages repo, just an empty repo is enough to start)? Once it exists I can send a PR to populate it with a small landing page (homepage blurb, link to the latest release, link to the wiki / discussions / issues).

This is what https://amule-org.github.io will resolve to — and #526 commit 3 already points the default Nick, About-box "Website:" line, AppStream <url type="homepage">, and Windows resource Comments at that URL because it's much shorter and reads more naturally than the bare repo path. They'll 404 until the Pages repo exists, which is one of the things that keeps #526 in Draft.

@mrjimenez

Copy link
Copy Markdown
Contributor

amule-org/amule-org.github.io has been created.

@sc0w

sc0w commented May 4, 2026

Copy link
Copy Markdown
Member

hi all

btw, I have the rights here too, to do new releases

about new org, to avoid the same problem in the future, I think the new org must be some owners, not only one.

maybe to avoid missundersanding is better to rename aMule to other name, like aMula for example, because there is online a lot of official webs, bugtracker, forums... without our control, what do you think?

If finally the change sucess, to avoid more contributions here, maybe we need one commit to remove everything with only one readme file which explains the migration here

about the name, maybe sound better thename-dev instead -org :)

@mrjimenez

Copy link
Copy Markdown
Contributor

Hi @sc0w ,

Hum, sorry, things went very fast, the org was created this morning because the name was mentioned explicitly and I was affraid someone took the name just for fun.

Btw, you have an invitation.

@got3nks , notice that you can change anything you want in the site, I just created it with a dark theme so that my monitor and eyes don't burn.

@got3nks

got3nks commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

I don’t agree with changing the app name. We’re not forking — we’re continuing the work of the previous developers and maintainers. We’re only forced to use a new repo because all the admins are MIA, and we could switch back here if any of them reappear.

I’d suggest a transition period where people can still download the upcoming v3.0.0 from this repo. Eventually, yes, this repo could become just a redirect to the new repo URL.

amule-dev instead of amule-org could be nice, but we’ve already started some work under the amule-org name. That said, it’s still open for discussion based on your preferences.

@sc0w

sc0w commented May 4, 2026

Copy link
Copy Markdown
Member

I don’t agree with changing the app name. We’re not forking — we’re continuing the work of the previous developers and maintainers. We’re only forced to use a new repo because all the admins are MIA, and we could switch back here if any of them reappear.

ok, it makes sense :)

amule-dev instead of amule-org could be nice, but we’ve already started some work under the amule-org name. That said, it’s still open for discussion based on your preferences.

I said -dev instead -org, because... amule-org sounds like the web www.amule.org which we dont have write access...

We can change it, but as soon as possible if all of us are agree, there is a button to do the job, in settings of organization, at the bottom, in danger zone: "rename organization"

and in the name... aMule development :)

@got3nks

got3nks commented May 5, 2026

Copy link
Copy Markdown
Contributor Author

I agree with @sc0w amule-org could be misleading because we have no access to amule.org, but the same applies to amule.dev (which points to nothing at the moment though)

Will wait for comments from @Vollstrecker and @mrjimenez

@Vollstrecker

Copy link
Copy Markdown
Collaborator

I've put amule-org on the table because it's near to the old homepage to signalize it's still the same.

First thought about -dev: Sounds a bit like always beta.

Overall, as long as it's still amule I have no hard feelings about the naming.

@got3nks

got3nks commented May 5, 2026

Copy link
Copy Markdown
Contributor Author

Settling on a name — three reasons I'd argue for sticking with amule-org:

  1. Domain ownership is a wash. We control neither amule.org (dead, admins MIA) nor amule.dev (currently nothing). So neither -org nor -dev has a real domain advantage. The "could be confused with the website" concern applies symmetrically to both — anyone landing at amule.dev from a URL bar would also be confused not to find us there.

  2. amule-org signals continuity with the heritage. As @Vollstrecker put it: it's "near to the old homepage to signalize it's still the same." We're not forking — we're continuing the existing project. The org name reads as "the project formerly known as amule.org," which is exactly what we are. amule-dev would imply a clean slate, which we explicitly aren't.

  3. -dev reads as WIP. Vollstrecker's "sounds a bit like always beta" is, I think, the strongest argument against. End users reading "amule-dev" in their About box, AppStream homepage URL, default nick, etc. would reasonably wonder if this is a stable project or a development branch. We're shipping 3.0.0 as a stable release; the org name shouldn't suggest otherwise.

Worth noting: PR #526 already wires ~200 files at amule-org — but that's recoverable, a sed sweep + force-push if we settle on a different name. So the existing work isn't a blocker, just a small re-do cost. The naming question should be decided on its own merits.

@sc0w

sc0w commented May 5, 2026

Copy link
Copy Markdown
Member

ok, lets keep amule-org, sorry for the noise, and long life for aMule!

mrjimenez pushed a commit that referenced this pull request May 5, 2026
Following the org-migration discussion on PR #521, point all source /
docs / packaging URLs at the new `amule-org` GitHub org that
@mrjimenez bootstrapped on 2026-05-04.

Two motivating reasons (per the thread):

1. The new active maintainer team needs proper write/admin access
   that the existing amule-project upper-level admins have been
   unreachable to grant.

2. The version-check probe added in #522 hardcodes its target URL
   into every shipped binary.  If that URL stays at amule-project
   while future releases land on amule-org, the cohort of users on
   3.0.0 will be permanently stranded querying a dead-end endpoint
   and never learn about 3.0.1+ via the in-app prompt.  Flipping
   the URL pre-3.0.0-tag is the only way to keep them informed
   without dual-publishing maintenance burden.

Seven references updated in lockstep:

- `src/amule.cpp` — version-check probe URL.
- `packaging/linux/flatpak/org.amule.aMule.yaml.in` — Flatpak
  manifest's git source URL (load-bearing — `flatpak-builder`
  clones from this URL at build time).
- `org.amule.aMule.metainfo.xml` — AppStream bug-tracker URL,
  surfaces in Flathub / GNOME Software / KDE Discover.
- `README.md` — logo image URL on raw.githubusercontent.com plus
  the Issues and Pull Requests link references.
- `docs/INSTALL.md` — upstream-issue-tracker doc reference.
- `docs/README.md` — GitHub Issues doc reference.

Left as-is:

- `src/HTTPDownload.cpp:252` — code comment referencing issue
  `#455` for historical context.  The issue
  itself stays at amule-project regardless of where future
  development happens; the comment is a citation, not a forward
  reference.
- The `amule-project.de` / `amule-project.net` mentions in
  `docs/CHANGELOG.md` 2003-era entries — those are old DNS
  domain references unrelated to the GitHub org.

Note: this commit assumes `amule-org/amule` will exist as a real
repo by the time this PR merges.  The org was created 2026-05-04
with zero repos; the Flatpak build URL change in particular will
fail the Packaging workflow until the repo is bootstrapped.
@got3nks

got3nks commented May 5, 2026

Copy link
Copy Markdown
Contributor Author

3.0.0 ready for tag and release.

Where we are:

  • migrate URL references to amule-org and remove dead amule.org website refs #526 merged to amule-project:master — version-check probe, Flatpak source URL, AppStream bug-tracker, README badges/links, default Nick, About-box "Website:" / "Forum:" / "FAQ:" / "Contact:" lines, and ~200 translatable strings + manpages all updated. Wiki sub-page slugs aligned with the GitHub-actual page names.
  • amule-org/amule:master mirrored from amule-project:master (both at b71935541).
  • amule-org/amule-org.github.io is live (replaces the placeholder).
  • CI on amule-org/amule:master post-mirror: I18n CI ✓, C/C++ CI ✓, Packaging ✓ — 9/9 artifacts produced in run 25374304850 (AppImage x86_64 + aarch64, Flatpak x86_64 + aarch64, macOS Universal2 .dmg, macOS .app x86_64 + arm64, Windows portable .zip x64 + ARM64). Flatpak especially — the new origin URL (migrate URL references to amule-org and remove dead amule.org website refs #526 commit 1) is reachable and the manifest builds clean.
  • Wiki: 13/13 inbound-link pages bootstrapped on amule-org/amule/wiki (Backtraces, Get-HighID, Firewall, FAQ-aMule, FAQ_eD2k‐Kademlia, Amuled, Amulecmd, AMuleWeb, Amulesig.dat-file, Onlinesig.dat-file, Translations, Translating-Wiki, Translating-Docs).

Translator outreach — non-blocker for 3.0.0

Quantified what landed: 43 new msgids total over the whole 3.0.0 cycle (1624 → 1651 in po/amule.pot, net +27 with old ones retired). For a 5-year cycle that's a small enough surface that translator coordination doesn't need to gate the tag — anything not refreshed before tag will fall back to msgid (English) at runtime, and we can land translation updates as 3.0.1 patch material on rolling basis. Sample of what's new: AppImage first-run prompt strings ("Install", "Don't ask again", "Add aMule to your application menu?"), MaxMindDB-related strings, Kad parallel-search strings, the new HTTP error path, the EC tag validation messages, the GitHub-replacement URL strings already updated in #526. Translator @-mentions / forum reachout can happen post-tag without disadvantage.

@Vollstrecker — happy to defer to your judgement here, but flagging this so it's not blocking on outreach if you'd rather move forward.

Dual-release plan for 3.0.0 (middle path we agreed on)

Per the thread consensus — and to maximize reach for the "we're alive again" announcement to the existing amule-project watcher / star audience while keeping the release also discoverable on the new home:

  1. Tag 3.0.0 on both amule-project/amule:master and amule-org/amule:master (same commit, b71935541). Both repos will fire release.yml and produce identical artifacts.
  2. Publish a Release on both repos — same body, same attached artifacts. People watching amule-project get notified through their existing subscriptions; people landing on amule-org see the release on its canonical home.
  3. From 3.0.1 onward, releases only on amule-org/amule. The version-check probe in 3.0.0 binaries already points at amule-org/amule/releases/latest (migrate URL references to amule-org and remove dead amule.org website refs #526 commit 1), so dual-published 3.0.0 cohorts will naturally migrate to single-publish on the new home for all subsequent updates.

I'll send a small follow-up commit / PR adding a "the project's new home is at amule-org" pointer to amule-project/amule's README right after the dual-tag, so anyone arriving via the announcement on the old repo finds the active home cleanly.

@mrjimenez — happy to coordinate the actual tag + release with you (you mentioned upthread the Release button is visible to you; sc0w confirmed similar permissions). Just let me know how you'd like to proceed.

@mrjimenez

Copy link
Copy Markdown
Contributor

Ok, let's wait for @Vollstrecker take on translations, if the agrees, we make a step-by-step here so that I don't screw things up :D

If I understand it correctly, both repos are sync'd and we just have to tag both with the proper name, right?

@got3nks

got3nks commented May 5, 2026

Copy link
Copy Markdown
Contributor Author

Yes, exactly that — both repos are sync'd at b71935541, and tagging is the entire procedure on your side. release.yml does everything else.

Step-by-step:

  1. Push tag 3.0.0 to amule-project/amule at commit b71935541.

  2. Push tag 3.0.0 to amule-org/amule at commit b71935541 (same commit).

  3. release.yml fires on each repo automatically — packaging matrix runs (same 9 artifacts you saw in run 25374304850 for amule-org), then a draft Release lands at <repo>/releases with all 9 assets attached and --generate-notes filled in from PR titles since the previous tag.

  4. Review each draft — auto-generated notes are usually a fine starting point but you'll likely want to replace them with the curated 3.0.0 — "alive again" section from docs/CHANGELOG.md since that's the proper retrospective. Confirm the 9 assets are all present.

  5. amule-project draft only — add a banner at the top of the release body marking this as the last release on amule-project/amule and linking to the new home (amule-org/amule). Suggested wording:

    Last release on amule-project/amule. Active development continues at github.com/amule-org/amule. Future releases (3.0.1, 3.1.0, …) will be published only on the new home; in-app version-check in the 3.0.0 binaries already points there, so users will be notified of updates regardless of which repo they downloaded from.

  6. Click Publish on each.

Order doesn't matter; you can push both tags in succession. If anything looks off, release.yml supports workflow_dispatch with the tag name as input — re-runs the asset assembly without re-tagging.

Concrete commands (assuming you have the repos cloned with both remotes):

git tag -a 3.0.0 b71935541 -m "aMule 3.0.0 — alive again"
git push <amule-project-remote> 3.0.0
git push <amule-org-remote>     3.0.0

Plain 3.0.0 (no hyphen suffix) is detected as a full release, not a pre-release — so the Latest badge will land where we want it. If you want the same tag object on both, push the same annotated tag to both remotes; if you'd rather have two independent annotated tags with separate authorship metadata, create them separately. Either works; the artifacts and version banners come out identical because both point at the same commit.

@eyalroz

eyalroz commented May 10, 2026

Copy link
Copy Markdown

Personally, I believe in a "non-commital" beta or alpha release before fanfare announcements, so I'm wondering why there is nothing like that on the Releases pages already. But, regardless - is there a timeline for an upcoming release?

@frnjjq

frnjjq commented May 18, 2026

Copy link
Copy Markdown
Contributor

Hello.

First and most important thanks to you all. This release is amazing, I am so impressed with the work done. The changes have been major, and many bugs could arise I think a beta is the way to go.

I agree with the movement to a new org and the "no fork" just a name change to be able to continue the project. I will contribute in the new org with presence and wiki content.

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

Successfully merging this pull request may close these issues.

6 participants