--- /dev/null
+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