{% extends "public_base.html" %} {% import "marketplace/_macros.html" as mk %} {% block title %}{{ _("Publish your feature") }}{% endblock %} {% block hero %}

{{ _("Publish your feature") }}

{{ _("There is no upload button, and that is the point. Releasing a tag in your own repository is publishing, and the marketplace index is rebuilt from your feature's contract.") }}

{% endblock %} {% block content %}
  1. 1

    {{ mk.icon("package") }}{{ _("Build your feature") }}

    {{ _("Scaffold it in your SPLENT workspace. The contract (what it provides and what it requires) is inferred from the code and kept in the feature's own pyproject.toml. You never write index data by hand.") }}

    $ splent feature:create my_feature
  2. 2

    {{ mk.icon("tag") }}{{ _("Release it") }}

    {{ _("One command bumps the version, regenerates the contract, tags the repository and uploads to PyPI. The Git tag IS the publication. There is no separate submission step.") }}

    $ splent feature:release
  3. 3

    {{ mk.icon("git-branch") }}{{ _("Get listed") }}

    {{ _("Open a pull request adding your organisation or repository on %(forge)s to the registry file of the index. Once reviewed and merged, the indexer reads your released tags. You never push data into the marketplace.", forge=forge) }}

    {{ _("registry.toml in %(repository)s", repository=registry_label) }}{{ mk.trailing_icon("external-link") }}

  4. 4

    {{ mk.icon("check-circle") }}{{ _("You are in") }}

    {{ _("The index rebuilds automatically from the latest released tags. Your feature appears here with its contract, dependencies and collisions. To fix or update anything, just release again.") }}

    {{ _("Browse the catalog") }}{{ mk.trailing_icon("arrow-right") }}

{# A product line is the one thing published through the marketplace rather than read from a tag: the marketplace holds the UVLHub key and mints the DOI, so it needs an account. #}

{{ mk.icon("layers") }}{{ _("Publish a product line") }}

{{ _("A product line is a UVL model over published features. It goes through this marketplace, which deposits the model on UVLHub and records its DOI, so you need an account here. Sign in once from the CLI, then publish the line from your workspace.") }}

  • $ splent login
  • $ splent spl:publish my_spl

{{ _("Publishing the line again records a new version under the same DOI. You never hold a UVLHub key.") }}

{% if account_url %}{% if account_is_signup %}{{ _("Create an account") }}{% else %}{{ _("Log in") }}{% endif %}{{ mk.trailing_icon("arrow-right") }}{% endif %} {{ _("See the product lines") }}{{ mk.trailing_icon("arrow-right") }}

{% endblock %}