Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reference Manual: RPM's Philosophy #3299

Merged
merged 3 commits into from
Oct 1, 2024

Conversation

ffesti
Copy link
Contributor

@ffesti ffesti commented Sep 11, 2024

First brain dump.

@ffesti ffesti marked this pull request as draft September 11, 2024 12:03
Copy link
Contributor

@nwalfield nwalfield left a comment

Choose a reason for hiding this comment

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

Just some minor suggestions.

docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
docs/manual/philosophy.md Outdated Show resolved Hide resolved
@ffesti
Copy link
Contributor Author

ffesti commented Sep 12, 2024

Thanks a lot! Good to have a native speaker reading over this. Added the suggested changes.

---
# RPM's Philosophy

The RPM package manager is a general purpose software manager. It
Copy link
Member

Choose a reason for hiding this comment

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

I think a brief definition of what that means would be in order here, something that covers the two sides of our operation: wrapping software into packages that the other side knows how to manipulate: install, update, remove, verify.

Copy link
Member

@pmatilai pmatilai Sep 13, 2024

Choose a reason for hiding this comment

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

I'd also place a bullet summary of the founding design principles right here in the beginning to set a frame of mind, roughly:

  • general purpose software management
  • building from pristine sources
  • unattended operation
  • reproducibility
  • verifiability

What follows then expands on each principle.


Package installation and update is unattended and must not require
user interaction. When possible delay user interaction to the first
start up.
Copy link
Member

Choose a reason for hiding this comment

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

Just drop the second sentence, user interaction is simply not an option during operation.

Copy link
Member

Choose a reason for hiding this comment

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

Builds being unattended too doesn't seem to be mentioned anywhere, that's an equally important thing.

Sources are given as files and patches. Upstream tarballs should be
used unchanged and patched during the build. This way packages can be
reviewed more easily and the changes made to the upstream project are
explicit.
Copy link
Member

@pmatilai pmatilai Sep 13, 2024

Choose a reason for hiding this comment

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

In the rpm lore for this is called "pristine sources", I'd stick it somewhere in there 😅

Copy link
Member

Choose a reason for hiding this comment

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

Also this is practically the same as "Separate Upstream Source from Patches" a couple of sections earlier. I get that there's a slight difference in perspective, but its quite repetitive. Backporting fixies too.

Maybe have a single "Pristine sources" section for the main beef, and elaborate on these things it enables as subsections?

how software looks or gets packaged. Packaging software can be messy and
RPM accomodates for that.

It still offers help to create a POSIX like operation system. Marcos
Copy link
Member

Choose a reason for hiding this comment

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

Maybe "help in creating a ..."?

Copy link
Member

Choose a reason for hiding this comment

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

Oh, and s/Marcos/Macros/

@pmatilai
Copy link
Member

pmatilai commented Sep 13, 2024

Lots of useful stuff here. I'd maybe move the Design goals as the first subsection so it goes from higher level towards details. Jumping straight into talking about macros seems like getting ahead of ourselves.

Finally, these design goals appear to be missing entirely:

  • reproducibility (of builds and installs)
  • verifiability (of packages and installed software)

The reproducibility goal set in the nineties may not entirely match what folks these days use that term for, but it's an important goal nevertheless. Repeatability could be another term that can be used, if only to differentiate a bit from the current terminology. OTOH we are trying to support the current reproducibility initiatives too...

@pmatilai
Copy link
Member

Just realized this will make a nice addition to the contributing guide: when contributing / planning to, make sure the work aligns with rpm's link-to-design-philosophy. Doesn't have to be added in this very PR but wouldn't hurt either.

@ffesti
Copy link
Contributor Author

ffesti commented Oct 1, 2024

Ok, I don't have the mental capacity to make this into a corner stone of western literature but it should now pass as a piece of our docs.

@ffesti ffesti requested a review from pmatilai October 1, 2024 06:11
@ffesti ffesti marked this pull request as ready for review October 1, 2024 06:14
@ffesti ffesti requested a review from a team as a code owner October 1, 2024 06:14
@ffesti ffesti requested review from dmnks and removed request for a team October 1, 2024 06:14
docs/manual/philosophy.md Outdated Show resolved Hide resolved
@pmatilai
Copy link
Member

pmatilai commented Oct 1, 2024

Except for that one editing leftover mentioned above, looks fine to me.

@pmatilai pmatilai merged commit d4e4a5b into rpm-software-management:master Oct 1, 2024
1 check passed
@ffesti ffesti deleted the 2897 branch October 1, 2024 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants