Changes between Initial Version and Version 1 of ModuleEcosystem

Show
Ignore:
Timestamp:
08/12/09 22:41:56 (12 years ago)
Author:
japhb
Comment:

Initial notes from mailing list, translated to WikiFormatting, lightly edited; more editing to come in next rev

Legend:

Unmodified
Added
Removed
Modified
  • ModuleEcosystem

    v1 v1  
     1= Background = 
     2 
     3Chats and email threads: 
     4 
     5 * Email: http://lists.parrot.org/pipermail/parrot-dev/2009-July/002637.html 
     6 * IRC:   http://irclog.perlgeek.de/perl6/2009-07-31#i_1358894 
     7 * IRC:   http://irclog.perlgeek.de/perl6/2009-07-31#i_1359027 
     8 * Email: http://lists.parrot.org/pipermail/parrot-dev/2009-July/002666.html 
     9 * IRC:   http://irclog.perlgeek.de/parrot/2009-08-07#i_1375425 
     10 * Email: http://lists.parrot.org/pipermail/parrot-dev/2009-August/002695.html 
     11 * IRC:   http://irclog.perlgeek.de/parrot/2009-08-11#i_1385294 
     12 
     13= Requirements = 
     14 
     15 * General 
     16   * Distributions should be dead easy for module authors to create, 
     17     and for users to install. 
     18   * We can create a centralized metadata store, but do not want to 
     19     build and manage a module distribution network ... 
     20   * However it should be possible for another group to do so. 
     21 * Toolchain 
     22   * Basic tools can assume Parrot and the core modules are working, 
     23     but require no other dependencies internally. 
     24   * All external tools needed to download/build/install modules will 
     25     be specified in the module metadata. 
     26   * Tools should be easy to configure. 
     27   * Tools should attempt to auto-configure as much as possible. 
     28   * Tools must properly handle the difference between user-local, 
     29     site-local, and vendor-installed modules. 
     30 * Metadata 
     31   * Simple, extensible format. 
     32   * Unicode and case-retaining. 
     33   * Must include its own spec version. 
     34   * Sufficient for automated programs to create system packages 
     35     (DEB, RPM, etc.). 
     36   * Separate static v. configure-discovered v. hand-edited metadata. 
     37     Separate files? 
     38   * Includes fetch, configure, build, test, install, and runtime 
     39     dependencies. 
     40   * Should be able to track author, mailing list, bug email/bug URI, 
     41     wiki, homepage, source repository, etc. 
     42   * Allows disambiguation as per Perl 6 module spec (authorities, 
     43     versions, authors, etc.). 
     44   * Specifies rules for dependency string parsing/interpretation. 
     45 
     46 
     47= Proposal = 
     48 
     49''''' This is a rough draft!  Suggestions welcome! ''''' 
     50 
     51 * Overview 
     52   * Parrot community builds a module metadata search system. 
     53   * This search system gathers metadata from various sources, and 
     54     allows users to query it via web browser or API, but does not 
     55     itself store the actual modules. 
     56   * Once found, modules can be fetched from many possible sources, 
     57     including VCS repositories, FTP mirrors, etc. 
     58   * Parrot team will need to standardize module metadata, provide 
     59     the libraries and tools necessary to use the search system, 
     60     provide guidelines for extending the toolchain, and mentor the 
     61     growth of the ecosystem until it stands on its own. 
     62 * Metadata format 
     63   * Served metadata container is gzip'ed tarball (.tar.gz? .tgz?). 
     64   * Core metadata is in META.json at top level of container. 
     65   * Container includes copies of special files (e.g. README). 
     66   * Format for specifying non-metadata-only build scripts undecided. 
     67   * Integrity check / authentication methods undecided. 
     68     * Probably at least md5sum and sha1sum for source tarballs, 
     69       but what about when pulling from raw VCS repo? 
     70 * Core modules 
     71   * parrot config  (already exists -- config.pir) 
     72   * HTTP client    (at least GET, with redirect and proxy support) 
     73   * zlib           (at least decompress) 
     74   * tar            (at least extract) 
     75   * JSON           (at least parse) 
     76   * version spec   (at least parse and compare) 
     77   * library probe  (shared library info: present? version? location?) 
     78   * file paths     (portability: File::Spec + File::Basename + ...)  
     79   * file install   (portability: copy file, set file perms, etc.) 
     80   * query metadata (perform API calls to metadata/search server) 
     81   * installer lib  (all the real brains/glue for the module repo client) 
     82   * installer ui   (CLI and/or Readline, minimal brains, uses lib) 
     83 * Basic Batteries modules 
     84   * Full versions of any modules that are limited in Core 
     85   * Installer add-ons:   VCS fetch/use system pkgs/full depresolve/etc. 
     86   * Module author tools: create/register/update/upload/etc. 
     87   * PIR-level tools:     disassembler/debugger/profiler/data dumper 
     88   * NCI tools:           parse header/manage typemap/wrap C struct/etc. 
     89   * Standard interfaces: TAP, DBDI, logging, ? 
     90   * Standard libraries:  OpenSSL, DateTime, temp dir/file, ? 
     91 
     92 * Possible Power Packs (NOTE: '''EXAMPLES ONLY''', DON'T BIKESHED!) 
     93   * Database:     DBDs (drivers), SQL clients, per-HLL DBI variants 
     94   * Testing:      smoke/tinder/smolder clients, per-HLL Test::* variants 
     95   * Security:     SSH, GPG, libpcap, ... 
     96   * Unixen:       POSIX, Fcntl, Errno, ... 
     97   * Markup:       YAML, libxml2, Expat, DOM, SAX, ... 
     98   * VCS:          CVS, Subversion, git, Mercurial, ... 
     99   * Email:        POP, IMAP, SMTP, MIME, ... 
     100   * GUI:          Qt, GTK+, Wx, Tk, ... 
     101   * 2D Graphics:  libpng, GD, SDL, Cairo, ... 
     102   * 3D Graphics:  OpenGL, EGL, GLU, ... 
     103   * Sound:        OpenAL, Pulse Audio, JACK, ... 
     104   * Game Support: Require other Power Packs: Audio, 2D/3D Graphics 
     105 
     106 * Misc recommendations 
     107   * Separate 'parrot-modules' mailing list for module creators/users 
     108     only if parrot-dev traffic gets overwhelmed. 
     109   * Default to simple (CPAN-style) dependency resolution; upgrade to 
     110     full resolution and system package awareness in Basic Batteries. 
     111   * Names so far suggested for module repository network: 
     112     * Bird Words 
     113       * Aviary 
     114       * Birdseed 
     115       * Gluepot 
     116       * Plumage 
     117       * Roost 
     118     * Acronyms 
     119       * CPAAN 
     120       * FPAN 
     121 
     122= Metadata Proposal = 
     123 
     124 * Required fields: 
     125   * meta-spec 
     126     * version 
     127     * uri 
     128   * name 
     129   * authority 
     130   * version 
     131   * license 
     132     * type 
     133     * uri 
     134   * copyright_holder 
     135   * abstract 
     136 * Manifest fields: 
     137   * files 
     138     * configure 
     139     * build 
     140     * test 
     141     * install 
     142       * share 
     143       * docs 
     144       * bin 
     145       * lib 
     146       * runtime 
     147 * Dependency fields (as { [dep_name]: [version_spec], ... }): 
     148   * provides 
     149   * conflicts 
     150   * requires 
     151     * fetch 
     152     * configure 
     153     * build 
     154     * test 
     155     * install 
     156     * runtime 
     157 * Optional features fields: 
     158   * optional_features 
     159     * [feature_name] 
     160       * description 
     161       * [any/all dependency fields as needed] 
     162 * Other optional fields: 
     163   * description 
     164   * keywords 
     165   * generated_by 
     166   * contributors 
     167     * authors 
     168     * maintainers 
     169     * translators 
     170     * testers 
     171     * reviewers 
     172   * resources 
     173     * source 
     174     * homepage 
     175     * bugtracker 
     176     * wiki 
     177     * repository 
     178       * type 
     179       * checkout_uri 
     180       * browser_uri 
     181       * project_uri 
     182     * mailinglists 
     183       * [list_name] 
     184         * address 
     185         * uri 
     186 * Undecided fields: 
     187   * dynamic_config 
     188   * no_index 
     189   * digests 
     190   * signatures