Changes between Version 1 and Version 2 of ModuleEcosystem
- Timestamp:
- 08/12/09 23:25:59 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ModuleEcosystem
v1 v2 19 19 build and manage a module distribution network ... 20 20 * However it should be possible for another group to do so. 21 * It is unlikely someone will try to mirror the entire history 22 of every dynamic language module ever made, 23 * But for instance serving torrents of Power Packs seems reasonable. 24 * The search API and install process be dead simple and clearly specified. 25 * Clone implementations used by other ecosystems will be a mark of success. 21 26 * Toolchain 22 27 * Basic tools can assume Parrot and the core modules are working, … … 41 46 wiki, homepage, source repository, etc. 42 47 * Allows disambiguation as per Perl 6 module spec (authorities, 43 versions, authors, etc.). 48 versions, authors, etc.), as well as equivalents for PHP PEAR, 49 RubyGems, Python Eggs, etc. 44 50 * Specifies rules for dependency string parsing/interpretation. 45 51 … … 47 53 = Proposal = 48 54 49 ''''' This is a rough draft ! Suggestions welcome! '''''55 ''''' This is a rough draft; suggestions welcome! ''''' 50 56 51 57 * Overview … … 61 67 growth of the ecosystem until it stands on its own. 62 68 * 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). 69 * Metadata served as JSON. 66 70 * Format for specifying non-metadata-only build scripts undecided. 67 71 * 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? 72 * ''Probably at least md5sum and sha1sum for source tarballs, 73 but what about when pulling from raw VCS repo?'' 74 * Metadata server API & UI 75 * Web form UI 76 * Enter/update/remove all module information (metadata fields) 77 * Deprecation/EOL 78 * Accept raw JSON block as alternative 79 * Simple HTTP/JSON API 70 80 * Core modules 71 * parrot config (already exists -- config.pir)81 * parrot config (already exists -- `config.pir`) 72 82 * HTTP client (at least GET, with redirect and proxy support) 73 83 * zlib (at least decompress) … … 76 86 * version spec (at least parse and compare) 77 87 * library probe (shared library info: present? version? location?) 78 * file paths (portability: File::Spec + File::Basename+ ...)88 * file paths (portability: `File::Spec` + `File::Basename` + ...) 79 89 * file install (portability: copy file, set file perms, etc.) 80 90 * query metadata (perform API calls to metadata/search server) 81 91 * installer lib (all the real brains/glue for the module repo client) 82 * installer ui (CLI and/or Readline, minimal brains, uses lib)92 * installer ui (CLI and/or `Readline`, minimal brains, uses lib) 83 93 * Basic Batteries modules 94 * ''Note: Basic Batteries is just another Power Pack from a technical viewpoint; it is merely treated slightly differently in the community.'' 84 95 * Full versions of any modules that are limited in Core 85 96 * Installer add-ons: VCS fetch/use system pkgs/full depresolve/etc. 86 * Module author tools: create/register/update/upload/etc.97 * Module author tools: easy create (module or pack)/register/update/upload/etc. 87 98 * PIR-level tools: disassembler/debugger/profiler/data dumper 88 99 * 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 100 * Standard interfaces: `TAP`, `DBDI`, logging, ? 101 * Standard libraries: `OpenSSL`, `DateTime`, temp dir/file, ? 92 102 * Possible Power Packs (NOTE: '''EXAMPLES ONLY''', DON'T BIKESHED!) 93 103 * Database: DBDs (drivers), SQL clients, per-HLL DBI variants … … 103 113 * Sound: OpenAL, Pulse Audio, JACK, ... 104 114 * Game Support: Require other Power Packs: Audio, 2D/3D Graphics 105 106 115 * Misc recommendations 107 * Separate 'parrot-modules'mailing list for module creators/users108 only if parrot-devtraffic gets overwhelmed.116 * Separate `parrot-modules` mailing list for module creators/users 117 only if `parrot-dev` traffic gets overwhelmed. 109 118 * Default to simple (CPAN-style) dependency resolution; upgrade to 110 119 full resolution and system package awareness in Basic Batteries. 120 * Master metadata site will be `reponame.parrot.org` 111 121 * Names so far suggested for module repository network: 112 122 * Bird Words … … 116 126 * Plumage 117 127 * Roost 118 * Acronyms 128 * Acronyms ''(generally disliked, and leads to CPAN comparison/expectation)'' 119 129 * CPAAN 120 130 * FPAN … … 130 140 * version 131 141 * license 132 * type 142 * type ''(standard short names for common licenses)'' 133 143 * uri 134 144 * copyright_holder 135 145 * abstract 136 * Manifest fields: 146 * instructions 147 * type ''(standard names for common build sequences, 148 such as `cpan-mm` for CPAN + `ExtUtils::MakeMaker`, 149 or `custom` for custom instructions)'' 150 * fetch 151 * configure 152 * build 153 * test 154 * install 155 * runtime ''(here for completeness; necessary?)'' 156 * Manifest fields ''(still under discussion; for scriptless installs)'': 137 157 * files 138 158 * configure … … 145 165 * lib 146 166 * runtime 147 * Dependency fields (as { [ dep_name]: [version_spec], ... }):167 * Dependency fields (as { [''dep_name'']: [''version_spec''], ... }): 148 168 * provides 149 169 * conflicts … … 157 177 * Optional features fields: 158 178 * optional_features 159 * [ feature_name]179 * [''feature_name''] 160 180 * description 161 * [ any/all dependency fields as needed]181 * [''any/all dependency fields as needed''] 162 182 * Other optional fields: 163 183 * description … … 181 201 * project_uri 182 202 * mailinglists 183 * [ list_name]203 * [''list_name''] 184 204 * address 185 205 * uri 186 206 * Undecided fields: 207 * ''How do fields get added to spec? Allow custom fields?'' 187 208 * dynamic_config 188 209 * no_index