Skip to content

Conversation

@natelust
Copy link
Contributor

@natelust natelust commented Oct 6, 2025

This is a first draft of the proposed rust developer guide. All comments and improvement welcome.

Copy link
Member

@TallJimbo TallJimbo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two big-picture comments (some echoed in various line-comments):

  • I think you need to mention rubinoxide up front concretely and organize the discussion around that; only talking about organizing code in a purely abstract sense makes the actual guidelines a lot harder to follow.
  • There are a lot of start-of-section sentences here that just sound like software platitudes. I understand wanting to have some sort of introductory text for each section, but I think the audience (who is likely reading it as fast as they can so they can get back to writing code) will appreciate it if you just dive right in.

@natelust natelust force-pushed the tickets/DM-52152 branch 3 times, most recently from 4955daf to 13c40dc Compare December 8, 2025 22:02
Copy link

@nealmcb nealmcb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note a few typos

4. Code Organization
--------------------

Unlike the package-centric organization often seen in Python, packages containing rust code should me monolithic and not depend on other lsst packages.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: Should "be" monolithic

The de-facto location, and reference implementation, of rust within the lsst science pipelines is in a package called ``rubinoxide``.
This does not mean developers are not allowed to use rust in another dedicated package, but unless there is a compelling reason to do so rust code should be placed in ``rubinoxide``.
This guide assumes the package layout of ``rubinoxide``.
Any other Rust based packages that are written should adhear to this as best as possible.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adhear => adhere


* Rust packages should be built using maturin, which manages the complexities of compiling and bundling cargo products.
* Cargo additionally is to be used manage dependencies and run rust level tests.
* pip is used as the mechanism to locally depoly the wheels created by maturin
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

depoly => deploy

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants