Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ One project per pull request. Use the exact entry format from [CONTRIBUTING.md](

- Keep the description factual and specific; describe what the project *does*, not marketing copy.
- Match the description to the repository you link — do not describe a sibling repo (a common mistake when a project spans a CLI, a web app, and a library).
- Place the entry in the section that fits its primary purpose. Current sections: **Nodes**, **Libraries**, **CI/CD**, **UI**, **Tools**, **Smart Contracts**, **Documentation**, **Community / Ecosystem**, **Miscellaneous**, and **Archived or dormant** (see below).
- Place the entry in the section that fits its primary purpose. Current sections: **Nodes**, **Libraries**, **CI/CD**, **UI**, **Tools**, **Smart Contracts**, **Documentation**, **Community / Ecosystem**, and **Miscellaneous**. Unmaintained or archived projects are not listed in these sections — they live in the separate [archived.md](archived.md) file (see below).

## Self-verification checklist (run this before opening the PR)

Expand All @@ -39,26 +39,26 @@ An agent should confirm each of these itself — do not rely on the maintainer t
- and check the project is not already in `README.md`.
2. **Repository is public, not archived, and licensed:**
- `gh api repos/<owner>/<repo> --jq '{private, archived, license: .license.spdx_id, pushed_at}'`
- Skip it if `private` is true or `license` is null. If `archived` is true, it belongs in *Archived or dormant*, not a main section.
- Skip it if `private` is true or `license` is null. If `archived` is true, it belongs in [archived.md](archived.md), not in `README.md` at all.
3. **The link resolves** (HTTP 200), and any homepage/docs links you add resolve too.
4. **The description is accurate and current**, under 160 characters, sentence case, one sentence.
5. **One item, one PR.**

## Maintenance & staleness policy — the "Archived or dormant" section
## Maintenance & staleness policy — the [archived.md](archived.md) file

Projects that stop seeing activity are **moved to an `Archived or dormant` section rather than deleted**. This keeps still-useful code and ideas discoverable, and an entry can move back into the main sections if development resumes. The section is organised into:
Projects that stop seeing activity are **moved to the separate [archived.md](archived.md) file rather than deleted**. This keeps still-useful code and ideas discoverable, and an entry can move back into the main list if development resumes. It is a separate file — not a section of `README.md` — because the [Awesome](https://github.com/sindresorhus/awesome) guidelines ask that unmaintained, archived, or deprecated items be kept out of the main list. The file is organised into:

- **Archived by their maintainers** — the repository itself is archived on GitHub.
- **No activity for 2+ years** — long-dormant but not archived.
- **Dormant (~1.5–2 years)** — quiet, worth watching.

If you are adding a project, it should go in a main section only if it is genuinely maintained. Be honest about this.
If you are adding a project, it should go in `README.md` only if it is genuinely maintained. Be honest about this.

## How maintainers review and audit the list

For transparency — and so agents can self-assess against the same bar — this is the periodic audit the list is checked against:

- **Activity & archival:** each GitHub entry is checked via the API for `pushed_at` (last activity) and `archived`. Recent activity keeps it in a main section; archived or long-dormant entries are relocated to *Archived or dormant*.
- **Activity & archival:** each GitHub entry is checked via the API for `pushed_at` (last activity) and `archived`. Recent activity keeps it in `README.md`; archived or long-dormant entries are relocated to [archived.md](archived.md).
- **Link liveness:** every URL (repositories, websites, PDFs) is checked for a live response; dead links are fixed or removed.
- **Description accuracy:** each description is checked against what the project actually is and does — including that the link and the description refer to the *same* repository.
- **Relevance:** the project must still be about Swarm and sit in the right section.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Our goal is to have a community-driven list of projects that showcase the capabi
Below are a few guidelines on how to submit a pull request and get accepted quickly.

- Submit one item per pull request
- When a project stops seeing activity, we first move it to the **Archived or dormant** section rather than deleting it — a gentle middle ground that keeps still-useful code and ideas discoverable. Entries there can move back up if development resumes, and only long-abandoned ones are eventually removed altogether
- When a project stops seeing activity, we first move it to [archived.md](archived.md) rather than deleting it — a gentle middle ground that keeps still-useful code and ideas discoverable. Entries there can move back into the main list if development resumes, and only long-abandoned ones are eventually removed altogether. It is a separate file (not a section of this list) because the [Awesome](https://github.com/sindresorhus/awesome) guidelines ask that unmaintained or archived items be kept out of the main list
- Project is related to Bee or Swarm. We do not list _forks_ of Swarm or tooling built for them
- Format: `[Name](https://github.com/<source-code>) - Short description, under 160 characters, sentence case`
- Must be [Free software](https://en.wikipedia.org/wiki/Free_software) and have the complying LICENSE properly set up
31 changes: 2 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to create your submission.
- [Documentation](#documentation)
- [Community / Ecosystem](#community--ecosystem)
- [Miscellaneous](#miscellaneous)
- [Archived or dormant](#archived-or-dormant)

## Nodes

Expand Down Expand Up @@ -140,32 +139,6 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to create your submission.

*As with all LLMs, DeepWiki may sometimes be confidently wrong. Make sure to always double check (either by inspecting the code yourself, or confirming with a Bee team core developer) before assuming its answers are correct.*

## Archived or dormant
## Footnotes

Projects that are no longer actively maintained. They are kept here — rather than removed outright — because the code and ideas can still be useful for reference, forks, or inspiration. An entry moves back up into the main sections if development resumes.

### Archived by their maintainers

[Etherjot](https://github.com/ethersphere/etherjot) - Archived CLI for importing Hugo and Jekyll blogs onto Swarm; its [web app](https://github.com/ethersphere/etherjot-web) and core library [Libetherjot](https://github.com/ethersphere/libetherjot) are archived too.

[Swarm Bot](https://github.com/ethersphere/swarm-bot) - Discord bot handling commands related to Swarm and its community.

### No activity for 2+ years

[Swarm Extension](https://github.com/ethersphere/swarm-extension) - Browser extension that adds Swarm support and injects the Bee library into the browser.

[Swarm CID Converter](https://github.com/agazso/swarm-cid-converter) - Convert Swarm hashes or links to CID and vice versa.

[Bee-AFS](https://github.com/aloknerurkar/bee-afs) - FUSE filesystem for Bee.

[SwarmNFT library](https://github.com/igar1991/SwarmNFT) - JavaScript library for creating NFTs on Ethereum-compatible blockchains and storing content on Swarm.

[videoNFT](https://github.com/pblvrt/videoNFT) - NFT live streaming with Swarm (winner of EthBerlin3 2022 Freedom to Transact Track).

### Dormant (~1.5–2 years)

[Mantaray-py](https://github.com/Ankvik-Tech-Labs/mantaray-py) - Allows you to manipulate and interpret mantaray data via MantarayNode and MantarayFork abstractions.

[DeBoot](https://github.com/debootdevs/deboot) - Research and implementation of approaches to bootloading OS images from a decentralized storage network such as Swarm or IPFS.

[Mipasa Swarm Connector](https://github.com/MiPasa/mipasa-swarm-connector) - MiPasa connector for Swarm (BZZ) distributed storage network.
Projects that are no longer actively maintained are kept in [archived.md](archived.md) — archived, long-dormant, and quiet entries retained for reference rather than listed above.
37 changes: 37 additions & 0 deletions archived.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Archived & dormant Swarm projects

Projects that are no longer actively maintained. They are kept here — rather than removed outright — because the code and ideas can still be useful for reference, forks, or inspiration. An entry moves back into the [main list](README.md) if development resumes.

These live in a separate file because the [Awesome](https://github.com/sindresorhus/awesome) guidelines ask that unmaintained, archived, or deprecated items be kept out of the main list.

## Archived by their maintainers

The repository itself is archived on GitHub.

[Etherjot](https://github.com/ethersphere/etherjot) - Archived CLI for importing Hugo and Jekyll blogs onto Swarm; its [web app](https://github.com/ethersphere/etherjot-web) and core library [Libetherjot](https://github.com/ethersphere/libetherjot) are archived too.

[Swarm Bot](https://github.com/ethersphere/swarm-bot) - Discord bot handling commands related to Swarm and its community.

## No activity for 2+ years

Long-dormant but not archived.

[Swarm Extension](https://github.com/ethersphere/swarm-extension) - Browser extension that adds Swarm support and injects the Bee library into the browser.

[Swarm CID Converter](https://github.com/agazso/swarm-cid-converter) - Convert Swarm hashes or links to CID and vice versa.

[Bee-AFS](https://github.com/aloknerurkar/bee-afs) - FUSE filesystem for Bee.

[SwarmNFT library](https://github.com/igar1991/SwarmNFT) - JavaScript library for creating NFTs on Ethereum-compatible blockchains and storing content on Swarm.

[videoNFT](https://github.com/pblvrt/videoNFT) - NFT live streaming with Swarm (winner of EthBerlin3 2022 Freedom to Transact Track).

## Dormant (~1.5–2 years)

Quiet, worth watching.

[Mantaray-py](https://github.com/Ankvik-Tech-Labs/mantaray-py) - Allows you to manipulate and interpret mantaray data via MantarayNode and MantarayFork abstractions.

[DeBoot](https://github.com/debootdevs/deboot) - Research and implementation of approaches to bootloading OS images from a decentralized storage network such as Swarm or IPFS.

[Mipasa Swarm Connector](https://github.com/MiPasa/mipasa-swarm-connector) - MiPasa connector for Swarm (BZZ) distributed storage network.
25 changes: 10 additions & 15 deletions scripts/check-archived.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#!/usr/bin/env python3
"""Flag GitHub repositories that are archived but still listed in a live section.
"""Flag GitHub repositories that are archived but still listed in the main list.

Repositories under the "Archived or dormant" section are expected to be archived,
so they are skipped. Any archived repo found in another section is reported as an
error (with a GitHub Actions annotation) and makes the job fail.
Unmaintained and archived projects belong in `archived.md`, not in `README.md`
(the Awesome guidelines ask that such items be kept out of the main list). Any
archived repo found in `README.md` is reported as an error (with a GitHub Actions
annotation) and makes the job fail; entries in `archived.md` are not checked, as
they are expected to be archived or dormant.
"""
import json
import os
Expand All @@ -13,7 +15,6 @@
import urllib.request

README = "README.md"
ARCHIVE_SECTIONS = {"Archived or dormant"}
LINK_RE = re.compile(r"https://github\.com/([A-Za-z0-9_.-]+)/([A-Za-z0-9_.-]+)")

token = os.environ.get("GITHUB_TOKEN")
Expand All @@ -35,16 +36,10 @@ def api_archived(slug):


def collect_live_repos():
"""Map 'owner/repo' -> line number, for repos in non-archive sections."""
"""Map 'owner/repo' -> line number, for every repo linked in README.md."""
live = {}
in_archive = False
with open(README, encoding="utf-8") as handle:
for lineno, line in enumerate(handle, 1):
if line.startswith("## "):
in_archive = line[3:].strip() in ARCHIVE_SECTIONS
continue
if in_archive:
continue
for owner, repo in LINK_RE.findall(line):
slug = f"{owner}/{repo.rstrip('/')}"
live.setdefault(slug, lineno)
Expand All @@ -62,15 +57,15 @@ def main():
problems.append(slug)
print(
f"::error file={README},line={lineno}::{slug} is archived on GitHub "
f'but listed in a live section — move it to "Archived or dormant"'
f"but listed in README.md — move it to archived.md"
)
else:
print(f"ok: {slug}")

if problems:
print(f"\n{len(problems)} archived repo(s) found in live sections.")
print(f"\n{len(problems)} archived repo(s) found in README.md.")
return 1
print("\nNo archived repos in live sections.")
print("\nNo archived repos in README.md.")
return 0


Expand Down
Loading