Skip to content
This repository has been archived by the owner on Jun 11, 2022. It is now read-only.

Latest commit

 

History

History
157 lines (115 loc) · 6.95 KB

README.md

File metadata and controls

157 lines (115 loc) · 6.95 KB

tt

GitHub Liberapay receiving Build Status builds.sr.ht status Travis (.org) Coveralls github CodeFactor Codacy Badge Total alerts Language grade: C/C++ Sonar Quality Gate Sonar Violations (short format) Sonar Tech Debt CII Best Practices

tt is an init and service manager inspired by 66, s6 suite and deamontools.

tt offers a valid alternative to systemd for PID 1 and service management. It uses the supervision to manage long running programs (deamons), log everything to files (no binary log interface) and provides an easy to use command line interface.

The services must be compiled before being able to run; this is the biggest difference with the most used service managers (systemd, OpenRC, runit), which instead are based on runtime services.

Planned features

  • Support for different types of services: oneshot, deamons and bundles
  • Predictable dependencies at build time
  • Configurable parameters for services (i.e. change command line arguments without editing the service file)
  • Asynchronous start of the services (no run levels)
  • Log everything into files, no syslog needed
  • Low footprint
  • Target desktop and servers
  • Conditional dependencies for complex services (such as web apps)
  • Provides sane defaults

Getting started

Dependencies

tt supports the following compilers:

  • gcc >= 10.0
  • clang >= 9.0

tt depends on the following libraries:

* if these libraries are not found in the system, meson will download and use a local copy.

Building

To build tt run the following commands:

$ meson build
$ ninja -C build

Testing

To run the tt test suite, execute the following commands:

$ meson -Dtests=enabled build
$ ninja -C build test

Contributing

Feel free to contribute by opening a Pull Request! Have a look at Github Issues for the current development tasks.

Formatting your changes

tt follows the Google C++ Style Guide and uses clang-format to apply this style. If you have clang-format installed, run the following command to format your changes:

Continuous Integration

tt is tested under 3 different CI platforms:

  • Github Actions, testing a meson unity build using a compiler matrix of different clang and gcc versions. address and undefined sanitizers are enabled.
  • Travis CI, sending coverage to Coveralls and analyzing the build with SonarCloud.
  • build.sr.ht, testing tt on various systems and architectures.

All Pull Requests must pass the CI and the static analyzers' checks before being accepted.

$ ninja -C build clang-format

Community

  • #tt IRC channel on freenode.

Develoment updates

tt development updates are posted on @danyspin97 blog.

Credits

tt is being developed by @danyspin97 and @Cogitri.

Thanks to @pac85 for its contributions and to all the people that shared ideas for tt.

Credits also to:

  • @skarnet for his work on s6 and his awesome explanations about UNIX inner workings and design
  • @obarun for his work on 66 and most of the ideas that made the foundation of tt

Third-party libraries included

License

tt is licensed under the GPL-3.0 License - see LICENSE file for more details.