From 8b81e2eb4dfc1eec872f98721afc3e7c7015d093 Mon Sep 17 00:00:00 2001 From: utfeight Date: Wed, 13 Dec 2023 10:01:19 +0300 Subject: [PATCH 1/6] docs: update docs with more newer paradigms section --- docs/tubitak/headers/04-YONTEM.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/tubitak/headers/04-YONTEM.md b/docs/tubitak/headers/04-YONTEM.md index 4697ff2..8782632 100644 --- a/docs/tubitak/headers/04-YONTEM.md +++ b/docs/tubitak/headers/04-YONTEM.md @@ -38,6 +38,8 @@ GENE Ekosistemini geliştirmek için Rust programlama dilini kullandık. - Strong Pattern Matching idioms - Semi-functional approach +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 From 33df573a18bdfcf28eed4b724190b9b89cccea49 Mon Sep 17 00:00:00 2001 From: Lahmacun <107251435+denizbaba0@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:14:22 +0300 Subject: [PATCH 2/6] docs: add more suggestions to report --- docs/tubitak/headers/07-ONERILER.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/tubitak/headers/07-ONERILER.md b/docs/tubitak/headers/07-ONERILER.md index ba751c8..7268218 100644 --- a/docs/tubitak/headers/07-ONERILER.md +++ b/docs/tubitak/headers/07-ONERILER.md @@ -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. From 92bc71e374ce0f4273bde73cbe57a8d4e2624ad0 Mon Sep 17 00:00:00 2001 From: Lahmacun <107251435+denizbaba0@users.noreply.github.com> Date: Wed, 13 Dec 2023 14:24:39 +0300 Subject: [PATCH 3/6] docs(report): add ci/cd/ct implementations --- docs/tubitak/headers/05-BULGULAR.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/tubitak/headers/05-BULGULAR.md b/docs/tubitak/headers/05-BULGULAR.md index b6d0f1b..b7d4216 100644 --- a/docs/tubitak/headers/05-BULGULAR.md +++ b/docs/tubitak/headers/05-BULGULAR.md @@ -4,6 +4,13 @@ ## GPacR Kayıt Sistemini Otomatik Güncelleme +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 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ştiricileri ve bakım protokollerini destekler nitelikte tasarlanmıştır. + ## Standardalizasyon Konusunda ortaya çıkan bazı sorunlar Aynı yazılım paketi, bütün işletim sistemlerinde aynı olmak zorunda değil. From 009d9ac12a66d2bf40f7d7993fa480c7ecf3e93c Mon Sep 17 00:00:00 2001 From: Lahmacun <107251435+denizbaba0@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:02:25 +0300 Subject: [PATCH 4/6] docs: move incorrect location of GPacR --- docs/tubitak/headers/05-BULGULAR.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/tubitak/headers/05-BULGULAR.md b/docs/tubitak/headers/05-BULGULAR.md index b7d4216..93079a8 100644 --- a/docs/tubitak/headers/05-BULGULAR.md +++ b/docs/tubitak/headers/05-BULGULAR.md @@ -4,12 +4,6 @@ ## GPacR Kayıt Sistemini Otomatik Güncelleme -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 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ştiricileri ve bakım protokollerini destekler nitelikte tasarlanmıştır. ## Standardalizasyon Konusunda ortaya çıkan bazı sorunlar From 8b98604ceebabb948e61ec047a72cf2a44aeb63a Mon Sep 17 00:00:00 2001 From: Lahmacun <107251435+denizbaba0@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:18:56 +0300 Subject: [PATCH 5/6] docs: barely done report summary to get slimmed --- docs/tubitak/headers/01-OZET.md | 47 +++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/docs/tubitak/headers/01-OZET.md b/docs/tubitak/headers/01-OZET.md index 7d255f2..7508383 100644 --- a/docs/tubitak/headers/01-OZET.md +++ b/docs/tubitak/headers/01-OZET.md @@ -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` 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 `-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 `-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 From 09ed03636411f46b5c7a043695e7e91435a1f340 Mon Sep 17 00:00:00 2001 From: Lahmacun <107251435+denizbaba0@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:02:10 +0300 Subject: [PATCH 6/6] docs: update report --- docs/tubitak/headers/03-GIRIS.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/tubitak/headers/03-GIRIS.md b/docs/tubitak/headers/03-GIRIS.md index db952c4..4f60243 100644 --- a/docs/tubitak/headers/03-GIRIS.md +++ b/docs/tubitak/headers/03-GIRIS.md @@ -3,6 +3,8 @@ > 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 @@ -10,11 +12,10 @@ kayıt sistemlerine erişerek sizin aradığınız paket isminin hangi paket yö 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