Skip to content

Commit

Permalink
Merge pull request #6 from denizbaba0/master
Browse files Browse the repository at this point in the history
docs go brr
  • Loading branch information
orhnk authored Dec 14, 2023
2 parents b2b8a41 + 09ed036 commit 1422c24
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 24 deletions.
47 changes: 27 additions & 20 deletions docs/tubitak/headers/01-OZET.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,52 @@
> Özetin tamamı 150-250 kelime arasında olmalıdır. Proje özetinde, çalışmanın ayrıntılarından, yorumlardan ve kaynaklardan bahsedilmez. Özette projenin amacı, kullanılan yöntem, yapılan gözlem ve elde edilen temel bulgular ve sonuçlardan birkaç cümle ile bahsedilir. Ayrıca proje özetinin altına, proje konusunu genel olarak yansıtan en fazla beş kelimeden oluşan anahtar kelimeler verilir. İdeal olan başlarken taslak bir özet oluşturup, çalışma bittiğinde proje raporunun içeriğine uygun bir şekilde özeti güncellemektir.
Son yıllarda dijital dünya adına geliştirilen teknolojiler sayesinde program geliştirmek
çeşitli yollarla kolaylaştırılmıştır. Örneğing eskiden program geliştirmek
çeşitli yollarla kolaylaştırılmıştır. Örneğin eskiden program geliştirmek
için [vi](https://en.wikipedia.org/wiki/Vi_(text_editor)) gibi metin editörleri kullanılırken günümüzde
[JetBrains](https://www.jetbrains.com/) IDE'leri gibi LSP protokolleri,
ileri seviye düzenleme, kod üretimi gibi gelişmiş araçlar kullanılmaktadır.
ileri seviye düzenleme, kod üretimi gibi araçlar kullanılmaktadır.

Bu gelişmelerden etkilenen en yaygın araçlardan birisi paket yöneticileridir.
Amatör ya da profesyonel her yazılım geliştiricisinin kullandığı paket yöneticileri,
herhangi bir programın kurulumu, güncellenmesi, kaldırılması gibi işlemleri otomativize eder.
herhangi bir programın kurulumu, güncellenmesi, kaldırılması gibi işlemleri kolaylaştırır.

Örneğin python programlama dilinin standart paket yöneticisi "Preffered Installer Program" (PIP)
python ile kod yazmış olan herkesin sıkça kullandığı bir programdır.
python ile kod yazan olan herkesin sıkça kullandığı bir programdır.

Paket yöneticilerinin sağladıkları faydalar sebebiyle günümüzde pek çok işletim sistemine uyarlanmış
tiplere ayrılmaktadır.
tipleri bulunmaktadır.

Farklı paket yöneticilerinin farklı komutları, farklı dökümantasyonları, farklı paket kayıt sistemleri
hatta farklı paket adlandırma standartları olması kullanıcıların farklı işletim sistemleri arasında geçiş
Farklı paket yöneticilerinin farklı komutları, farklı dökümanları, farklı paket kayıt sistemleri
hatta farklı paket adlandırma standartları olması, kullanıcıların farklı işletim sistemleri arasında geçiş
yaparken karşılaştıkları sorunlardan birisidir. Bunun yanında manuel indirilen yazılımlar için bağımlılık
yönetimi, güncelleme, kaldırma gibi işlemler kullanıcılar için zorluklar içermektedir.

Özellikle sistemler arası paket adlandırma sistemleri arasındaki farklılıklar kullanıcıların indirmek istedikleri
paketleri bulmalarını zorlaştırmaktadır. Örneğin APT paket Yöneticisini kullanan bir sistemde çok yaygın olarak kullanılan yapılandırma
sistemi [`make`](https://en.wikipedia.org/wiki/Make_(software)) paketinin adı `make` iken Nix paket yöneticisini kullanan bir sistemde
aynı paketin adı `gnumake`'dir. Bu gibi durumlar program geliştirirken hız ve üretkenlik kaybına sebep olur.

Aynı şekilde [dpkg](https://en.wikipedia.org/wiki/Dpkg) temmeli [`APT`](https://en.wikipedia.org/wiki/APT_(software)) paket yöneticisi için kütüphane paketleri için adlandırma standardı
Bu bağlamda [dpkg](https://en.wikipedia.org/wiki/Dpkg) temmeli [`APT`](https://en.wikipedia.org/wiki/APT_(software)) paket yöneticisi için kütüphane paketlerinin adlandırma standardı
`lib<kütüphane adı>` iken [RPM](https://en.wikipedia.org/wiki/RPM_Package_Manager) temelli [YUM](https://en.wikipedia.org/wiki/Yum_(software))
paket yöneticisi için aynı standart `<kütüphane>-devel` şeklinde belirlenmiştir. Örneğin dünya üzerinde en çok indirilen program ünvanını taşıyan ve [//] # (Validate this information)
geliştiricisi [Daniel Stenberg](https://en.wikipedia.org/wiki/Daniel_Stenberg) İsveç Polhem Ödülü kazandıran [`cURL`](https://en.wikipedia.org/wiki/CURL) yazılımı,
paket yöneticisi için aynı standart `<kütüphane>-devel` şeklinde belirlenmiştir. Buna örnek olarak dünya üzerinde en çok indirilen program ünvanını taşıyan ve [//] # (Validate this information)
geliştiricisi [Daniel Stenberg](https://en.wikipedia.org/wiki/Daniel_Stenberg)'e İsveç Polhem Ödülü kazandıran [`cURL`](https://en.wikipedia.org/wiki/CURL) yazılımı,
`APT` paket yöneticisi için `libcurl` `YUM` paket yöneticisi için `curl-devel` olarak adlandırılmıştır.

Aynı Şekilde sistemler arası temel paket adlandırmaları arasındaki farklar da kullanıcıların indirmek istedikleri
paketleri bulmalarını zorlaştırmaktadır. Örneğin APT paket yöneticisi kaydında çok yaygın olarak kullanılan [`make`](https://en.wikipedia.org/wiki/Make_(software)) yapılandırma
sistemi paketinin adı `make` iken Nix paket yöneticisi kaydında aynı paketin adı `gnumake`'dir. Bu gibi durumlar program geliştirirken hız ve üretkenlik kaybına sebep olur.

Kullanıcıların bu tarz sorunlarla karşılaşmaması için geliştirdiğimiz GENE Paket Yöneticisi, paket yöneticileri
arasındaki farklılıkları soyutlayarak ([abstraction principle](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming))) ortadan kaldırmayı hedeflemektedir.

GENE, GPacR (Generic PACkage Registry) adını verdiğimiz kendi paket kayıt sistemini otomatik [CI](https://en.wikipedia.org/wiki/Continuous_integration) algoritmalarıyla
güncel tutarak paket yöneticilerinin kayıt sistemleri arasındaki adlandırma farklarını ortadan kaldırmayı
hedeflemektedir.
GENE, kullanıcı paketleri hakkında gerekli biygileri kayıt etme amacıyla GPacR (Generic PACkage Registry) adını verdiğimiz kendi paket kayıt sistemini kullanmaktadır.

GPacR kayıt sisteminin yeni geliştirilen paketlere adapte olmasını kolaylaştırmak için paket kayıt sistemini
güncellemek için bir otomasyon sistemi geliştirdik. Bu sistem, paketleri agresif bir elemeden geçiren yüksek performanslı
bir algoritma kullanır. Bu algoritma sayesinde belirli aralıklarla güncellenen GPacR etkin ve tasarruflu bir biçimde güncel tutulmuş olur.

Paket kayıt sistemi otomasyonu, bulut temelli CI/CD/CT (Continious Integration, Continious Delivery, Continious Testing) entegrasyonlarıyla
son teknoloji program geliştirme standartları ve bakım protokollerini destekler nitelikte tasarlanmıştır.

Ayrıca paket yöneticilerinin komutlarını standartlaştırarak kullanıcıların farklı sistemler arasında geçiş yaparken
paketi indirme, güncelleme, kaldırma gibi komutları yeniden öğrenmesinin önüne geçmeyi hedeflemektedir.
Bunun yanında GENE'nin hedef edindiği sistem-bağımsız paket yönetiminin kilit taşlarından birisi olan komut satırı arayüzü (Commandline Interface)
parametrelerinin (cli arguments) tek boyuta indirgenmesi bu problemin çözülmesi açısından önem taşımaktadır. Bu probleme çözüm olarak GENE,
çok dill konuşabilen (polyglot) bir yazılım olarak geliştirilmiştir. Böylece siz hangi paket yöneticisinin komutlarını kullanırsanız GENE
kullandığınız komutları kodların çalıştığı sistemin anlayacağı hale çevirecek ve böylece özgür bir standardalizasyon sağlanmış olacaktır.
GENE'nin bu yaklaşımının temel sebebi yeni bir standart oluşturmadan var olan standartları birleştirmektir.

> ANAHTAR KELIMELER: paket yöneticisi, soyutlama, cross platform, standartlaştırma
9 changes: 5 additions & 4 deletions docs/tubitak/headers/03-GIRIS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,19 @@
> Giriş, araştırma konusu hakkında yapılmış araştırmaların sonuçlarının ve bu alanda cevapsız olan soruların bilimsel
> makalelere dayandırılarak anlatıldığı (kaynak taraması) bölümdür.
GENE, projesi yapılan derin literatür araştırması sonucunda

## WhoHas

WhoHas, Sistemler arası paket sorgulama aracıdır. Kendisi bir paket yöneticisi değildir. Sadece paket yöneticilerinin
kayıt sistemlerine erişerek sizin aradığınız paket isminin hangi paket yöneticisinde hangi isimle kayıtlı olduğunu
gösterir.

WhoHas ile GENE arasındaki temel fark, WhoHas aradığınız paketin hangi işletim sistemine ait olduğunu söylerken
GENE aradığınız paketin sizin sisteminizdeki kaydını bulup indirir.
bulunan paketin sisteminize indirilmesi hakkında fayda sağlamaz. GENE ise aradığınız paketin sizin sisteminizdeki kaydını bulup indirir.

WhoHas, kullanıcıdan aldığı girdiyi sorguladığı için kimi durumlarda yanlış ve eksik sonuçlar verebilir. GENE bu
problemi GPacR
ile çözmektedir.
WhoHas, kullanıcıdan aldığı girdiyi sorguladığı için kimi durumlarda GENE'nin deterministik altyapısının indirdiği
paketleri bulamayabilir. Bu problemin temel sebebi, `whohas` programının paket kayıt sistemlerin

## MEW, Pacaptr

Expand Down
2 changes: 2 additions & 0 deletions docs/tubitak/headers/04-YONTEM.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ Rust, LLVM Derleyici altyapısını temel alan bir programlama dilidir. Bu sayed
- Güçlü tür sistemi, programcıların daha az hata yapmasını sağlar.
- Kolay çapraz derleme, programcıların yazdıkları programları farklı işletim sistemlerinde çalışmasına olanak sağlar.

Rust yarı fonksiyonel bir programlama dili olduğundan [bkz. data/figures/programming-languages-classification]

### Eskiye Uyumlu (Backward Compatiblity)

Rust programlama dili büyük ve genişleyen kominitesi ile genel programlama dillerinin karşılaştığı bir
Expand Down
1 change: 1 addition & 0 deletions docs/tubitak/headers/05-BULGULAR.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
## GPacR Kayıt Sistemini Otomatik Güncelleme


## Standardalizasyon Konusunda ortaya çıkan bazı sorunlar

Aynı yazılım paketi, bütün işletim sistemlerinde aynı olmak zorunda değil.
12 changes: 12 additions & 0 deletions docs/tubitak/headers/07-ONERILER.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,15 @@
## Sistemler arası paket standardının zorluğu

## GPacR'ın geliştirilmesi

## Yeni Bir Paket Yöneticisi

GENE programı geliştirilme aşamasındayken paket standardalizasyonu için belirlenmiş potansiyel iki çözüm yöntemi belirlenmiştir.

### Bütün Paket Kayıt Sistemlerini Anlayan Yeni Bir Paket Yöneticisi

Bu çözüm her ne kadar GENE'nin problemi çözme yaklaşımına zıt olsa da. GENE yazılımını geliştirmeden önceki planlama aşamasında
potansiyel bir çözüm olarak belirlenmiştir. Temel çalışma mantığı, GENE'nin paket kayıt sistemlerinde isim tekilleştirmesi yerine
paket kayıt sistemlerinden indirebilmesidir. Bu açıdan var olan sistemlere adapte edilirken oluşabilecek sıkıntılar ve genele hitap
eden birstandardalizasyon yerine yeni bir standart ortaya koyduğundan GENE daha fazla efor gerektirmesine rağmen isim standardalizasyonu
yönünde belirlenmiştir.

0 comments on commit 1422c24

Please sign in to comment.