Skip to content

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

Description

@BigLep

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 Prerelease Curio versions (e.g. 1.28.2-rc1) are hidden from the Service Providers list and mis-rendered #319 fix (FF PR #2337) into the fork.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    🐱 Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions