diff --git a/README.md b/README.md
index f96c9cb..b757b05 100644
--- a/README.md
+++ b/README.md
@@ -22,58 +22,7 @@ Maple Linux is built upon software created by various developers, and is distrib

-| Software | Copyright Holder | License | Alignment |
-| ----------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------ |
-| Autoconf | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Automake | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| GNU bc | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Berkeley Yacc | Public Domain | Public Domain | Free |
-| bzip2 | Julian R. Seward | Modified Zlib license | Free |
-| CMake | Kitware, Inc. and Contributors | BSD 3-Clause license | Free |
-| Coreutils | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| curl | Daniel Stenberg and many contributors | The curl license | Free |
-| Debian Almquist Shell | Various | Modified BSD 3-Clause license(?) *and* GNU General Public License version 3 | Slightly Copyleft |
-| GNU Diffutils | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Expat | Various | MIT License | Free |
-| GNU Find Utilities | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Flex | Various | BSD 2-Clause license | Free |
-| fortune-mod | Various | BSD 4-Clause license | Free |
-| gettext | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| git | Linus Torvalds and Contributors | GNU General Public License version 2 | Copyleft |
-| GNU Grep | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| GNU roff | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| GNU Gzip | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| initramfs-tools | Various | GNU General Public License version 2 | Copyleft |
-| kmod | Various | GNU Lesser General Public License version 2.1 | Copyleft |
-| libarchive | Tim Kientzle | Mostly BSD 2-Clause license | Free |
-| libcap | Andrew G. Morgan | BSD 3-Clause license *or* GNU General Public License version 2 | Slightly Copyleft |
-| libelf | Various | GNU General Public License version 2 *and* GNU Lesser General Public License version 3 | Copyleft |
-| LibreSSL | Various | Various | Free |
-| The GNU Portable Library Tool | Free Software Foundation, Inc. | GNU General Public License version 2 | Copyleft |
-| Limine | Mintsuki and Contributors | BSD 2-Clause license | Free |
-| Linux | Linus Torvalds and Contributors | Mostly GNU General Public License version 2 with Linux Syscall Note | Copyleft |
-| LLVM | Various | Mostly Apache License version 2.0 with LLVM exceptions | Free |
-| GNU m4 | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| GNU Make | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Maple Linux Bootstrap Scripts | Alexander Hill, Nicholas McDaniel, and Contributors | ISC License | Free |
-| Mawk | Various | GNU General Public License version 2 | Copyleft |
-| muon | Stone Tickle and Contributors | GNU General Public License version 3 | Copyleft |
-| musl | Rich Felker and Contributors | Mostly MIT License | Slightly Copyright |
-| GNU nano | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| The Netwide Assembler | "The NASM Authors" | BSD 2-Clause license | Free |
-| New Curses | Thomas E. Dickey and Free Software Foundation, Inc. | Modified MIT License | Free |
-| OpenRC | Roy Marples and the OpenRC authors | BSD 2-Clause license | Free |
-| GNU patch | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| Perl | Larry Wall and others | GNU General Public License version 1 | Copyleft |
-| pkgconf | Various | ISC License | Free |
-| Python | Python Software Foundation, BeOpen, and CWI | Python Software Foundation License Version 2 | Copyleft |
-| GNU sed | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| GNU tar | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
-| xz | Various | Mostly BSD 0-Clause license | Slightly Copyleft |
-| Zlib | Jean-loup Gailly and Mark Adler | Zlib License | Free |
-| Zsh | The Zsh development group | Mostly MIT License (Modern Variant) | Slightly Copyleft |
-
-If any of the information listed above is inaccurate, please submit a patch to correct the README. ~ahill
+For more information about the software included in this project and its licensing, see [SOFTWARE.md](./SOFTWARE.md).
### Filesystem Hierarchy
diff --git a/SOFTWARE.md b/SOFTWARE.md
new file mode 100644
index 0000000..779e325
--- /dev/null
+++ b/SOFTWARE.md
@@ -0,0 +1,56 @@
+| Software | Copyright Holder | License | Alignment |
+| ----------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------ |
+| Autoconf | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Automake | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| GNU bc | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Berkeley Yacc | Public Domain | Public Domain | Free |
+| bzip2 | Julian R. Seward | Modified Zlib license | Free |
+| CMake | Kitware, Inc. and Contributors | BSD 3-Clause license | Free |
+| Coreutils | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| curl | Daniel Stenberg and many contributors | The curl license | Free |
+| Debian Almquist Shell | Various | Modified BSD 3-Clause license(?) *and* GNU General Public License version 3 | Slightly Copyleft |
+| GNU Diffutils | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Expat | Various | MIT License | Free |
+| GNU Find Utilities | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Flex | Various | BSD 2-Clause license | Free |
+| fortune-mod | Various | BSD 4-Clause license | Free |
+| gettext | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| git | Linus Torvalds and Contributors | GNU General Public License version 2 | Copyleft |
+| GNU Grep | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| GNU roff | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| GNU Gzip | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| initramfs-tools | Various | GNU General Public License version 2 | Copyleft |
+| kmod | Various | GNU Lesser General Public License version 2.1 | Copyleft |
+| libarchive | Tim Kientzle | Mostly BSD 2-Clause license | Free |
+| libcap | Andrew G. Morgan | BSD 3-Clause license *or* GNU General Public License version 2 | Slightly Copyleft |
+| libelf | Various | GNU General Public License version 2 *and* GNU Lesser General Public License version 3 | Copyleft |
+| libffi | Anthony Green, Red Hat, Inc and others | MIT License | Free |
+| LibreSSL | Various | Various | Free |
+| libyaml | Ingy döt Net and Kirill Simonov | MIT License | Free |
+| The GNU Portable Library Tool | Free Software Foundation, Inc. | GNU General Public License version 2 | Copyleft |
+| Limine | Mintsuki and Contributors | BSD 2-Clause license | Free |
+| Linux | Linus Torvalds and Contributors | Mostly GNU General Public License version 2 with Linux Syscall Note | Copyleft |
+| Liquid template engine | Tobias Luetke | MIT License | Free |
+| LLVM | Various | Mostly Apache License version 2.0 with LLVM exceptions | Free |
+| GNU m4 | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| GNU Make | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Maple Linux Bootstrap Scripts | Alexander Hill, Nicholas McDaniel, and Contributors | ISC License | Free |
+| Mawk | Various | GNU General Public License version 2 | Copyleft |
+| muon | Stone Tickle and Contributors | GNU General Public License version 3 | Copyleft |
+| musl | Rich Felker and Contributors | Mostly MIT License | Slightly Copyright |
+| GNU nano | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| The Netwide Assembler | "The NASM Authors" | BSD 2-Clause license | Free |
+| New Curses | Thomas E. Dickey and Free Software Foundation, Inc. | Modified MIT License | Free |
+| OpenRC | Roy Marples and the OpenRC authors | BSD 2-Clause license | Free |
+| GNU patch | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| Perl | Larry Wall and others | GNU General Public License version 1 | Copyleft |
+| pkgconf | Various | ISC License | Free |
+| Python | Python Software Foundation, BeOpen, and CWI | Python Software Foundation License Version 2 | Copyleft |
+| Ruby | Various | Various | Mixed |
+| GNU sed | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| GNU tar | Free Software Foundation, Inc. | GNU General Public License version 3 | Copyleft |
+| xz | Various | Mostly BSD 0-Clause license | Slightly Copyleft |
+| Zlib | Jean-loup Gailly and Mark Adler | Zlib License | Free |
+| Zsh | The Zsh development group | Mostly MIT License (Modern Variant) | Slightly Copyleft |
+
+If any of the information listed above is inaccurate, please send me an e-mail or submit a patch and it will be corrected. ~ahill
\ No newline at end of file
diff --git a/STATUS.md b/STATUS.md
index 3c71b01..ad648db 100644
--- a/STATUS.md
+++ b/STATUS.md
@@ -38,14 +38,15 @@ Definitions:
| `libarchive` | Yes | Yes |
| `libcap2` | Yes | Yes |
| `libelf` | Yes | Yes |
+| `libffi` | Yes | Yes |
| `libmnl` |
| `libnftnl` |
| `libressl` | Yes | Yes |
| `libtool` | Yes | Yes |
-| `libyaml` |
+| `libyaml` | Yes | Yes |
| `limine` | Yes | Yes |
| `linux` | Yes | Yes |
-| `liquid` |
+| `liquid` | Yes | Yes |
| `llvm` | Yes | No |
| `m4` | Yes | Yes |
| `make` | Yes | Yes |
@@ -63,7 +64,7 @@ Definitions:
| `pkgconf` | Yes | Yes |
| `pipewire` |
| `python` | Yes | Yes |
-| `ruby` |
+| `ruby` | Yes | Yes |
| `sed` | Yes | Yes |
| `shadow` |
| `tar` | Yes | Yes |
diff --git a/licensebar.sh b/licensebar.sh
index 8068213..f258078 100755
--- a/licensebar.sh
+++ b/licensebar.sh
@@ -1,12 +1,12 @@
#!/bin/sh -e
-# Usage: ./licensebar.sh
+# Usage: ./licensebar.sh > licensebar.svg
# Yes, this is cursed, but it was the simplest way I could think of automating this. ~ahill
-COPYLEFT_COUNT=$(grep "| Copyleft " README.md | wc -l)
-SLIGHTLY_COPYLEFT_COUNT=$(grep "| Slightly Copyleft " README.md | wc -l)
-FREE_COUNT=$(grep "| Free " README.md | wc -l)
-MIXED_COUNT=$(grep "| Mixed " README.md | wc -l)
-SLIGHTLY_COPYRIGHT_COUNT=$(grep "| Slightly Copyright |" README.md | wc -l)
-COPYRIGHT_COUNT=$(grep "| Copyright " README.md | wc -l)
+COPYLEFT_COUNT=$(grep "| Copyleft " SOFTWARE.md | wc -l)
+SLIGHTLY_COPYLEFT_COUNT=$(grep "| Slightly Copyleft " SOFTWARE.md | wc -l)
+FREE_COUNT=$(grep "| Free " SOFTWARE.md | wc -l)
+MIXED_COUNT=$(grep "| Mixed " SOFTWARE.md | wc -l)
+SLIGHTLY_COPYRIGHT_COUNT=$(grep "| Slightly Copyright |" SOFTWARE.md | wc -l)
+COPYRIGHT_COUNT=$(grep "| Copyright " SOFTWARE.md | wc -l)
BAR_BORDER=3
BAR_HEIGHT=16
diff --git a/licensebar.svg b/licensebar.svg
index 98c5e5e..5aea0f6 100644
--- a/licensebar.svg
+++ b/licensebar.svg
@@ -1,9 +1,9 @@
diff --git a/sources/libffi/libffi.spec b/sources/libffi/libffi.spec
new file mode 100644
index 0000000..43a129b
--- /dev/null
+++ b/sources/libffi/libffi.spec
@@ -0,0 +1,13 @@
+# Maintainer: Alexander Hill
+SRC_HASH="f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc"
+SRC_NAME="libffi"
+SRC_URL="https://github.com/libffi/libffi/releases/download/v3.5.2/libffi-3.5.2.tar.gz"
+SRC_VERSION="3.5.2"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd libffi-$SRC_VERSION/
+ ./configure $TT_AUTOCONF_COMMON --disable-static
+ make -O -j $TT_PROCS
+ make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+}
\ No newline at end of file
diff --git a/sources/libyaml/libyaml.spec b/sources/libyaml/libyaml.spec
new file mode 100644
index 0000000..28ded2b
--- /dev/null
+++ b/sources/libyaml/libyaml.spec
@@ -0,0 +1,13 @@
+# Maintainer: Alexander Hill
+SRC_HASH="c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
+SRC_NAME="libyaml"
+SRC_URL="https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz"
+SRC_VERSION="0.2.5"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd yaml-$SRC_VERSION/
+ ./configure $TT_AUTOCONF_COMMON --disable-static
+ make -O -j $TT_PROCS
+ make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+}
\ No newline at end of file
diff --git a/sources/liquid/liquid.spec b/sources/liquid/liquid.spec
new file mode 100644
index 0000000..27eef11
--- /dev/null
+++ b/sources/liquid/liquid.spec
@@ -0,0 +1,19 @@
+# Maintainer: Alexander Hill
+SRC_HASH="f3314240c846140d7be742e405882302f01dbecc51b8dd44d97cdad62d978f03"
+SRC_NAME="liquid"
+SRC_URL="https://github.com/Shopify/liquid/archive/refs/tags/v5.11.0.tar.gz"
+SRC_VERSION="5.11.0"
+
+SRC_FILENAME="$SRC_NAME-$SRC_VERSION.tar.gz"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd liquid-$SRC_VERSION/
+ gem build liquid.gemspec
+ gem install \
+ --install-dir $TT_INSTALLDIR/lib/ruby/gems/4.0.0 \
+ --local \
+ --ignore-dependencies \
+ --verbose \
+ ./liquid-$SRC_VERSION.gem
+}
\ No newline at end of file
diff --git a/sources/ruby/ruby.spec b/sources/ruby/ruby.spec
new file mode 100644
index 0000000..bdef6e7
--- /dev/null
+++ b/sources/ruby/ruby.spec
@@ -0,0 +1,16 @@
+# Maintainer: Alexander Hill
+SRC_HASH="3924be2d05db30f4e35f859bf028be85f4b7dd01714142fd823e4af5de2faf9d"
+SRC_NAME="ruby"
+SRC_URL="https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.1.tar.gz"
+SRC_VERSION="4.0.1"
+
+build() {
+ tar xf ../$SRC_FILENAME
+ cd ruby-$SRC_VERSION/
+ # NOTE: Yes, Ruby has a configuration script already, but it lacks the
+ # --enable-year2038 option, so we rebuild it. ~ahill
+ ./autogen.sh
+ ./configure $TT_AUTOCONF_COMMON --enable-year2038 --without-gcc
+ make -O -j $TT_PROCS
+ make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
+}
\ No newline at end of file