DEV Community

Cover image for 7 Open Source Projects You Should Know - C Edition ✔️
Domenico Tenace for This is Learning

Posted on • Originally published at Medium

7 Open Source Projects You Should Know - C Edition ✔️

Overview

Hi everyone 👋🏼​
In this article, I'm going to look at seven OSS repository that you should know written in C, interesting projects that caught my attention and that I want to share.
Let's start 🤙🏼​


1. LVGL

LVGL is the most popular open source embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's supported by industry leading vendors and projects like Arm, STM32, NXP, Espressif, Nuvoton, Arduino, RT-Thread, Zephyr, NuttX, Adafruit and many more.
Amazing and beautiful project! 😎

GitHub logo lvgl / lvgl

Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.

English | 中文 | Português do Brasil | 日本語

 

 

Light and Versatile Graphics Library

 

   

Website | Docs | Forum | Demos | Services

📒 Overview

Mature and Well-known
LVGL is the most popular free and open source embedded graphics library to create beautiful UIs for any MCU, MPU and display type. It's supported by industry leading vendors and projects like  Arm, STM32, NXP, Espressif, Nuvoton, Arduino, RT-Thread, Zephyr, NuttX, Adafruit and many more.

Feature Rich
It has all the features to create modern and beautiful GUIs: 30+ built-in widgets, a powerful style system, web inspired layout managers, and a typography system supporting many languages. To integrate LVGL into your platform, all you need is at least 32kB RAM and 128 kB Flash, a C compiler, a frame buffer, and at least an 1/10 screen sized buffer for rendering.

Services
Our team is ready to help you with graphics design, UI…

2. systemd

systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system. 🤖

GitHub logo systemd / systemd

The systemd System and Service Manager

Systemd

System and Service Manager

Semaphore CI 2.0 Build Status
Coverity Scan Status
OSS-Fuzz Status
CIFuzz
CII Best Practices
CentOS CI - CentOS 9
CentOS CI - Arch
CentOS CI - Arch (sanitizers)
Fossies codespell report
Weblate
Coverage Status
Packaging status
OpenSSF Scorecard

Details

Most documentation is available on systemd's web site.

Assorted, older, general information about systemd can be found in the systemd Wiki.

Information about build requirements is provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the Code Map for information about this repository's layout and content.

Please see the Hacking guide for information on how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel

Stable branches with backported patches are available in the stable repo.

We have a…

3. DOOM Retro

Who doesn't know the successful DOOM video game series?
DOOM Retro is the classic, refined DOOM source port for Windows PC. It represents the game in all its dark and gritty, unapologetically pixelated glory. 👹

GitHub logo bradharding / doomretro

The classic, refined DOOM source port. For Windows PC.


DOOM Retro is the classic, refined DOOM source port for Windows PC. It represents how I like my DOOM to be today, in all its dark and gritty, unapologetically pixelated glory. I have strived to craft a unique and cohesive set of compelling features, while continuing to uphold my respect for that classic, nostalgic DOOM experience many of us, after all this time, still hold dear.

Open the DOOM Retro Wiki for more information.





DOOM Retro is Copyright © 2013–2024 by Brad Harding. All rights reserved. Coded with love in Western Sydney, Australia. DOOM Retro is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the license, or (at your option) any later version. DOOM Retro is distributed in the hope that it will be useful, but

4. OBS Studio

OBS Studio needs no introduction: the famous screen recording and live streaming software is open source and written in C! 📹

GitHub logo obsproject / obs-studio

OBS Studio - Free and open source software for live streaming and screen recording

OBS Studio <https://obsproject.com>

OBS Studio Build Status - GitHub Actions OBS Studio Translation Project Progress OBS Studio Discord Server

What is OBS Studio?

OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently.

It's distributed under the GNU General Public License v2 (or any later version) - see the accompanying COPYING file for more details.

Quick Links

Contributing

5. raylib

raylib is a simple and easy-to-use library to enjoy videogames programming.
It is highly inspired by Borland BGI graphics library and by XNA framework and it's especially well suited for prototyping, tooling, graphical applications, embedded systems and education. 🕹

GitHub logo raysan5 / raylib

A simple and easy-to-use library to enjoy videogames programming

raylib is a simple and easy-to-use library to enjoy videogames programming.

raylib is highly inspired by Borland BGI graphics lib and by XNA framework and it's especially well suited for prototyping, tooling, graphical applications, embedded systems and education.

NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no debug button... just coding in the most pure spartan-programmers way.

Ready to learn? Jump to code examples!



GitHub Releases Downloads GitHub Stars GitHub commits since tagged version GitHub Sponsors Packaging Status License

Discord Members Reddit Static Badge Youtube Subscribers Twitch Status

Windows Linux macOS WebAssembly

CMakeBuilds Windows Examples Linux Examples

features

  • NO external dependencies, all required libraries are bundled into raylib
  • Multiple platforms supported: Windows, Linux, MacOS, RPI, Android, HTML5... and more!
  • Written in plain C code (C99) using PascalCase/camelCase notation
  • Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES 2.0, ES 3.0)
  • Unique OpenGL abstraction layer (usable as standalone module): rlgl
  • Multiple Fonts formats supported (TTF, OTF, Image fonts, AngelCode fonts)
  • Multiple texture formats supported, including compressed formats (DXT, ETC, ASTC)
  • Full

6. Celluloid

Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. It interacts with mpv via the client API exported by libmpv, allowing access to mpv's powerful playback capabilities.
It is an alternative of VLC. 🧨

GitHub logo celluloid-player / celluloid

A simple GTK+ frontend for mpv

Celluloid

Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. Celluloid interacts with mpv via the client API exported by libmpv, allowing access to mpv's powerful playback capabilities.

Screenshot

Repository Mirror: https://codeberg.org/celluloid-player/celluloid

Dependencies

  • appstream-glib (build)
  • pkg-config (build)
  • gcc (build)
  • glib >= 2.66
  • gtk >= 4.10
  • libadwaita >= 1.4.0
  • mpv >= 0.32
  • epoxy
  • lua (optional)
  • youtube-dl (optional)

Installation

Packages

Packaging status

Ubuntu users can use this PPA to get more up-to-date versions of Celluloid.

Flatpak

Flatpak packages support multiple distributions and are sandboxed. Flatpak 0.9.5+ is recommended for best integration.

Stable releases are hosted on Flathub:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub io.github.celluloid_player.Celluloid
Enter fullscreen mode Exit fullscreen mode

Snap

Stable releases are hosted on Snapcraft:

sudo snap install celluloid
Enter fullscreen mode Exit fullscreen mode

Source code

Run the following command in the source code directory to build and install:

meson setup build && cd build && ninja && sudo ninja install
Enter fullscreen mode Exit fullscreen mode

Usage

Opening files

There are 4 ways…

7. finit

finit (Fast init for Linux) is an alternative to SysV init and systemd, originally reverse engineered from the EeePC. 🪛

GitHub logo troglobit / finit

Fast init for Linux. Cookies included

License Badge GitHub Status Coverity Status Finit: Fast Init

Introduction

Fast init for Linux systems. Reverse engineered from the EeePC fastinit by Claudio Matsuoka — "gaps filled with frog DNA …"

Alpine screenshot
Figure 1: Screenshot of Finit booting Alpine Linux (HowTo).

Features include:

  • Runlevels, defined per service
  • One-shot tasks, services (daemons), or SysV init start/stop scripts
  • Runparts and /etc/rc.local support
  • Process supervision similar to systemd
  • Sourcing environment files
  • Conditions for network/process/custom dependencies
  • Readiness notification; PID files (native) for synchronizing system startup, support for systemd sd_notify(), or s6 style too
  • Limited support for tmpfiles.d(5) (no aging, attributes, or subvolumes)
  • Pre/Post script actions
  • Rudimentary templating support
  • Tooling to enable/disable services
  • Built-in getty
  • Built-in watchdog, with support for hand-over to watchdogd
  • Built-in support for Debian/BusyBox /etc/network/interfaces
  • Cgroups v2, both…

Conclusion

This list lists seven open source projects that are worth checking out, either to use them or even to contribute🖖
Happy coding!✨


Hi👋🏻
My name is Domenico, software developer passionate of Vue.js framework, I write article about it for share my knowledge and experience.
Don't forget to visit my Linktree to discover my projects 🫰🏻

Linktree: https://linktr.ee/domenicotenace

Follow me on dev.to for other articles 👇🏻

If you like my content or want to support my work on GitHub, you can support me with a very small donation.
I would be grateful 🥹

Top comments (2)

Collapse
 
jangelodev profile image
João Angelo

Hi Domenico Tenace ,
Top, very nice and helpful !
Thanks for sharing.

Collapse
 
dvalin99 profile image
Domenico Tenace

Hi @jangelodev
Thanks for the feedback 🤗
It was a pleasure ✨