FilOzone / FilOzone/filecoin-cloud
Fork @filecoin-foundation/ui-filecoin into a new FilOzone repo to remove dependency on the FF monorepo
- Dominant language
- TypeScript
- Stars
- 4
- Forks
- 10
- Avg merge
- 1h 1m
- Merged PRs (30d)
- 1
Description
### Background
`filecoin.cloud` depends on **`@filecoin-foundation/ui-filecoin`** (`^0.9.0`), a React component library that lives inside the Filecoin Foundation monorepo at [FilecoinFoundationWeb/filecoin-foundation](https://github.com/FilecoinFoundationWeb/filecoin-foundation). That monorepo also houses FF's public marketing sites (fil.org, ffdweb.org, uxit.fil.org), so the library is bundled together with unrelated website content.
Two structural problems have emerged:
1. **No maintainers.** The FF UXIT team was wound down ~1–2 months ago and FF has no front-end engineers on staff. Per Gary (FF), IT ownership fell to Baldemar Loza, who isn't a UI/frontend engineer. The FF monorepo's CI has been failing for several months.
2. **Releases are bottlenecked by unrelated content.** Because the library shares a repo + build/deploy pipeline with the public sites, an unrelated failure (e.g. a markdown syntax error on an FF marketing page) can block shipping a library fix that FOC needs.
This came to a head with #319 (prerelease Curio versions mis-rendered in the SP list). The fix required a change in the FF library ([PR #2337](https://github.com/FilecoinFoundationWeb/filecoin-foundation/pull/2337)), and getting that merged required two *additional, unrelated* PRs ([#2343](https://github.com/FilecoinFoundationWeb/filecoin-foundation/pull/2343), [#2344](https://github.com/FilecoinFoundationWeb/filecoin-foundation/pull/2344)) just to unblock the monorepo. Discussion: [Slack thread](https://filecoinproject.slack.com/archives/C08TVNKJV7C/p1781282403849339), [analysis gist](https://gist.github.com/BigLep/674988d2b3879b662654dc6dc01fa5fc). Reaffirmed as a decision in the FOC WBR/ORR (Jun 17).
### How deeply we depend on it
The dependency is **pervasive**. In `filecoin-cloud` (current `main`):
- **60 files** with **135 import statements** from `@filecoin-foundation/ui-filecoin`.
- ~50 distinct entry points used, spanning primitives and app-level systems:
- Primitives: `Button`, `Card`/`CardGrid`/`SimpleCard`/`LinkCard`, `Badge`, `Heading`, `Icon`/`IconButton`, `Container`, `Input`, `Checkbox`, `PageHeader`, `PageSection`, `SectionContent`, `Search`/`SearchInput`, `SlideOver`, `TextLink/*`, `CTALink`, `ButtonRow`, `FilterButton`.
- Systems/wrappers: `Navigation/*` (menu, mobile nav, links, hooks), `Footer/LegalSection`, `Network/*` (`NetworkSelector`, `useNetwork`), `Table/*` (`TanstackTable`, `CompactAddress`, `ID`, `SoftwareVersion`, `YesNoStatus`), `Markdown/*`, state cards (`EmptyStateCard`, `LoadingStateCard`, `ErrorStateCard`), `LogoSection/*`, `Section`.
- Global wiring: `src/styles/globals.css` does `@import "@filecoin-foundation/ui-filecoin/styles"`, and `src/components/SiteLayout.tsx` calls `setUIConfig(...)`.
[filecoin-pay-explorer](https://github.com/FilOzone/filecoin-pay-explorer) depends on it just as heavily (~40+ imports in `apps/explorer/`, plus `@import ".../styles"` in `globals.css` and a documented convention to build on `ui-filecoin` primitives). [pdp-explorer](https://github.com/FilOzone/pdp-explorer) does **not** use it.
So this isn't a leaf dependency — the design system, navigation, network selector, and table infrastructure all come from it, across two FOC apps.
### Decision: fork into a new FilOzone repo
Three paths were floated (see gist):
1. FF gets maintainers for the monorepo.
2. FF extracts the library into its own repo and FOC WG co-maintains it.
3. **FOC forks the library.**
Given FF has no maintainers and no near-term plan, we'll proceed with **forking `ui-filecoin` into a new standalone repo in the FilOzone org**, published as a package that both `filecoin-cloud` and `filecoin-pay-explorer` depend on. A dedicated repo (rather than inlining into `filecoin-cloud`) avoids forking twice and gives both consumers a single source of truth. (Options 1/2 remain preferable if FF engages — Steve is raising it with FF leadership; this fork is the defensive path forward.)
### Tasks
- [x] Confirm with FF (Gary / Baldemar Loza) that there's no library maintainer and no objection to forking. *(Steve)*
- [ ] Create the new repo in the FilOzone org (name TBD — e.g. `ui-filecoin` / `foc-ui`) and seed it from the current `@filecoin-foundation/ui-filecoin` source.
- [ ] PR a notice ini FilecoinFoundationWeb/filecoin-foundation about the forked library so in case anyone engages with maintaining it in the FF repo, they become aware of the work that has happened in the fork.
- [ ] Decide publishing: npm package under a FilOzone-controlled scope vs. consumed directly.
- [ ] Migrate `filecoin-cloud` to the forked package (60 files / 135 imports; includes `styles`, `setUIConfig`, `useNetwork`/`NetworkSelector` global wiring).
- [ ] Migrate `filecoin-pay-explorer` (`apps/explorer/`) to the forked package.
- [ ] Name an owner/maintainer for the forked library (UXIT — Mirha, Charly, Barbara — did the original integration and are gone).
- [ ] Decide whether to carry the in-flight #319 fix ([FF PR #2337](https://github.com/FilecoinFoundationWeb/filecoin-foundation/pull/2337)) into the fork.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the current @filecoin-foundation/ui-filecoin dependency and its source, then inspect filecoin-cloud's 60 importing files, src/styles/globals.css, and src/components/SiteLayout.tsx. Compare those consumers with apps/explorer/ and globals.css in filecoin-pay-explorer. Done means a standalone FilOzone package exists, both applications use it, the fork notice is posted, and ownership and publishing decisions are recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, typescript
- Domain
- developer-experience, frontend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100