FilOzone / FilOzone/filecoin-cloud

Fork @filecoin-foundation/ui-filecoin into a new FilOzone repo to remove dependency on the FF monorepo

Open
#338 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.