Developer
Information

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.

Design Constraints

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.

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.

Our Software

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 ›

Hardware

Metrics Kit

  • 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.

Installing and Updating

Endless OS Infrastructure

Data Access

  • Xapian GLib — GObject bindings for the Xapian database library.
  • Xapian Bridge — Lightweight HTTP server for accessing Xapian databases.

Developer Tools

  • 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. Part of our app updater.
  • XDelta3 for Ruby — Ruby bindings for the XDelta3 tool.

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.

Other open-source software

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 base-files base-passwd debhelper dpkg gdm gjs glib gnome-bluetooth gnome-control-center gnome-desktop gnome-initial-setup gnome-session gnome-settings-daemon gtk jasmine jruby-pgp libgsystem libsoup linux megaglest ModemManager mutter nautilus ostree plymouth pulseaudio systemd system-config-printer u-boot xdg-user-dirs xdg-user-dirs-gtk xf86-video-armsoc

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.