summaryrefslogtreecommitdiff
path: root/community
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-03-21 01:33:44 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-03-21 01:33:44 +0100
commitbfa5ab52ddbaa270c764a72457d64bb7bb32c7c9 (patch)
treed131e14185b897b18d9502870303fa7edb01c7da /community
parentdb4795ff66d1c52064fc758234db9c54bfc63a0e (diff)
parent9315421090088924c66a8f6e97ee3e0105d17617 (diff)
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/web
Diffstat (limited to 'community')
-rw-r--r--community/gsoc.mdwn20
-rw-r--r--community/gsoc/project_ideas.mdwn93
-rw-r--r--community/gsoc/project_ideas/file_locking.mdwn3
-rw-r--r--community/gsoc/project_ideas/object_lookups.mdwn90
-rw-r--r--community/gsoc/project_ideas/package_manager.mdwn17
-rw-r--r--community/gsoc/project_ideas/testsuites.mdwn60
-rw-r--r--community/gsoc/project_ideas/unionfs_boot.mdwn10
7 files changed, 226 insertions, 67 deletions
diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn
index e6f07822..5a373014 100644
--- a/community/gsoc.mdwn
+++ b/community/gsoc.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013 Free Software
-Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free
+Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -11,24 +11,28 @@ License|/fdl]]."]]"""]]
[[!meta title="Google Summer of Code"]]
+<!--
The Google Summer of Code 2013 is over. Chances are that we will again be
participating in 2014, stay tuned.
+-->
-<!--
We're in! The GNU Hurd project is again participating in the [Google Summer of
Code](http://www.google-melange.com/) under the [GNU
umbrella](http://www.gnu.org/software/soc-projects/).
-As of Monday, 2013-04-22 it's the *student application period*. This will last
-until [Friday,
-2013-05-03](http://www.google-melange.com/gsoc/events/google/gsoc2013), which
+Per the [Google Summer of Code 2014 Program
+Timeline](http://www.google-melange.com/gsoc/events/google/gsoc2014), on
+Monday, from 2014-03-10 to 2014-03-21, it's the *student application period*,
+which
is plenty of time for preparing and discussing your applications -- but please
don't wait to the last minute!
+<!--
This year's *student application period* is over. Thanks for sending in your
applications! We're now reviewing and discussing these, so please pay
attention to any questions posted on your proposal's page. The Google site's
notification system should be sending out emails, too.
+-->
As we only have finite resources (meaning that we won't be able to accept all
GNU Hurd applications even if we wanted to), we will eventually need to make a
@@ -37,7 +41,6 @@ with us, be it by answering the evaluators' questions on your proposal's page,
or by talking to us on the [[mailing_lists]] or on [[IRC]]. At this time, it
is important for us to get a good impression about the seriousness you're
showing with your application.
--->
If you intend to apply for any such projects in the future, it's a good idea to
already start perparing for it now: the sooner, the better.
@@ -47,14 +50,12 @@ send in some basic patches (as mentioned in our
[[student_application_form]]), and talk to us on the [[mailing_lists]] or
on [[IRC]], for example about the principal steps you're
planning on doing in your intended work area.
-<!--
Of course, we don't expect you
to already start working seriously on your project, but any input you're giving
us will make it easier for us to justify selectiong your specific proposal. At
this time, it is not quantity that matters, and it also is not *the perfect
patch* we're waiting for, but it is rather that we see how you're generally
able to work with the code.
--->
If you have any questions, don't be shy: please ask! Nobody expects you to
know everything. Even for the long-term Hurd contributors it is common to
@@ -73,7 +74,6 @@ discussing with our GNU peers about how to split these up among all the GNU
subprojects.
-->
-
# Possible projects
We have a list of [[project_ideas]], and students are likewise encouraged to
diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn
index 39797ba0..262ead82 100644
--- a/community/gsoc/project_ideas.mdwn
+++ b/community/gsoc/project_ideas.mdwn
@@ -74,41 +74,58 @@ After all, the purpose of GSoC is to introduce you to free software development
before the end of the application process, with our help -- contact us, and we
will assist you as well as we can.
-See also the list of [Hurd-related X.Org project
-ideas](http://xorg.freedesktop.org/wiki/Hurd_Porting), and [Debian GNU/Hurd
-Debianish
-initialization](http://wiki.debian.org/SummerOfCode2013/Projects#Debian_GNU.2FHurd_Debianish_initialization).
-
-<!-- Olaf, wouldn't it make sense to put the following tasks next to each
-other: language_bindings, gnat, gccgo, perl_python. -->
-
-[[!inline pages="community/gsoc/project_ideas/language_bindings" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/virtualization" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/file_locking" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/gdb" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/tcp_ip_stack" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/nfs" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/sound" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/disk_io_performance" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/vm_tuning" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/gnumach_cleanup" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/xmlfs" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/unionfs_boot" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/lexical_dot-dot" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/secure_chroot" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/package_manager" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/download_backends" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/maxpath" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/gnat" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/gccgo" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/hardware_libs" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/cdparanoia" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/perl_python" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/testsuites" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/testing_framework" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/libcap" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/xattr" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/valgrind" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/driver_glue_code" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/dtrace" show=0 feeds=no actions=yes]]
-[[!inline pages="community/gsoc/project_ideas/libdiskfs_locking" show=0 feeds=no actions=yes]]
+Here is a list of project ideas, followed by all project ideas inlined.
+
+[[!inline show=0 feeds=no archive=yes template="titlepage" pagenames="{{$project_ideas}}"]]
+
+Additional ideas have been posted in [[!message-id
+"87zjkyhp5f.fsf@kepler.schwinge.homeip.net"]], but have not yet been integrated
+here and elsewhere. Keywords: *bootstrap-vz*, *buildbot*, *ceph*, *clang*,
+*cloud*, *continuous integration*, *debian*, *eudyptula challenge*, *gcc front
+end*, *gdb*, *grub*, *guile*, *learning system*, *llvm*, *lttng*, *rump
+kernels*, *samba*, *sbcl*, *smbfs*, *steel bank common lisp*, *subhurd*,
+*systemtap*, *teaching system*, *tracing*, *virtio*, *x.org*, *xen*, *xorg*.
+As well as any other ideas you might have, these are likewise applicable for
+projects.
+
+All project ideas inlined:
+
+[[!inline show=0 feeds=no actions=yes pagenames="{{$project_ideas}}"]]
+
+
+[[!ymlfront data="""
+
+project_ideas:
+
+ "community/gsoc/project_ideas/language_bindings
+ community/gsoc/project_ideas/virtualization
+ community/gsoc/project_ideas/file_locking
+ community/gsoc/project_ideas/gdb
+ community/gsoc/project_ideas/tcp_ip_stack
+ community/gsoc/project_ideas/nfs
+ community/gsoc/project_ideas/sound
+ community/gsoc/project_ideas/disk_io_performance
+ community/gsoc/project_ideas/vm_tuning
+ community/gsoc/project_ideas/gnumach_cleanup
+ community/gsoc/project_ideas/xmlfs
+ community/gsoc/project_ideas/unionfs_boot
+ community/gsoc/project_ideas/lexical_dot-dot
+ community/gsoc/project_ideas/secure_chroot
+ community/gsoc/project_ideas/package_manager
+ community/gsoc/project_ideas/download_backends
+ community/gsoc/project_ideas/maxpath
+ community/gsoc/project_ideas/gnat
+ community/gsoc/project_ideas/gccgo
+ community/gsoc/project_ideas/hardware_libs
+ community/gsoc/project_ideas/cdparanoia
+ community/gsoc/project_ideas/perl_python
+ community/gsoc/project_ideas/testsuites
+ community/gsoc/project_ideas/testing_framework
+ community/gsoc/project_ideas/libcap
+ community/gsoc/project_ideas/xattr
+ community/gsoc/project_ideas/valgrind
+ community/gsoc/project_ideas/driver_glue_code
+ community/gsoc/project_ideas/dtrace
+ community/gsoc/project_ideas/libdiskfs_locking"
+
+"""]]
diff --git a/community/gsoc/project_ideas/file_locking.mdwn b/community/gsoc/project_ideas/file_locking.mdwn
index 206d4d7d..ebb322f1 100644
--- a/community/gsoc/project_ideas/file_locking.mdwn
+++ b/community/gsoc/project_ideas/file_locking.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2008, 2009, 2012 Free Software Foundation,
+[[!meta copyright="Copyright © 2008, 2009, 2012, 2014 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -29,6 +29,7 @@ A preliminary patch is [[!GNU_Savannah_patch 332 desc="available"]].
Possible mentors: Samuel Thibault (youpi)
Exercise: Find one of the existing issues, either by looking at the task/bug
+filed on [[open_issues/file_locking]], on
trackers on savannah, or by trying things out yourself; and take a go at it.
Note though that most of these issues are probably not trivial -- it's quite
likely that you won't be able to actually fix any of them in the time available
diff --git a/community/gsoc/project_ideas/object_lookups.mdwn b/community/gsoc/project_ideas/object_lookups.mdwn
index d3e17dc9..d67dbe20 100644
--- a/community/gsoc/project_ideas/object_lookups.mdwn
+++ b/community/gsoc/project_ideas/object_lookups.mdwn
@@ -539,3 +539,93 @@ In context of [[!message-id "20130918081345.GA13789@dalaran.sceen.net"]].
<teythoon> right, for dup and friends
<braunr> and the radix tree is a data structure that can cope decently with
not too sparsed distributions
+
+
+## IRC, freenode, #hurd, 2014-02-27
+
+ <braunr> teythoon: ah, just saw the commit that will make our network
+ faster :)
+ <teythoon> network ?
+ <braunr> eh no, it's about ioctls actually
+ <braunr> :)
+ <braunr> i read a bit too quickly
+ <teythoon> one more small step towards fixing all receiver lookups in the
+ hurd...
+ <teythoon> i did not anticipate how much the hurd has to be changed first
+ in order to make use of the protected payloads
+ <braunr> that was my main reason not to do it actually :/
+ <braunr> but you're almost finished with it, aren't you ?
+ <teythoon> not sure tbh
+ <teythoon> i believe the fsys stuff was the largest chunk
+
+
+## IRC, freenode, #hurd, 2014-03-02
+
+ <teythoon> youpi: i cleaned up most of the receiver lookups in hurd by now
+ <teythoon> but there are some tricky cases left
+ <teythoon> 1/ the pager stuff
+ <teythoon> the mig declarations are in gnumach, and do not have the
+ necessary intran declarations that we can mutate
+ <teythoon> 2/ some uses of mach_port_t instead of some_type_t in the hurd
+ rpc definitions
+ <teythoon> (e.g. fsys_forward)
+ <teythoon> for 1/, i'd like to extend the definitions in gnumach
+ <teythoon> i'm not so sure what to do for the second case
+ <teythoon> we could introduce some types for each case
+ <teythoon> or, we do not touch the definitions
+ <teythoon> my protected payload prototype allows us to map payloads back to
+ port names for the functions that want a name
+ <teythoon> i did this by redefining the mach_port_t type for mig that uses
+ the payload to port-name intran function
+ <teythoon> mig allows type redefinitions, but emits a warning message
+ <teythoon> though i consider that a useful feature, it allows one to refine
+ a type
+
+
+## IRC, freenode, #hurd, 2014-03-04
+
+ <teythoon> braunr: i fixed the object lookups in libpager yesterday, a
+ pretty mechanic change
+ <braunr> teythoon: can't be bad :)
+ <teythoon> amusingly, the resulting packages boot about half way through
+ o_O
+ <braunr> teythoon: ?
+ <teythoon> it hangs while cleaning left-over files from /tmp
+ <braunr> ugh, libpager ..
+ <teythoon> yes
+ <teythoon> tricky pager stuff is tricky ?
+ <braunr> tricky buggy pager stuff is tricky and buggy
+ <teythoon> ^^
+ <braunr> let's assume you made things faster, increasing the likelihood of
+ deadlocks ..
+ <braunr> we had a patch once for a libpager deadlock
+ <teythoon> well, i'm not yet at the point where things might get faster
+ <braunr> see 901c61a1d25e7c8963e51012760a82730eda1910
+ <braunr> the same problem exists elsewhere i think, you might have hit it
+ <teythoon> i'm still just moving the object lookups from the server
+ functions to the mig translation functions
+ <braunr> hm
+ <teythoon> but yes, i might have influenced the timing, not sure
+ <braunr> shouldn't cost too much to add some prints
+ <braunr> iirc, the other potential deadlock is in libpager/pager-attr.c
+ <braunr> when memory_object_change_attributes is called
+ <braunr> (which loops back into libpager when the kernel sends data back
+ <braunr> )
+ <braunr> tricky ..
+ <teythoon> i'll try that when i get home
+
+ <braunr> aren't you almost done ?
+ <teythoon> not sure tbh
+ <braunr> :(
+ <braunr> althouhg libpager would be really great
+ <teythoon> and mach-defpager
+ <braunr> since this is actually one of the biggest points of contention
+ <teythoon> i'll do that next, and return to libpager later
+ <braunr> ok
+ <teythoon> for both i needed to change some rpc type definitions in gnu
+ mach
+ <braunr> skipping lookups in libpager would make it harder to suffer
+ writeback thread storms
+ <teythoon> so i want to make sure that these changes are fine so that i can
+ propose them
+ <braunr> ok
diff --git a/community/gsoc/project_ideas/package_manager.mdwn b/community/gsoc/project_ideas/package_manager.mdwn
index d80efe37..721f6d06 100644
--- a/community/gsoc/project_ideas/package_manager.mdwn
+++ b/community/gsoc/project_ideas/package_manager.mdwn
@@ -1,14 +1,15 @@
-[[!meta copyright="Copyright © 2008, 2009, 2013 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2013, 2014 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU Free Documentation License|/fdl]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-[[!meta title="Hurdish Package Manager for the GNU System"]]
+[[!meta title="Hurdish Package Manager for the GNU System, GNU Guix"]]
Most GNU/Linux systems use pretty sophisticated package managers, to ease the
management of installed software. These keep track of all installed files, and
@@ -37,7 +38,7 @@ came about. There are no global databases of any kind. (Some things might
require caching for better performance, but this must happen transparently.)
The core of this approach is formed by [[hurd/translator/stowfs]].
-[Guix](http://www.gnu.org/software/guix), GNU's package manager,
+[[GNU Guix|hurd/running/nix#guix]], GNU's package manager,
installs each package in its own directory. Each user has a
*profile*, which is the union of some of these packages. On
GNU/Linux, this union is implemented as a symlink tree; on GNU/Hurd,
@@ -46,7 +47,11 @@ Unix directory structure from all the files in the individual package
directories. This handles the lowest level of package
management.
-The goal of this task is to exploit Hurd features in GNU Guix.
+The goal of this task is to exploit Hurd features in [[GNU
+Guix|hurd/running/nix#guix]].
+
+See also: [Porting Guix to
+GNU/Hurd](http://www.gnu.org/software/soc-projects/ideas-2014.html#guix_hurd).
Possible mentors: Ludovic Courtès, Ben Asselstine (bing)
diff --git a/community/gsoc/project_ideas/testsuites.mdwn b/community/gsoc/project_ideas/testsuites.mdwn
index 9ca6fe3e..451c8c5f 100644
--- a/community/gsoc/project_ideas/testsuites.mdwn
+++ b/community/gsoc/project_ideas/testsuites.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2010, 2011 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010, 2011, 2014 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -8,7 +9,14 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]
-[[!meta title="Fix Compatibility Problems Exposed by Testsuites"]]
+[[!meta title="Fix Compatibility Problems Exposed by Testsuites, Implement
+Missing Interfaces in glibc for GNU Hurd"]]
+
+[[!toc]]
+
+
+[[!if test="!included()" then="#" else="###"]] Fix Compatibility Problems Exposed by Testsuites
+
A number of software packages come with extensive testsuites.
Some notable ones are [[open_issues/glibc]], gnulib, Perl,
@@ -36,25 +44,61 @@ The goal is to analyze all failures in one or more of the listed testsuites,
to find out what shortcomings in the Hurd implementation cause them (if any),
and to fix at least some of these shortcomings.
-Note that this task somewhat overlaps with the [[Perl/Python task|perl_python]] listed above.
+Note that this task somewhat overlaps with the [[Perl/Python task|perl_python]].
Here the focus however is not on improving the support for any particular program,
but on fixing general problems in the Hurd.
-This is a very flexible task:
+A complementary task is adding a proper [[open_issues/unit_testing]] framework
+to the GNU Hurd's code base, and related packages.
+
+
+[[!if test="!included()" then="#" else="###"]] <a name="missing">Implement Missing Interfaces in glibc for GNU Hurd</a>
+
+A related project is to [implement missing interfaces for GNU
+Hurd](http://www.gnu.org/software/soc-projects/ideas-2014.html#glibc_hurd_missing_interfaces)
+([glibc
+wiki](https://sourceware.org/glibc/wiki/GSoC#Implement_Missing_Interfaces_for_GNU_Hurd)),
+primatily in [[open_issues/glibc#missing]].
+
+In glibc's Linux kernel port, most simple POSIX interfaces are in fact just
+forwarded to (implemented by) Linux kernel system calls. In contrast, in the
+[[GNU Hurd port|/glibc]], the POSIX (and other) interfaces are actually
+implemented in glibc on top of the [[Hurd RPC protocols|hurd/rpc]]. A few
+examples:
+[getuid](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/getuid.c),
+[open](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/open.c),
+[rmdir](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/rmdir.c),
+[setresuid](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/setresuid.c),
+[socketpair](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mach/hurd/socketpair.c).
+
+When new interfaces are added to glibc (new editions of POSIX and similar
+standards, support for new editions of C/C++ standards, new GNU-specific
+extensions), generally [ENOSYS
+stubs](https://sourceware.org/git/?p=glibc.git;a=blob;f=posix/execve.c) are
+added, which are then used as long as there is no real implementation, and
+often these real implementations are only done for the Linux kernel port, but
+not GNU Hurd. (This is because most of the contributors are primarily
+interested in using glibc on Linux-based systems.) Also, there is quite a
+backlog of [[missing implementations|open_issues/glibc#missing]] for GNU Hurd.
+
+In coordination with the [[GNU Hurd developers|mailing_lists/bug-hurd]], you'd
+work on implementing such missing interfaces.
+
+---
+
+These are very flexible tasks:
while less experienced students should be able to tackle at least a few of the easier problems,
other issues will be challenging even for experienced hackers.
-No specific previous knowledge is required for this task;
+No specific previous knowledge is required;
only fairly decent C programming skills.
While tracking down the various issues,
the student will be digging into the inner workings of the Hurd,
and thus gradually gaining the knowledge required for Hurd development in general.
-A complementary task is adding a proper [[open_issues/unit_testing]] framework
-to the GNU Hurd's code base, and related packages.
-
Possible mentors: Samuel Thibault (youpi)
Exercise: Take a stab at one of the testsuite failures,
+or missing implementation,
and write a minimal testcase exposing the underlying problem.
Actually fixing it would be a bonus of course --
but as it's hard to predict which issues will be easy and which will be tricky,
diff --git a/community/gsoc/project_ideas/unionfs_boot.mdwn b/community/gsoc/project_ideas/unionfs_boot.mdwn
index 13cc6cd1..0c51bdc1 100644
--- a/community/gsoc/project_ideas/unionfs_boot.mdwn
+++ b/community/gsoc/project_ideas/unionfs_boot.mdwn
@@ -1,12 +1,13 @@
-[[!meta copyright="Copyright © 2008, 2009, 2013 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2013, 2014 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU Free Documentation License|/fdl]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
[[!meta title="Allow Using unionfs Early at Boot"]]
@@ -19,7 +20,8 @@ software packages, GNU/Linux distributions usually come with a package manager,
which keeps track of all files upon installation/removal in some kind of
central database.
-An alternative approach is the one implemented by GNU Stow and GNU Guix: each package is
+An alternative approach is the one implemented by [[GNU Stow and GNU
+Guix|package_manager]]: each package is
actually installed in a private directory tree. The actual standard directory
structure is then created by collecting the individual files from all the
packages, and presenting them in the common `/bin`, `/lib`, etc. locations.