Skip to content

Commit

Permalink
Merge pull request #5
Browse files Browse the repository at this point in the history
update documentaiton
  • Loading branch information
orhnk authored Dec 13, 2023
2 parents 57c4935 + ae9e63d commit 832adde
Show file tree
Hide file tree
Showing 13 changed files with 190 additions and 12 deletions.
11 changes: 11 additions & 0 deletions docs/tubitak/NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# NOTES

> Additional links and notes for further documentation improvements.
- Project with the same idea but incomplete: https://github.com/timols/yumitude
- Project similar to pacaptr: https://github.com/fossasia/mew

## Two-way Interpretation

Use some config file `toml`, `RON`, `JSON` or smth to define the appropriate command translations instead of defining an entire module in rust and abstract it over a library.
I thought inspiring from project [MEW](https://github.com/fossasia/mew) but MEW's approach is unmaintainable and against DRY principle (Writing every possibility by hand instead of parsing the cmd)
11 changes: 11 additions & 0 deletions docs/tubitak/headers/00-GENE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
> Proje Ana Alanı: Yazılım
> Proje Tematik Alanı: Dijital Dönüşüm
> Proje Adı (Başlığı): GENE Paket Yöneticisi Standartlaştırma Ekosistemi
> Proje raporu yazımında yazı tipinin Times New Roman, yazı tipi boyutunun ise 12 punto olması tavsiye edilmektedir. Proje rapor metnindeki her bir sayfa, sayfanın her yanından 2,5 cm boşluk bırakarak, tek satır aralığı ile iki yana yaslı şekilde düzenlenmelidir.
Proje başlığı tek bir cümle şeklinde, kısa ve öz olarak, okuyan kişiye proje çalışması hakkında fikir verecek şekilde yazılmalıdır. Bu başlık mutlaka proje içeriğini yansıtacak şekilde olmalıdır.


> [!NOTE]
> - Times New Roman 12 punto 2,5cm sayfa aralığı
> - Tek satır aralığı iki yana yaslı düzen
47 changes: 47 additions & 0 deletions docs/tubitak/headers/01-OZET.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# ÖZET

> Ö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
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.

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.

Ö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.

Paket yöneticilerinin sağladıkları faydalar sebebiyle günümüzde pek çok işletim sistemine uyarlanmış
tiplere ayrılmaktadı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ş
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ı
`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ı,
`APT` paket yöneticisi için `libcurl` `YUM` paket yöneticisi için `curl-devel` olarak adlandırılmıştır.

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.

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.

> ANAHTAR KELIMELER: paket yöneticisi, soyutlama, cross platform, standartlaştırma
17 changes: 17 additions & 0 deletions docs/tubitak/headers/02-AMAC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# AMAÇ

> Bu bölümde doğrudan projenin amacına, somut hedeflerine ve Ar-Ge içeriğine odaklanılmalıdır. Önerilen proje konusunun çözülmesi gereken ya da önceden çalışılmış aydınlatılması gereken bir problem olup olmadığı, hangi eksikliği nasıl gidereceği veya hangi sorunlara çözüm getireceği açıklanmalıdır. Hazırlanan projenin ilgili olduğu alanlarda uzman kişilere sunulacağı dikkate alınarak değerlendirmeye hiçbir katkı sağlamayacak genel konu ve tarihçe anlatımlarından kaçınılmalıdır.
GENE Paket Yöneticilerini standart bir zemine oturtmayı amaçlamaktadır.
Farklı Paket Yöneticilerinin paket isimlendirme sistemleri bir standarda uymadığından dolayı
İşletim sistemleri arasında gerekli kütüphane (dependency) kurulumlarında
karşılaşılan sıkıntıları çözmek ve standartlaştırılmamış paket eylemleri komutlarını
standartlaştırmak için geliştirilmiştir.

Örneğin [cURL]() kütüphanesi [RPM]() temelli paket yöneticilerinde `curl-devel`,
[DPKG]() temelli paket yöneticilerinde `libcurl` adını almaktadır.

Aynı şekilde sisteminizde bulunan paketleri güncellemek için `Pacman` paket yöneticisine `pacman -Syu`
komutunu verirken `APT` paket yöneticisine `apt upgrade` komutunu girmelisiniz. (admin yetkileri dahil edilmemiştir)

GENE yazılımcıların günlük işlerinde sık karşılaştıkları bu tarz sıkınıntıların önüne geçmeyi hedeflemektedir.
14 changes: 14 additions & 0 deletions docs/tubitak/headers/03-GIRIS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# GİRİŞ

> 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.
- [yumitude](https://github.com/timols/yumitude) Project with the same idea but not implemented.
- [MEW](https://github.com/fossasia/mew) Project similar to pacaptr.
- [whohas](https://github.com/whohas/whohas) - A system utility to search from general package registries.
- [pacaptr](https://github.com/icy/pacapt) - pacman-like syntax for all package managers.
- [bedrock linux](https://bedrocklinux.org/0.7/pmm-beta.html)'s package manager manager (a.k.a pmm)

## Cevaplanmamış Sorular

- Paket Yöneticilerinin paket kayıt sistemleri araralarındaki tek fark paket isimlendirmeleri değildir.
Kimi paketler tamamiyle aynı olurken bazı paketler parçalara ayrılıp kaydedilir. Bu farklar, paket isimlerini standartlaştırmanın kesin bir çözüm olmadığını göstermektedir.
46 changes: 46 additions & 0 deletions docs/tubitak/headers/04-YONTEM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# YÖNTEM

> Araştırma yönteminin, veri toplama araçlarının, deney ve gözlem düzeneklerinin ve verilerin analiz yönteminin verildiği bölümdür.
## Rust Programlama Dili

GENE Ekosistemini geliştirmek için Rust programlama dilini kullandık.

### Cargo Paket Yöneticisi

- Robust build system for rust
- Standerdized Package Management
- Automatic linkage
- Easy to maintain thanks to systems like yanking and semantical versioning
- Automatic feature management by local compilation
- multi-paradigm package manager allowing you to manage your package with smart actions (e.g expand, watch, add)

### Yüksek Seviye Sözdizimi

- High level syntax
- Less ways of causing Undefined Behaviour
- Easy Cross-compilation

### Borrow Checker Sistemi

- No Manual memory management with a smart compiler
- New and refreshing paradigm to programming
- Fearless concurrency!

### Sistem Seviyesinde Performans

- LLVM Based programming language

### Yeni Nesil Programlama

- Algebraic Data Types
- Procuderal Macros
- Strong Pattern Matching idioms
- Semi-functional approach

### Eskiye Uyumlu (Backward Compatiblity)

Rust programlama dili büyük ve genişleyen kominitesi ile genel programlama dillerinin karşılaştığı bir
problemle karşı karşıya kalmıştır. Örneğin Python2 ve Python3 arasındaki temel değişiklikler bile
programlama forumları, kütüphaneler gibi pek çok açıdan büyük ses getirmiştir. Rust bu sorunun güvencesini
resmi anlamda sunarak rust programlarının eski derleyiciler ile kullanılabileceğini kesinleştirmiştir.
3 changes: 3 additions & 0 deletions docs/tubitak/headers/04-Z-PROJE_IS-ZAMAN_CIZELGESI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Proje İş-Zaman Çizelgesi

> Projenin iş-zaman çizelgesine sahip olması çok önemlidir. İlk haftadan itibaren araştırma projenizin süresi boyunca ulaşmanız gereken hedefleri ve zamanlarını belirten aşağıda verilene benzer bir iş-zaman çizelgenizin olması gerekir.
3 changes: 3 additions & 0 deletions docs/tubitak/headers/05-BULGULAR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Bulgular

> Çalışmada toplanan veriler ve verilere ait analiz sonuçları verilir.
3 changes: 3 additions & 0 deletions docs/tubitak/headers/06-SONUC_VE_TARTISMA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Sonuç ve Tartışma

> Bu bölümde proje çalışması ile elde edilen bulgular araştırma sorusuna veya problemine uygun olarak yorumlanır.
3 changes: 3 additions & 0 deletions docs/tubitak/headers/07-ONERILER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Öneriler

> Bu bölümde benzer çalışmalar yapacak olanlara yol göstermesi bakımından öneriler varsa belirtilir.
3 changes: 3 additions & 0 deletions docs/tubitak/headers/08-KAYNAKLAR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Kaynaklar

> Bu bölümde, proje sürecinde yararlanılan ve proje raporu içerisinde atıf yapılan tüm kaynaklar listelenir. Kaynaklar APA yazım kuralları ve kaynak gösterme biçimine göre listelenir.
6 changes: 6 additions & 0 deletions docs/tubitak/headers/09-EKLER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Ekler

> Varsa konuyu dağıtacağı düşünülen veya çok uzun metinlerden oluşan, çeşitli araştırma bulgularına dayalı çok uzun tablolar, formüller, ayrıntılı deney verileri, bilgisayar programları, anketler vb. EKLER bölümünde verilebilir. Araştırmayı yapmak için alınan yasal izinler, yazışmalar, gerekirse e-posta örnekleri de burada verilmelidir. Eklerin her biri için uygun bir başlık seçilerek metin içerisinde geçiş sıralarına göre "Ek 1., Ek 2..." şeklinde, ayrı bir sayfadan başlayacak şekilde yer almalıdır.
> Eklerin proje raporunun sayfa sınırı olan 20 sayfaya sığmaması durumunda e-bideb sisteminde EK BELGELER kısmına yüklenmesi gerekmektedir. Bu durumda proje raporunda EK BELGELER kısmına dosya yüklendiği belirtilmeli ve eklenen belgeler liste halinde yazılmalıdır.
35 changes: 23 additions & 12 deletions docs/tubitak/report.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,38 +17,49 @@
## PROJE ÖZETİ

Son yıllarda yazılım dijital dünya adına geliştirilen teknolojiler sayesinde program geliştirmek
çeşitli yollarla kolaylaştırılmıştır. 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,
çeşitli yollarla kolaylaştırılmıştır. Örneğing 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.

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.

Ö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.

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

Farklı paket yöneticilerinin farklı komutları, farklı dökümantasyonları, farklı paket kayıt sistemleri 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.
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ş
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 C yapılandırma
sistemi `make` paketinin adı `make` iken Nix paket yöneticisini kullanan bir sistemde aynı paketin adı `gnumake`'dir.
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ı
`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ı,
`APT` paket yöneticisi için `libcurl` `YUM` paket yöneticisi için `curl-devel` olarak adlandırılmıştır.

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) ortadan kaldırmayı hedeflemektedir.
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
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.

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.

> ANAHTAR KELIMELER: paket yöneticisi, soyutlama, cross platform, standartlaştırma
## Proje Özeti son

Son yıllarda yazılım geliştirmeyi kolaylaştırmak adına geliştirilen araçlar arasında arasında
Expand Down

0 comments on commit 832adde

Please sign in to comment.