X-Git-Url: https://pwan.org/git/?p=pwan.org.git;a=blobdiff_plain;f=content%2Fideas%2Fbellhop.rst;fp=content%2Fideas%2Fbellhop.rst;h=90804f0be023c78fb6e0fc94f242b01c178c2332;hp=0000000000000000000000000000000000000000;hb=3f68a500fe717ba1a70ac17fa4fe8eea9bbb729e;hpb=dd55ce0638793dd8f348fe9bf679049ef34fff47 diff --git a/content/ideas/bellhop.rst b/content/ideas/bellhop.rst new file mode 100644 index 0000000..90804f0 --- /dev/null +++ b/content/ideas/bellhop.rst @@ -0,0 +1,42 @@ +Bellhop +####### + +:date: 2014-05-04 +:tags: idea,project +:category: idea +:author: Jude N +:Status: draft + +bellhop is a generic packaging server. + +Problem +- Every tool and platform eventually has it's own packaging tool (python eggs, ruby gems, perl modules, javascript packages) +- You should be able to build a project even when the external intrnet is unavailable (local mirroring) +- You should be able to save versions of the packages used by a project even when the external sites / mirrors have dropped them (pinning) +- Serving new type of package shouldn't involve setting up an entirely new ecosystem to basically serve files over http + +Solution +- Provide a single package providing source called ''bellhop' (since he'll carry your packages for you) +- bellhop will use a plugin architecture to provide interfaces for various packaging interfaces +- user will be able to use whatever the default packaging client tool is (yum / apt / pip / easy_install / gem / npm / whatever) +- bellhop will provide a common backend in a consistent format for storing the packages, regardless of how the client expects the files to be served) +- bellhop will provide a plugin architecture for the backend storage of packages + + - The default will be filesystem bases, with packages being stored under /var/www/bellhop/{package_type}/{package_name}/{available_versions_of_package_name} + +- bellhop will be written in a language that'll be easy to get accepted in distros default packaging schemso + - Target fedora and debian packages for starts + - limit dependencies / use established/proven libraries + - default python 2 version for now ? + +- Plugins: + + - pypi : python : nothing special ? : /var/www/bellhop/pypi/_packagename_/_package_versions_ : URL format + - cpan : perl : Downloads some index files first : /var/www/bellhop/cpan/_packagename_ / _package_version_ : URL format + + +- Just set up the repos with httpd / nginx url rewrites ? + +- Notes: + + - see pinto's concepts of stacks and pins: http://perlmaven.com/pinto-tutorial