SerenityOS - 90년대 GUI로 구현한 Unix-like OS
(serenityos.org)- 1990년대말 윈도우/맥의 UI와 2000년대말의 *nix 코어를 합친 느낌의 OS
- 1인 프로젝트로 시작되어 3년동안 커뮤니티의 지원으로 성장중
- 커널부터 웹브라우저/IDE 까지 모두 "외부 라이브러리 없이 밑바닥부터 손수 개발"
- 시스템 자체는 Serenity C++ 로 개발됨.
ㅤ→ 자체 표준 라이브러리를 가진 최신 C++의 변형
Repo : https://github.com/SerenityOS/serenity
- 커널 기능
ㅤ→ 선점형 멀티스레딩 지원하는 x86(32bit) / x86_64(64bit) 커널
ㅤ→ IPv4 스택 (ARP, TCP, UDP, ICMP)
ㅤ→ ext2 파일 시스템
ㅤ→ POSIX signal 지원
ㅤ→ /proc 파일시스템 지원
- 시스템 서비스
ㅤ→ Launch/session daemon (SystemServer)
ㅤ→ Compositing window server (WindowServer)
ㅤ→ Text console manager (TTYServer)
ㅤ→ DNS client (LookupServer)
ㅤ→ Network protocols server (RequestServer and WebSocket)
ㅤ→ Software-mixing sound daemon (AudioServer)
ㅤ→ Desktop notifications (NotificationServer)
ㅤ→ HTTP server (WebServer)
ㅤ→ Telnet server (TelnetServer)
ㅤ→ DHCP client (DHCPClient)
- 라이브러리
ㅤ→ C++ templates and containers (AK)
ㅤ→ Event loop and utilities (LibCore)
ㅤ→ 2D graphics library (LibGfx)
ㅤ→ OpenGL 1.x compatible library (LibGL)
ㅤ→ GUI toolkit (LibGUI)
ㅤ→ Cross-process communication library (LibIPC)
ㅤ→ HTML/CSS engine (LibWeb)
ㅤ→ JavaScript engine (LibJS)
ㅤ→ Markdown (LibMarkdown)
ㅤ→ Audio (LibAudio)
ㅤ→ Digital Signal Processing/Synthesizer Chains (LibDSP)
ㅤ→ PCI database (LibPCIDB)
ㅤ→ Terminal emulation (LibVT)
ㅤ→ Out-of-process network protocol I/O (LibProtocol)
ㅤ→ Mathematical functions (LibM)
ㅤ→ ELF file handling (LibELF)
ㅤ→ POSIX threading (LibPthread)
ㅤ→ Higher-level threading (LibThreading)
ㅤ→ Transport Layer Security (LibTLS)
ㅤ→ HTTP and HTTPS (LibHTTP)
ㅤ→ IMAP (LibIMAP)
- Userland 기능들
ㅤ→ Unix-like libc and userland
ㅤ→ Shell with pipes and I/O redirection
ㅤ→ On-line help system (both terminal and GUI variants)
ㅤ→ Web browser (Browser)
ㅤ→ C++ IDE (HackStudio)
ㅤ→ Desktop synthesizer (Piano)
ㅤ→ E-mail client (Mail)
ㅤ→ Various desktop apps & games
ㅤ→ Color themes
취미로 만드는 OS 중에서 가장 독특한 것 같아요. 저 수많은 Library 와 앱들을 구현해서 넣었다는게 놀랍기도 하고요.
원작자인 Andreas Kling이 2018년에 3개월간의 약물 중독 재활프로그램을 마치고, 자기 시간이 많아져서 시간을 보내기 위해 시작한 프로젝트인데요.
그는 이전에는 애플과 노키아에서 WebKit 개발을 하던 개발자였어요. 애플에서 일했던 경험때문에 외부 패키지 없이 모든걸 직접 개발하는 것을 지향하고 있다고 합니다.
올해 5월부터는 이제 후원금이 충분히 많아져서, 풀타임으로 SerenityOS를 개발하고 있습니다.
깃헙 스폰서를 통해서 현재 232명이 후원하고 있네요. https://github.com/sponsors/awesomekling
Patreon 에는 279명이구요 https://www.patreon.com/serenityos
컨트리뷰터가 500명이 넘었고, 유튜브 채널에도 매달 OS 업데이트를 올리는데요
https://youtube.com/playlist/?list=PLMOpZvQB55bfp6ykOLayLqLrjcpv_Sw3P
2019년 초반엔 10분 단위였는데, 요즘은 30~40분 분량으로 업데이트가 길어졌어요.
디아블로 1을 리버스 엔지니어링 한 Devilution을 SerenityOS에서 돌아가게 한시간만에 포팅한 영상도 유명합니다.
https://github.com/diasurgical/devilution
https://www.youtube.com/watch?v=ZOzZ8R4gphE