How should our build instructions be written? #4433
Replies: 2 comments 15 replies
-
Agree with your Common workflows, if expected, should be included. So if it's common to need to know |
Beta Was this translation helpful? Give feedback.
-
I'm pretty much aligned with everything you've outlined here. I think it's better to keep installation and build instructions separate. Were you planning on having an installation md in the repo, or keeping the instructions we have on xrpl.org? |
Beta Was this translation helpful? Give feedback.
-
We currently have three open PRs touching our build instructions in a big way:
I think they fundamentally disagree with each other on what the documentation should contain--its scope--and how it should be arranged--its structure. I think we should resolve that disagreement in this discussion before making further specific changes to the documentation itself. The principles we can establish in this discussion should make it clear exactly what should be written and where it should be placed, including what should be written by others elsewhere and merely linked by us here.
Audience
The build instructions have several different audiences, divided among several orthogonal dimensions:
We should serve all audiences, but I think we should make it easy for experienced builders, who will be the most common builders, to find what they're looking for. In my mind, that means putting one-time-only introductory text at the end of BUILD.md, and including copy-pasteable commands for the default options and typical compilers on the major platforms. I don't think it's important to offer the same convenience to inexperienced builders, because they won't be inexperienced for long. I think it is reasonable to expect them to invest a little bit of time up-front to understand how the software is built instead of blindly skimming and copying every command in order.
Assumptions of reader experience
I would like to assume basic experience with the tools we demonstrate building rippled. We already assume experience with a shell, with CMake, and with how to install software on the reader's system. Our prior documentation included no introduction to CMake teaching readers to how to pass options, or choose a different compiler, or choose a generator. We recently introduced a new tool, Conan. I would like to assume basic familiarity with all of these tools, and to point to external documentation, at most, for those unfamiliar.
It was easy to assume familiarity with a shell and CMake because most people working with C++ are familiar with them. It's not as easy to assume familiarity with Conan because fewer C++ developers are familiar with it. I think it is reasonable to include our own short introduction to Conan, but I would like to make it external to BUILD.md.
Separate files
I do not want to maintain multiple, mostly identical sets of instructions for different platforms, like we tried in the past. I want one document with instructions for everyone, with minor deviations spelled out. It is easier to maintain, easier to link in answers, and easier for builders building in a new environment to notice the similarities and differences between them.
Scope
I want to include in BUILD.md:
I think there is a place in a separate document for instructions that are not part of building the software, e.g. for how to depend on
xrpl_core
from another CMake project. I think it might be reasonable to include instructions for installing rippled in BUILD.md, but I'd prefer they be separate too.Beta Was this translation helpful? Give feedback.
All reactions