summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2016-07-28 14:13:26 -0400
committerMark H Weaver <mhw@netris.org>2016-07-28 14:13:26 -0400
commit622c22ccb494de789588491ad94111f7a0311ddb (patch)
tree286bb111ae2488eaef62afaf3817fcfc1c2e5cc6 /doc
parent212163f8d5d51f436490d47dc37afd5052560197 (diff)
parentae46cd0e4cfb1f06d099b2cda1f9e702e86c90e9 (diff)
downloadguix-622c22ccb494de789588491ad94111f7a0311ddb.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'doc')
-rw-r--r--doc/contributing.texi28
1 files changed, 28 insertions, 0 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi
index c0755bb895..18d891db4e 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -289,6 +289,20 @@ Make sure the package builds on your platform, using @code{guix build
 @var{package}}.
 
 @item
+@cindex bundling
+Make sure the package does not use bundled copies of software already
+available as separate packages.
+
+Sometimes, packages include copies of the source code of their
+dependencies as a convenience for users.  However, as a distribution, we
+want to make sure that such packages end up using the copy we already
+have in the distribution, if there is one.  This improves resource usage
+(the dependency is built and stored only once), and allows the
+distribution to make transverse changes such as applying security
+updates for a given software package in a single place and have them
+affect the whole system---something that bundled copies prevent.
+
+@item
 Take a look at the profile reported by @command{guix size}
 (@pxref{Invoking guix size}).  This will allow you to notice references
 to other packages unwillingly retained.  It may also help determine
@@ -300,6 +314,13 @@ For important changes, check that dependent package (if applicable) are
 not affected by the change; @code{guix refresh --list-dependent
 @var{package}} will help you do that (@pxref{Invoking guix refresh}).
 
+Packages with roughly 100 dependents or more usually have to be
+committed to a separate branch.  That branch can then be built
+separately by our build farm, and later merged into @code{master} once
+everything has been successfully built.  This allows us to fix issues
+before they hit users, and to reduce the window during which pre-built
+binaries are not available.
+
 @item
 @cindex determinism, of build processes
 @cindex reproducible builds, checking
@@ -333,6 +354,13 @@ referring to people, such as
 @uref{https://en.wikipedia.org/wiki/Singular_they, singular
 ``they''@comma{} ``their''@comma{} ``them''}, and so forth.
 
+@item
+Verify that your patch contains only one set of related changes.
+Bundling unrelated changes together makes reviewing harder and slower.
+
+Examples of unrelated changes include the addition of several packages,
+or a package update along with fixes to that package.
+
 @end enumerate
 
 When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as