Kaydet (Commit) aa53db9a authored tarafından Suleyman Poyraz's avatar Suleyman Poyraz

New roadmap for inary-2.0

Son bir senedir devam eden canavarca geliştirmeleri artık bir düzene sokma vakti geldi.
üst 86a711c5
2018-01-17 Suleyman Poyraz <zaryob.dev@gmail.com>
2019-08-12 Suleyman Poyraz <zaryob.dev@gmail.com>
* Uzun zamandır ağız tadı ile bir ChangeLog yazamadım.
* gericekme branchi hakkında:
- kod üzerinde bazı deneysel işler ali rıza keskin tarafından yapıldı.
ancak yapılan değişiklikler beni rahatsız etti. asıl kodun mantığı ve
inary algoritmasının taa pisi dönemlerine uzanan avantajlarına gölge
düşüren bu kodlar arasından işe yarar nitelikte olanları alındı. Ancak
şunu açıkca ifade etmeliyim ki tüm değişiklikler herkesin gözle
görebileceği şekilde ortaya kondu.
- işe yarayabilecek 1-2 yama harici atıldı.
- bu branch üzerinde öğrendiğim şu topological sort algoritması yavaş Ancak
iyileştirme yapılamayacak durumda değil. aklımdaki değişimler yapıldığında
umarım daha güzel olacak
* mevcut branchler hakkında:
- mevcut brancler features/ develop ve master olmak üzere 3 tane:
+ features: bu tag kendii içinde kod temizliği, çeviriler, belgeleme,
daha önceden çıkartılan script ve testsuiti içindir. her bir branch
başarıya ulaşınca develop branchine merge edilip kaldırılacaktır. develop ise
gerekli testlerinin ardından master tagına bağlanacaktır ve her bağlamada
inary yeni bir sürüm numarasına sahip olacaktır
* bu zamana kadar yapılanlar hakkında:
- ufak çaplı bug avları.
- zamanlı zamansız karşıma çıkan hataların tespiti.
- 2 ileri bir geri kod saçmalaları. daha detaylı bilgi için lütfen git diff yapınız.
* yol haritası:
- RoadMap üzerinden yazılmıştır. Bir daha uğraştırmayın.
2019-01-17 Suleyman Poyraz <zaryob.dev@gmail.com>
* fetcher pycurl kullanılarak yeniden yazıldı. Bu sayede base sistemde
dependency yükü azaldı, partial file download özelliği getirildi.
* actionsapi modulleri elden geçirildi kararlılık sağlandı
......
Inary TODO List
==============
A list of tasks to accomplish, organized into priority sections
INARY 2.0 Yol Haritası ve Yapılacaklar
======================================
Legend:
- Todo
? Not determined if/how we have to do
/ In progress
+ Accomplished
- Yapacağım
? Nasıl yapılacağını bulamadım
/ Üzerinde Çalışıyorum
+ Yaptım
1. Pre-Alpha
+ reading spec file
+ writing
+ files
+ metadata
+ Actions API framework
+ sample api modules (example: autotools)
+ C Language Tools
- GoLang Tools
+ Python Language Tools
+ Ruby Language Tools
- Use gem agent
+ Perl Language Tools
+ CMake Tools
+ unit test
+ source building
+ Detailed build log file
+ package module
+ extraction
+ add file / compression
+ package creation
+ install database
+ package database
+ command line interface
+ inary-build
+ inary-install
+ inary-index
+ inary-updatedb
+ single repository index
+ simple dependency checking
+ Package/Files
+ Detailed inary logs into /var/log
1. Pre-Alpha
- Daha temiz logging stratejisi:
- Her çıktının log dosyasına yazılması işleri biraz karıştırıyor. log dosyası şişiyor.
bu iş için bir çare bulmak lazım. Adım adım neler yapacağım:
- ctx.ui.debug fonksiyonu gerekli olmadıkça kullanılmamalı.
- ctx.ui.info önemli mesajlar ve detaylar için (verbose parametresi ile kullanılmalı)
- Bilgilendirme için kullanılan mesajlar ayıklanıp logdan ayrılmalı.
- Paket kurulması öncesi tam bilgilendirme.
- İndirilecek boyutu yazdır.
- Eğer paket kurulacak ise toplam install.tar.xz boyutunu yazdır.
- Eğer update yapılacak ise değişecek boyutu yazdır.
- Silecek paketin ne kadar yer açacağını yazdır.
- Biraz daha anlaşılır paket yapılandırmaları.
- Mevcut Comar forku olan SCOM kodunda uygun düzenlemeler yaparak hangi script nerede hata
oluşturdu ise geri çevir.
- Script hata oluşturunca inary paket yönetiminin donmasını engelle.
- debconf benzeri yapılandırma arayüzü oluştur.
- TestSuit:
- Hangi testler eklenecek ise ona göre doldurulacak.
2. Alpha
+ multi-package dependency analysis (eray)
+ design a package operation planner
+ install/remove operations (eray)
+ command line interface:
+ inary remove
+ svn-like CLI
+ configuration file
+ define the format of the configuration file
+ extend Config module (config.py) accordingly
+ define configuration keys (baris - meren)
+ query
+ list of installed packages (eray)
+ refactor actionsAPI (caglar)
+ fix xml indentation (meren)
+ define file types (doc, executable, conf, etc...) (baris - meren)
+ write specfile (eray)
+ file locking for database access [not tested!] (eray)
+ implement file uri
+ extend the modules dealing with files accordingly
+ ui module improvements
+ methods for interaction (yes, no questions, etc.)
+ implement source database (eray)
+ easy package preparation
? convert ebuild to inary
\ convert deb packages to inary
\ convert rpm packages to inary
+ Configuring system interface after installing
+ what do we need to specify in a package
+ package install: register script and configure system with it
+ package remove: unregister script and reconfigure systen with it (Zaryoh)
+ internet installation
+ support URI's whereever a filename is supported
+ http server
+ https server
+ ftp server
+ inary updatedb over internet
- Localization-Çeviriler:
/ de
+ en
/ es
/ fr
/ hr
/ hu
/ it
/ nl
/ pt
/ pt_BR
/ ru
/ tr
/ uk
- az
- Inary-Devtools:
- Depo paketlerinin geçmişini resetleyecek bir araç.
- Depo elemanlarının çevirilerini kolaylaştıracak bir araç.
- pkgconfig ldd ve .so uzantılı linkleri kullanarak bir paketin
kırık bağımlılığını raporlayacak bir araç.
- Inary-SIGN:
- GPG bazlı index ve paket imzası kontrol mekanizması.
- GPG signed repository.
- GPG signing script.
- Full System Emerge:
- Kaynak repolarından bağımlılık getirirek paket build etmek.
- Derlemeli upgrade mekanizması.
- Kaynak repolarından devam ederse derlenmiş paketlerin sisteme alınmasında
katı sınırlama yapmak.
- History için düzenlemeler:
- hs komutu sonrası kırılmaların önlenmesi.
- hs komutunun tüm terminaller için uygun hale getirilmesi.
- Database methodları:
- lazydb içindeki biraz ilkel ve yavaş olan db yönetim mantığı düzenlenmeli.
database pickle ile oluşturulmak yerine adam akıllı bir database yönetimi ile
(sqlite) veya bir yığın depolama ile (shelve) sağlanması hız katabilir.
- Yeni Komutlar.
- downgrade: Paket sürümünü güncellemeden önceki haline getirmek.
- shell: inary paket yöneticisi için kabuk ortamı
- reconfigure: seçilen paketi yeniden yapılandırma. (ncurses arayüzü ile)
3. Beta
+ build cmd: install build deps
+ improve url support, it's a little dumb at the moment
+ devise a File class that works with URLs
+ add URL support to autoxml
+ info cmd: reverse dependencies of a package
+ a helper script for finding dependencies (eray)
+ autoxml: automated xml processing (eray)
+ design
+ basic types
+ list type
+ class type
+ localtext/text types (localtext.... Ummm?.... )
+ write meaningful localtext datas
+ return meaningful localtext summaries and descriptions
+ revised interface
+ Error handling
+ improved error handling, check routines, hooks, format/print routines
+ write a meaningful traceback output
+ xmlfile support (read/write)
+ string member, in addition to tag/attribute members
+ replace specfile with new specfile using autoxml
+ autoxmlize: metadata, index, dependency and related code paths
+ inheritance support
+ revise writing, error reporting, tests
+ components (eray)
+ requirementsu
+ xml format, add to PSPEC
+ index component.xml's and make use of them in build
+ a database of components:
+ query components by name
+ query list of packages in a component
+ index: update component database(s)
+ bug fixing
+ install/remove/upgrade components
+ safety switch: preserve system.base, install system.devel for build, etc.
+ info <component>
+ started documentation
+ component dependencies
+ multiple package repository (eray)
+ decide how to implement
+ support repo order
- file conflict checker
+ refactor xml support and implement multiple backends
+ ciksemel based modules rewrite with xml.dom.minidom (Zaryob)
+ partial caching and automatic resume for file download (meren)
+ use a '.part' extension
+ resume file downloading (pycurl) (Zaryob)
+ search-file command (eray)
+ exception handling (eray)
+ uniform exception hierarchy
+ proper handling
+ API: we even have application users (eray)
+ a facade module inary.api (eray)
+ clean unuseful inary.api functions
+ a library init command (eray)
+ high-level package ops, index (eray)
+ info/util commands (eray)
+ build commands (baris)
+ documentation
+ actionsAPI documentation, unittests (caglar - meren)
+ versioning information document (eray - baris)
- Repo yönetim iyileştirmeleri:
- Bazı repoların önceliği belirlenmeli. Öncelikli olan repolardaki paket
önceliksiz repodaki aynı addaki paketten üstte olmalı.
- Index iyileştirmeleri.
- Inary config manager. [ inary config ] komutu:
- değişmiş config dosyları kırılmış dosya olarak görülmemeli.
- yeni paket kurulumunda mevcut config kurulup yeni config *.config.new
şeklinde yeniden adlandırılmalı
- değişen config dosyalarının dökümü
- mevcut config dosyalarından yeni ile eskiyi emergedeki gibi değiştirebilme
imkanı.
+ UI
- INARYMAT
/ Automatic dependency finder
/ read pkgconfig files and find dependencies (Zaryob)
- find cycle dependencies (Zaryob)
- Automatic build upgrader
/ creating pspec files from shell script type
- pykde & pygtk GUI (cartman)
+ pykde interface (used package-manager)
+ improve interface (eray)
+ refactor UI, reintroduce base class
+ add an ack interface, start cleaning up a bit
+ cli (eray)
+ ask alternatives to choose from
+ eliminate \n's from infos, what's the point?
+ metaclass coolness for CLI command framework (eray)
+ i18n support
+ translations and correct language for summary, description (packagers)
+ make inary messages translatable (eray)
+ .pot support for dist script (gurer)
/ translate messages mesajların çevirisinin yapılması (inary tr.po)
- az
+ de
+ en
+ es
+ fr
- hr
+ hu
+ it
- nl
- pl
- pt_BR
+ ru
- sv
+ tr
- uk
+ proper unicode handling in code - tons of fixes (eray - baris)
/ configure-pending (eray) (should return which packages configured)
- report scom scripts problems to developers
+ configure pendings (Zaryob)
+ proper commar connection (baris - gurer)
+ ignore-deps (eray)
+ more robust upgrade (eray)
+ query (eray)
+ find package by name, display summary/description
+ info --files option (like rpm -ql, but better of course)
+ implement missing unit tests
+ sourcedb
+ package (baris)
+ configuration file (baris)
+ upgrade (eray)
+ upgrade operation
+ test upgrade op
+ system-wide upgrade (upgrade-all) komutu
+ incremental build (eray)
+ generate binary release number by comparing MD5s (eray)
+ keep track of successfully completed configure, make, install steps
(necessary for large-scale builds?) (meren)
+ database locking bugs (eray)
- Inary licence manager:
- Kapalı kaynak lisanslı olan paketleri yüklemeden önce sorma.
- Paket kurulumu sırasında lisans kabul beyanı.
- Bazı lisans çeşitlerine karşı paket filtreleme.
+ SHOULD WORKING UNDER FIXME PARTS
- Inary Package manager Curses ui.
- Neden yapmayayım ki.
4. Release
* high priority
+ transaction stuff for database (eray)
+ database version file
* low priority
+ search command: (eray)
+ implement an inverted index
+ search in summary and description
- Removing deprecated modules:
- autoxml için formatter kütüphanesi.
- Code optimizations:
- Optimize imports.
- Optimize definitions.
- Optimize runtime variables.
- Optimize class and superclasses.
5. Post Release
* high priority
- refactoring
sort of match the refactoring of inary-2.x series and improve it
... Zamanla eklenecek ...
+ accelerate search
/ package signing
/ an embebed package signer.(Zaryob)
+ a flag to sign package after building
+ code to check if the package has a valid signature
- cli improvements
- non interactive mode (similar to --auto in urpmi)
/ high-level build commands
+ an emerge command, just for fun
+ make use of binary repo to satisfy dependencies in emerge
/ build command enhancements:
+ aware of repo sources
? full dependency analysis like install/upgrade etc.
? build-all (or build-distro) command, or as a separate tool
+ make a package and sourcedb for each repo
+ packagedb
+ sourceb
? improve url support: consider adding "other" protocols
- removable media: media://
- ftp support
* medium priority
- UI impl: non-interactive use that selects defaults and logs output
- UI impl: a general purpose Qt or GTK UI
/ multi-architecture support
+ design decisions
+ extend XML specs to support that
- cross-platform building support
+ incremental build/fetch for repository index (inary-index.xml)
/ xdelta support (caglar)
- diffsets
- a command (check-repo) to check if repos are consistent wrt dep relations
- component improvements (optional)
- maintain a list of components each component has
- maintain a list of packages
- more support for categories:
- put categories into a database
- fast search for categories
* low priority
/ overhaul installdb (try to merge its use with packagedb) (eray)
/ verify metodlari
+ SpecFile
+ MetaData
+ Files
/ Index (somebody should write one :} )
- autoxml:
- revise error checking, printing and tests
- uri type
- date type
- enum type
- make autoxml dependent on only xmlext and xmlfile interfaces
- search command: (eray)
+ search components
- english stemming
- turkish stemming
- phonetic/syntactic fault tolerance (whichever works!)
- in particular evaluate soundex and metaphone
- research if there are language independent phonetic encodings
- implement as an option (or make it possible to turn it off if it works well :))
- fault tolerant search in package names (somehow)
6. Long Term
... Zamanla eklenecek ...
Inary TODO List
==============
A list of tasks to accomplish, organized into priority sections. This wasn't deleted because
i want to continue pisi project but now inary evolved a new package manager. its time to
change RoadMap.
Legend:
- Todo
? Not determined if/how we have to do
/ In progress
+ Accomplished
1. Pre-Alpha
+ reading spec file
+ writing
+ files
+ metadata
+ Actions API framework
+ sample api modules (example: autotools)
+ C Language Tools
- GoLang Tools
+ Python Language Tools
+ Ruby Language Tools
- Use gem agent
+ Perl Language Tools
+ CMake Tools
+ unit test
+ source building
+ Detailed build log file
+ package module
+ extraction
+ add file / compression
+ package creation
+ install database
+ package database
+ command line interface
+ inary-build
+ inary-install
+ inary-index
+ inary-updatedb
+ single repository index
+ simple dependency checking
+ Package/Files
+ Detailed inary logs into /var/log
2. Alpha
+ multi-package dependency analysis (eray)
+ design a package operation planner
+ install/remove operations (eray)
+ command line interface:
+ inary remove
+ svn-like CLI
+ configuration file
+ define the format of the configuration file
+ extend Config module (config.py) accordingly
+ define configuration keys (baris - meren)
+ query
+ list of installed packages (eray)
+ refactor actionsAPI (caglar)
+ fix xml indentation (meren)
+ define file types (doc, executable, conf, etc...) (baris - meren)
+ write specfile (eray)
+ file locking for database access [not tested!] (eray)
+ implement file uri
+ extend the modules dealing with files accordingly
+ ui module improvements
+ methods for interaction (yes, no questions, etc.)
+ implement source database (eray)
+ easy package preparation
? convert ebuild to inary
\ convert deb packages to inary
\ convert rpm packages to inary
+ Configuring system interface after installing
+ what do we need to specify in a package
+ package install: register script and configure system with it
+ package remove: unregister script and reconfigure systen with it (Zaryoh)
+ internet installation
+ support URI's whereever a filename is supported
+ http server
+ https server
+ ftp server
+ inary updatedb over internet
3. Beta
+ build cmd: install build deps
+ improve url support, it's a little dumb at the moment
+ devise a File class that works with URLs
+ add URL support to autoxml
+ info cmd: reverse dependencies of a package
+ a helper script for finding dependencies (eray)
+ autoxml: automated xml processing (eray)
+ design
+ basic types
+ list type
+ class type
+ localtext/text types (localtext.... Ummm?.... )
+ write meaningful localtext datas
+ return meaningful localtext summaries and descriptions
+ revised interface
+ Error handling
+ improved error handling, check routines, hooks, format/print routines
+ write a meaningful traceback output
+ xmlfile support (read/write)
+ string member, in addition to tag/attribute members
+ replace specfile with new specfile using autoxml
+ autoxmlize: metadata, index, dependency and related code paths
+ inheritance support
+ revise writing, error reporting, tests
+ components (eray)
+ requirementsu
+ xml format, add to PSPEC
+ index component.xml's and make use of them in build
+ a database of components:
+ query components by name
+ query list of packages in a component
+ index: update component database(s)
+ bug fixing
+ install/remove/upgrade components
+ safety switch: preserve system.base, install system.devel for build, etc.
+ info <component>
+ started documentation
+ component dependencies
+ multiple package repository (eray)
+ decide how to implement
+ support repo order
- file conflict checker
+ refactor xml support and implement multiple backends
+ ciksemel based modules rewrite with xml.dom.minidom (Zaryob)
+ partial caching and automatic resume for file download (meren)
+ use a '.part' extension
+ resume file downloading (pycurl) (Zaryob)
+ search-file command (eray)
+ exception handling (eray)
+ uniform exception hierarchy
+ proper handling
+ API: we even have application users (eray)
+ a facade module inary.api (eray)
+ clean unuseful inary.api functions
+ a library init command (eray)
+ high-level package ops, index (eray)
+ info/util commands (eray)
+ build commands (baris)
+ documentation
+ actionsAPI documentation, unittests (caglar - meren)
+ versioning information document (eray - baris)
+ UI
- INARYMAT
/ Automatic dependency finder
/ read pkgconfig files and find dependencies (Zaryob)
- find cycle dependencies (Zaryob)
- Automatic build upgrader
/ creating pspec files from shell script type
- pykde & pygtk GUI (cartman)
+ pykde interface (used package-manager)
+ improve interface (eray)
+ refactor UI, reintroduce base class
+ add an ack interface, start cleaning up a bit
+ cli (eray)
+ ask alternatives to choose from
+ eliminate \n's from infos, what's the point?
+ metaclass coolness for CLI command framework (eray)
+ i18n support
+ translations and correct language for summary, description (packagers)
+ make inary messages translatable (eray)
+ .pot support for dist script (gurer)
/ translate messages mesajların çevirisinin yapılması (inary tr.po)
- az
+ de
+ en
+ es
+ fr
- hr
+ hu
+ it
- nl
- pl
- pt_BR
+ ru
- sv
+ tr
- uk
+ proper unicode handling in code - tons of fixes (eray - baris)
/ configure-pending (eray) (should return which packages configured)
- report scom scripts problems to developers
+ configure pendings (Zaryob)
+ proper commar connection (baris - gurer)
+ ignore-deps (eray)
+ more robust upgrade (eray)
+ query (eray)
+ find package by name, display summary/description
+ info --files option (like rpm -ql, but better of course)
+ implement missing unit tests
+ sourcedb
+ package (baris)
+ configuration file (baris)
+ upgrade (eray)
+ upgrade operation
+ test upgrade op
+ system-wide upgrade (upgrade-all) komutu
+ incremental build (eray)
+ generate binary release number by comparing MD5s (eray)
+ keep track of successfully completed configure, make, install steps
(necessary for large-scale builds?) (meren)
+ database locking bugs (eray)
+ SHOULD WORKING UNDER FIXME PARTS
4. Release
* high priority
+ transaction stuff for database (eray)
+ database version file
* low priority
+ search command: (eray)
+ implement an inverted index
+ search in summary and description
5. Post Release
* high priority
- refactoring
sort of match the refactoring of inary-2.x series and improve it
+ accelerate search
/ package signing
/ an embebed package signer.(Zaryob)
+ a flag to sign package after building
+ code to check if the package has a valid signature
- cli improvements
- non interactive mode (similar to --auto in urpmi)
/ high-level build commands
+ an emerge command, just for fun
+ make use of binary repo to satisfy dependencies in emerge
/ build command enhancements:
+ aware of repo sources
? full dependency analysis like install/upgrade etc.
? build-all (or build-distro) command, or as a separate tool
+ make a package and sourcedb for each repo
+ packagedb
+ sourceb
? improve url support: consider adding "other" protocols
- removable media: media://
- ftp support
* medium priority
- UI impl: non-interactive use that selects defaults and logs output
- UI impl: a general purpose Qt or GTK UI
/ multi-architecture support
+ design decisions
+ extend XML specs to support that
- cross-platform building support
+ incremental build/fetch for repository index (inary-index.xml)
/ xdelta support (caglar)
- diffsets
- a command (check-repo) to check if repos are consistent wrt dep relations
- component improvements (optional)
- maintain a list of components each component has
- maintain a list of packages
- more support for categories:
- put categories into a database
- fast search for categories
* low priority
/ overhaul installdb (try to merge its use with packagedb) (eray)
/ verify metodlari
+ SpecFile
+ MetaData
+ Files
/ Index (somebody should write one :} )
- autoxml:
- revise error checking, printing and tests
- uri type
- date type
- enum type
- make autoxml dependent on only xmlext and xmlfile interfaces
- search command: (eray)
+ search components
- english stemming
- turkish stemming
- phonetic/syntactic fault tolerance (whichever works!)
- in particular evaluate soundex and metaphone
- research if there are language independent phonetic encodings
- implement as an option (or make it possible to turn it off if it works well :))
- fault tolerant search in package names (somehow)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment