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

Aperta
#338 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
react, typescript

Direzione di ricerca

Inizia esaminando la dipendenza attuale @filecoin-foundation/ui-filecoin e il relativo codice sorgente, quindi ispeziona i 60 file che la importano in filecoin-cloud, src/styles/globals.css e src/components/SiteLayout.tsx. Confronta questi consumer con apps/explorer/ e globals.css in filecoin-pay-explorer. Il lavoro è completato quando esiste un package FilOzone autonomo, entrambe le applicazioni lo utilizzano, l’avviso relativo al fork è stato pubblicato e le decisioni su ownership e pubblicazione sono state registrate.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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. 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), and getting that merged required two additional, unrelated PRs (#2343, #2344) just to unblock the monorepo. Discussion: Slack thread, analysis gist. 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 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 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
  • 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) into the fork.
Lingua principale
TypeScript
Stelle
4
Fork
10
Merge medio
4h 10m
PR unite (30g)
13

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di FilOzone/filecoin-cloud

Tutte le issue di FilOzone/filecoin-cloud

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.