Kolaborativno pisanje operativnog sistema

Opis sistema:

  • ručno napisan kod od nule
  • C++ i asm
  • SysV ili POSIX-compliant
  • za RISC arhitekturu (BONUS: retro arhitektura poput PowerPC)
  • dobro i opširno dokumentovan, kako bi svi mogli nešto da nauče i lako da se uključe

Kriterijum uspeha:

  • podizanje sistema na fizičkom hardveru i pokretanje izabranog user-space programa

Cilj projekta:

  • sticanje dubinskih znanja u opuštenoj atmosferi

Što se tiče planiranja daljeg rada i refleksije nad urađenim, predlažem jedan sastanak mesečno uživo.

Što se tiče ogranizacije zadataka, možemo koristiti Gitea Projects.

Kako vam se čini ova ideja? Ima li nekih dodatnih sugestija?

3 Likes

Ja imam pitanje (zbog znatiželje, ne zbog toga što već zastupam neki stav):

Zašto C++, a ne običan C?

C je svakako odličan izbor jezika za pisanje kernela. S druge strane, argumenti za C++ mogu biti:

  • upravljanje memorijom je „više idiomatski“ korišćenjem konstruktora i destruktora
  • generičko programiranje (iako sam svestan da je to moguće postići i pomoću običnog C-a, ali izokola)
  • lično nikad nisam do kraja savladao i razumeo sve detalje C++20 standarda, pa je možda ovo dobra prilika za to

Svakako treba da promislimo šta je zapravo bolje, i to iz perspektive šta odgovara većini ljudi koji bi se aktivno uključili.

Ja bih da budem ukljucen u ovo. Svidja mi se jako kriterijum uspeha i cilj.

Nemam neke sugestije, posto se ne razumem bas u operativne sisteme trenutno. Moracu malo da istrazim prvo.

Svakako bi valjalo poceti od toga da se uzivo ili asinhrono generise neki dokument koji bi sadrzao u najgeneralnijim crtama module koji treba da postoje, kako bi imali bar neki pravac.

Tipa, osnovni delovi operativnog sistema, odakle uopste poceti.

Evo ja sam uzeo ovo da gledam, ako nekoga zanima jos. Prvi video je delovao lepo, pa cu nastaviti sa ovim serijalom:

1 Like

Evo jednog početničkog teksta koji mi je rasvetlio neke stvari o odnosu procesora i OS-a.

1 Like

Evo i wiki koji je pomenuo @sborovic

Napraviću repozitorijum uskoro, pa možemo da napravimo tamo spisak korisnih sajtova i literature, da imamo sve na jednom mestu.

Pade mi na pamet jutros jedna ideja: da zapisujemo u neki dokument korak po korak kako smo razmišljali i šta smo na kraju uradili.

Na primer, korak br. 0 može biti: „Napraviti bootable program koji ispisuje ‘Hello World’“, a korak br. 1: „Umesto ‘Hello World’, ispisati sadržaj registara“, i tako dalje.

Takođe, ima li predloga vezano za ime?

dmzOS (mislim da je očigledno zašto)
puzzleOS (i ovo mislim da ne treba da objašnjavam)
legOS (Lego kockice)
bapOS (bits and pieces)
antOS (radimo kao mravi :smile:)

Vaš red.

  • krovOS ->> krOS
  • roofOS

Još malo linkova: serenityOS, Podcast With Andreas Kling

1 Like

Ja sam definitivno za sto vise zapisivanja, jer necemo svi raditi u svakom trenutku na svakom delu.

Licno bi mi fokus bio bas na ucenju celokupnog OS-a, pa bi to bas bilo zgodno.

Poskidao sam i neke knjige, pa cu nakaciti sve sto imam za sada u repo, kad bude napravljen.

Hajde ovako, da glasamo između ova dva imena (u želji da izbegnemo preterani bikeshedding):

  • dmzOS
  • krOS
0 voters

Takođe, hajde da razmislimo još malo o izboru arhitekture… Ako želimo da lakše savladamo instrukcije (ali uz, potencijalno, manju dostupnost dokumentacije) onda možemo da izaberemo PowerPC. S druge strane, ako želimo da steknemo znanja koja bi više bila primenljiva u realnom životu i poslu danas, onda je možda bolji izbor amd64.

  • PowerPC
  • amd64
0 voters

Samo malo? Da li si mislio na baš na amd64? Pošto to nije RISC. Meni ne smeta, čisto želim da proverim pošto u naslovu teme piše RISC.

Da, znam da je CISC, ali kad sam uzeo da istražujem malo za PowerPC shvatio sam da su apsolutno svi tutorijali na ovu temu za amd64, što je možda i logično. :slight_smile:

Okej, nakon pozamašnog istraživanja ove teme, smatram sledeće:

  • koristiti C umesto C++: istovremeno savladavati detalje C++20 standarda i praviti OS je ipak previše; takođe, kada se već ide low-level, mislim da je ovo zapravo odlična prilika da se neke stvari iz C+±a (npr. nasleđivanje i virtualne funkcije) implementiraju izokola u C-u i tako produbi razumevanje tih mehanizama
  • amd64 umesto bilo koje druge: stečena znanja o amd64 će moći da se upotrebe i posle ovog projekta; takođe, ima mnogo više onlajn resursa o amd64

Napravio sam repozitorijum na Gitei i krenuću polako sa pripremom (verovatno Dockerizovanog) razvojnog okruženja i pisanja propratne dokumentacije. Mislim da je najbolje da dokumentacija bude na engleskom kako bi projekat evenutalno mogao da dopre do većeg broja ljudi.

Dalju diskusiju (via issues) možemo preneti tamo, ako se slažete?

1 Like

Ja imam komentar na licencu, zasto je MIT ? MIT daje mogucnost da neko taj softver iskoristi i zatvori. Predlazem AGPL licencu koja osigurava da svako izmena koda mora biti data uz sam program.

A inace mogu da ulecem u neke stvari tokom projekta koliko mogu i znam, samo ne mogu da se obavezem na kontinuirani rad na njemu.

Slazem se, MIT licenca ce samo biti iskoristena od velikih kompanija kao besplatan rad. Nema nikakvog razloga da se stavlja MIT umesto AGPL osim ako namerno ne zelimo da radimo za kompanije, sto nije u duhu Decentrale.

Promenio sam licencu u AGPL-3.0, dobra opservacija. Sada vidim i da su se ljudi uključili u glasanje za ime i da je više ljudi glasalo za dmzOS, pa ću promeniti i ime.

1 Like

Drago mi je da sam malo zainteresovao ljude za ovaj projekat. :slight_smile: Postavljen je repozitorijum i može da se krene. Ja ću početi da radim na kodiranju od sutra, imam već neke ideje…

Ako neko želi da stupi u kontakt sa mnom vezano za kolaboraciju, slobodno mi napišite poruku ovde ili na XMPPu. Pozdrav!

1 Like

Javljam se!
Krenuo sam letimicno da citam knjigu koju si stavio u wiki, verovatno je kraja radne nedelje zavrsavam.
Jel treba da forkujem projekat ili postoji neki drugi nacin?

2 Likes