Endless OS is an operating system designed to fulfill the demands of underserved users in the developing world. For many of our users, Endless will be the first computer they will ever own. While developing the OS, ground research informed every choice we made in the design. Our research led us to the conclusion that extreme simplicity is key, and that mantra has become the basis of our design ethos.
Most of our users live in places where access to information is restricted, and computers are prohibitively expensive. The technology industry rarely considers new solutions to address this market’s needs. Imagine designing a music player for someone who doesn’t know that a right-pointing triangle means Play, nor know what a ‘playlist’ is. Perhaps the only music-playing equipment that person has ever owned is a radio. Or nothing at all.
We aim to solve these challenges throughout Endless OS.
Not your typical Linux distribution. We don’t use rpm, apt, or any other packaging system. We use a read-only root file system managed by OSTree with application bundles overlaid on top. We have a different target user. Most desktop Linux distributions are oriented towards tech-savvy users and developers.
Simplicity is the key, so we carefully pick and choose the best applications available for our users.
A number of core technologies underlie our OS, in particular the Linux kernel, OSTree, systemd, GNU, X, GNOME, and Xapian.
Open source philosophy
We embrace the principles of free and open-source software and acknowledge a great debt to it in creating Endless OS. Whenever we can, we work upstream and contribute back to open source. Although not everything we create can be open source, we release most components of our system under free software licenses. Many members of our core team have a long history with open source projects, and continue to be an active part of those communities.
You might notice that we maintain forks of many upstream packages. In most cases, this is because we submit our patches upstream and backport them to the stable versions that we ship.
Endless OS incorporates a lot of software. We have created a number of projects and released them under free and open licenses. We have also made a number of changes to upstream projects.Check our GitHub page for a complete list ›
- Linux Kernel — The Linux kernel shipped on the Endless computer.
- Linux for Amlogic Meson — We host a community effort around the Linux kernel on Amlogic Meson SoCs. This is the chipset used on the ODROID-C1. The code includes the GitHub projects linux-meson and u-boot-meson.
- Epson Inkjet Printer — Collection of various Epson printer drivers in one source tree.
- Composite Mode — Adjusts settings when connected to a composite TV.
- Metrics API — Lightweight API for recording user metrics from apps and system services.
- Event Recorder Daemon — Saves recorded user metrics and transmits them in small batches when there’s an internet connection.
- Metrics Instrumentation Daemon — Records information about the system, such as performance info.
- Phone Home — Anonymous user counter.
Installing and Updating
- Installer — Installs dual boot Endless OS on a Windows system.
- System Updater — Driver for updates to our OSTree-based core system.
- Config Printer — Automatically downloads and installs printer drivers from trusted sources (e.g. OpenPrinting.org).
- Customer Support — Support scripts to assist users of Endless OS.
- Google Chrome Helper — Downloads and installs the Google Chrome browser.
- Google Chrome App — Launches Google Chrome once it’s downloaded.
- Chrome Plugin Updater — Downloads and installs Google Chrome Flash and DRM plugins.
- Gates — Detects unsupported Windows software and Debian/RPM packages.
Endless OS Infrastructure
Offline Content System
- Knowledge Library — Components for building offline content apps.
- Knowledge Services — System services used by offline content apps.
- Xapian GLib — GObject bindings for the Xapian database library.
- Xapian Bridge — Lightweight HTTP server for accessing Xapian databases.
- Endless NDN — Data distribution based on NDN.
- Shard — Packed data format for offline content.
- GH Fetch — Downloader, archiver, and updater for your GitHub repos. Like BackHub, only free!
- XDelta3 Dir Patcher — Tool for generating XDelta3 diff packages and applying them.
- XDelta3 for Ruby — Ruby bindings for the XDelta3 tool.
- Coding Shell Extensions — Various GNOME Shell extensions for developers.
- Difflint — Linter that will examine only new changes as you commit them.
Core Endless OS
For our core user experience, we use a lot of GNOME technologies. Since we are targeting a different set of users than the upstream GNOME project, we have made some fairly fundamental changes to the experience, and so we maintain permanent forks of these.
- Desktop — A heavily customized version of the GNOME desktop (GNOME Shell) powers the Endless OS desktop experience.
- Help Center — Our user documentation is based on the GNOME desktop’s documentation and help viewer Yelp. You can find the code in these four GitHub projects: yelp yelp-xsl gnome-user-docs gnome-getting-started-docs.
- Desktop theme — The desktop theme is a heavily modified version of Adwaita, the GNOME desktop theme.
- Exploration Center Content — Content for the Exploration Center.
- Speedwagon — Splash screen shown when launching applications.
- Shell Content and GNOME Software Data — Contains data about applications in the App Center and links in the Exploration Center.
- Meta — Controls what packages are part of Endless OS.
- Social Bar — Facebook as a sidebar on the desktop.
- Media — Sample media included with Endless OS.
- Keyring — Keys used for verifying OSTree updates.
Old App Store
Other open-source software
We maintain some repositories with build instructions for making popular Linux software into Flatpak packages:
- Android Studio
- Arduino IDE
- Electron apps (electron-flatpak-base-app, flatpak-bundler, electron-installer-flatpak, grunt-electron-installer-flatpak)
Here are links to all the other open-source packages we’ve customized, ranging from the Linux kernel to games. These customizations are not as far-reaching as above, and the majority of these patches already exist upstream. We backport them to the stable releases that we use, and so we maintain these custom forks to show what exactly goes into our system.
accountsservice arcanist base-files base-passwd chromium-browser debhelper dh-waf dpkg emeus flatpak flocker-openssl flocker-rest-client gdm gjs glib gnome-bluetooth gnome-builder gnome-control-center gnome-desktop gnome-initial-setup gnome-session gnome-settings-daemon gnome-software graphene grub gtk jruby-pgp libgsystem libphutil linux marathon-lb megaglest mesos-deb-packaging ModemManager mutter nautilus ndn-cxx NFD open-build-service ostree phabricator plymouth pulseaudio rufus shim snipe-it systemd system-config-printer totem u-boot WebKit xapian-core xdg-user-dirs xdg-user-dirs-gtk xf86-video-armsoc xf86-video-intel
For almost all other packages and any customizations we may have applied to them, you can download their sources from our repository:
$ wget http://sources.endlessm.com/debian/keys/endless-sources-key.pub.asc
$ sudo apt-key add endless-sources-key.pub.asc
$ echo "deb-src http://sources.endlessm.com/debian eos3 core endless" \
| sudo tee /etc/apt/sources.list.d/pub-sources.list
$ sudo apt-get update
$ sudo apt-get source
The signature key ID for the repository listed above should be DC063E08.
All trademarks are the property of their respective owners.