'Recent' updates
[pwan.org.git] / content / ideas / bellhop.rst
diff --git a/content/ideas/bellhop.rst b/content/ideas/bellhop.rst
new file mode 100644 (file)
index 0000000..90804f0
--- /dev/null
@@ -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