Skip to content

A fresh start for the extension directory #203

Description

@yagiz-dev

We should scrap the existing version of the directory, rebuild it from scratch using PHP, and begin automating processes.

Additionally, I believe we should move to a push-based model, where extension maintainers submit new versions directly to the directory instead of relying on GitHub release pulls.

  • Managing release histories and artifacts ourselves would ensure they remain immutable and tamper-proof once added to the directory.
  • We could allow maintainers to connect their CI/CD pipelines via actions so new versions can be automatically pushed upon tagging a release.
  • We could have a version validation pipeline. When an extension is pushed, the directory should:
    • Validate metadata (manifest.json, license, compatibility, etc.)
    • Run automated tests or linting
    • Perform a security scan for known vulnerabilities

We also should improve the integration within the FOSSBilling core:

  • Auto-update integration: FOSSBilling installations should check for and install updates directly from the new directory.
  • Allow all types of extensions, not just modules and payment gateways.

Additional features:

  • A unified web interface for developers and FOSSBilling maintainers to manage extensions, view validation results, and monitor performance.
  • Webhook notifications for new submissions, validation outcomes, and update approvals.
  • Signing extensions to verify authenticity and ensure release integrity.
  • Public metrics: Display download counts, update frequency, and release activity to improve transparency.
  • Opt-in telemetry: Allow FOSSBilling instances to anonymously report active installation counts per extension, helping maintainers track real-world usage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions