During the initiation of a new user in the Linux world someone installs their first distro, that’s a Linux-based operating system with some pre-installed software. What will usually happen is a short time of distro-hopping where the user will switch between distros frequently and try a variety of them. If ideological reasons (for example free-only software) are not considered, what should become quickly apparent is that Linux distros differ mainly in
- pre-configured desktop environment or window manager
- package manager
- init manager
- release cycle (fixed vs rolling)
The first isn’t of much importance since theoretically you can use every DE and WM in any distro. I say theoretically because there can be exceptions, environments that are difficult to package and aren’t found everywhere (e.g. Unity 7). But the next are what characterize most distros.
Enter Bedrock
Bedrock started on 2009, first internal release occurred 2011 and first public release on 2012. It is a meta distro that allows users to mix-and-match components from other which are typically incompatible. These components are integrated into a cohesive system. This solves the problem of packages existing in one distro but not in another. An example is running Debian stable with packages available in Arch. This allows having updated packages without making a FrankenDebian or running sid. Basically it is a distro-hopping stopper; you can have any environment, access to any package manager, any init system, and the release cycle you desire.
Itself is  a collection  of tools  to glue  those other  components. The
system’s files  and processes are  organized into units  called strata
which can  be thought as  selectively dented chroots. Then  crossfs, a
FUSE-based   filesystem,  makes   resources  available   across  stratum
boundaries.   Finally  there  is  etcfs which  redirects  /etc  file
accesses as required by the calling process.
Installation is based on its meta identity. That is you cannot format and install Bedrock. Rather an installed distro is converted in-place into Bedrock. Arch, Void, Debian, Ubuntu, and Gentoo, are the base distros with highest community usage, no known issues, fetch support, and an active maintainer. Therefore a simple way to get Bedrock is installing Debian with netinst and then running the installation script.
The script corresponding to architecture  should be taken from userland
releases  file.  Then  it  has  to be  run  as  root with  the
--hijack flag.  Hijacking moves the previous  install files elsewhere,
installs  Bedrock  to  root,  and  adds  the  previous  install  as  new
stratum. The following script combines all the steps.
#!/bin/sh
vers=0.7
arch=`uname -a | awk '{print $(NF-1)}'`
link="https://raw.githubusercontent.com/bedrocklinux/bedrocklinux-userland/$vers/releases"
last=`wget -O - $link | grep $arch | head -1`
wget $last
sh ./`echo $last | awk -F '{print $NF}'` --hijack
Rebooting an init selection menu should appear. On first look everything appears the same. Probably you could even forget you installed Bedrock. But, that isn’t what is happening. After logging run the following for an interactive version of the basic usage tutorial.
$ brl tutorial basics
For quick reference, a mini-tutorial  will follow. The distro manager is
the brl command. You can get  components from another distro using the
fetch argument. For example
# brl fetch arch
The Arch’s package manager pacman will then become available. Packages
can be installed like on Arch. For example to install hello, just do
# pacman -S hello
Rather manually using each package  manager, pmm is provided which can
be  considered a  meta-package manager.  It can  mimic the  interface of
package  managers from  supported distros  (pacman, xbps,  apt, portage,
etc). By default it mimics the interface of hijacked distro.
The  stratum from  which the  comamnd will  be run  is figured  out from
context. Bedrock can be configured to ensure a stratum always provides a
given command. This is called pinning, and is done by editing
the central configuration file  found in /bedrock/etc/bedrock.conf. Ad
hoc can be done with
$ strat $stratum $command
If it isn’t pinned the local one will be utilized. If it is neither pinned or locally available, the first instance of command in available strata will be used. Commands may be restricted to the stratum they come from with
$ strat -r $stratum $command
A stratum can be in disk but not be integrated. This is done by disabling it.
# brl disable arch
It can of course be re-enabled anytime.
# brl enable arch
After disabling it can be removed with
# brl remove arch
Removing  before disabling  can be  done  with the  -d argument.   The
stratum providing the init cannot be removed until reboot and another is
chosen. The  hijacked stratum can  be removed  but the bootloader  to be
updated it has to be installed on another.
Making a stratum from an unsupported  distro is done by getting distro’s
root, copying the root to /bedrock/strata/$name preserving permissions
and  symbolic links,  registering  with brl  show  $name, and  finally
enabling with brl enable $name.
Before the /bedrock directory got  introduced, it used the directories
/opt for Bedrock files and /var/chroot to host the strata.  There’re
plans for the layout to change again in the next version.
Besides the flexibility provides, some unique features also arise. Distro-upgrades can be done live with almost no downtime and breaks from distro-upgrades aren’t a problem.
Closing  up,  general issues  are  complexity,  greater attack  surface,
unsolvable  incompatibilities  (see   page  on  v0.7),  small
community, duplicated  files resulting in  disk overhead, and  a runtime
overhead resulting in  a slight performance loss. Most  of the peromance
loss originates from  existence of etcfs mount per  stratum, though this
applies only in /etc operations.  But overall Bedrock appears good for
day-to-day usage.
It also worths checking the (old) founder’s AMA on Reddit.