ROADMAP.OLD 9.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
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)