Skip to content

Adopt the template for applications #556

Open
2 of 3 issues completed
Open

Description

@hombit

Currently, the template is really focused on libraries, not on end-user software, such as ML or data analysis pipelines, web portals, scripts, etc. Researchers are more frequently starting a new end-user project than a library.

There are usually different expectations from end-user software than from a library: the environment should be reproducible, e.g., require some sort of a lock file; package data setup may be required; Dockerfile or entry points usually should be set up. I think the next "big thing" for PPT may be support for projects like that, while we can use in-house end-user projects to test it, e.g., hyrax (which, of course, is a library, but also a user-level script), hats-import scripts, "cone search v2.0", and individual team members' projects (I'd be happy to test it with uncle-val).

I propose to use uv for the lock file and tooling support, which makes it easy to manage virtual environments and gives a consistent way of running Python tools and commands via, e.g., uv run pytest and uv run python -m my-module.

Activity

  1. mtauraso commented on Dec 10, 2025

    @mtauraso
    Member

    @hombit

    Not quite "application" but for web services on rubin infrastructure there is a golden path to creating an app, which starts with some documentation here: https://phalanx.lsst.io/developers/create-an-application.html

    I believe on the backend it uses this template: https://github.com/lsst/templates/tree/main/project_templates/fastapi_safir_app Additional documentation here: https://safir.lsst.io/

    Safir is a python library that LSST publishes to make certain common service operations easy from a python service, and the template for a new service is simply packaged within the Safir package.

    It is of course possible to package and run an app on Rubin's phalanx service layer without using the template or Safir library. Similar to ppt these are simply encoding a set of best-practices that make life simpler if you are writing a service in python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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