When you are looking on the distribution and how they package things, they do it in so much different way. Even between RPM-based distributions, there are different macro, different package names and so on. People inside distributions tend to just write something what suit their needs and start using it.
With Rust we've taken different approach: we've designed prototype in Fedora and then before officially using it, showed to other people (openSUSE, Mageia, Debian), asked for feedback, worked with them to suit their needs and only after that went and started using it in Fedora. It didn't work out fully with Debian because the ecosystem is too different, but even there we've made agreement on the filesystem paths and basic principles.
2. Who am I?
Fedora contributor for 6+ years
Fedora Packaging Committee member
Author of rust2rpm
openSUSE contributor for a few months1
Contributor to many upstream projects
1
My openSUSE account is probably older than Fedora one
4. Status quo
C/C++ is quite close
Package names of libraries are different
(libglib-2_0-0 vs glib2)
Macros are more or less same
(make, autofoo, meson are same, cmake is different)
Python, Go, Ruby are somewhat similar
Package names are same
But macros used in spec are very different
Rust is identical2
2
Minor spec differences (license header, changelog)
5. Why should we care?
Duplicate work
Users are confused
7. Rust story
1. Created PoC which works for Fedora
2. Started using it in production and didn’t tell anybody
8. Rust story
1. Created PoC which works for Fedora
2. Started using it in production and didn’t tell anybody
3. Asked Mageia and openSUSE folks for feedback
9. Rust story
1. Created PoC which works for Fedora
2. Started using it in production and didn’t tell anybody
3. Asked Mageia and openSUSE folks for feedback
4. Debian folks came and also provided feedback
10. Rust story
1. Created PoC which works for Fedora
2. Started using it in production and didn’t tell anybody
3. Asked Mageia and openSUSE folks for feedback
4. Debian folks came and also provided feedback
5. We’ve worked together on details
13. Rust story: Results
#fedora-rust is the main place for discussions
(openSUSE, Mageia and Debian representatives are there)
Full compatibility between RPM-based distributions3
pagure.io/fedora-rust/rust2rpm is the only repository with
tooling and RPM macros
Package names, filesystem paths are same
RPM specs are same4
Some compatibility between RPM and DEB-based
distributions
Package names are very similar
(rust-serde+derive-devel vs librust-serde+derive-dev)
Filesystem paths are same
3
You can build on openSUSE from Fedora sources and use on Mageia
4
Minor differences (license header, changelog)
14. Recap
1. Check if anybody is already working on similar project
If so, contact them and try working together
If not, start with PoC
2. Seek for a feedback from other distributions
3. Establish one place for discussions and code
4. From now on: it is community project
Any breaking/big changes must be ack’ed by others
5. Optionally, become a contributor to other distirbutions