<div><span style="color: rgb(160, 160, 168); ">On Thursday, June 21, 2012 at 4:01 PM, Paul Moore wrote:</span></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
<span><div><div><div>End users should not need packaging tools on their machines.</div><div><br></div></div></div></span></blockquote><div>Sort of riffing on this idea, I cannot seem to find a specification for what a Python</div><div>package actually is. Maybe the first effort should focus on this instead of arguing one</div><div>implementation or another. </div><div><br></div><div>As a packager:</div><div> I should not (in general) care what tool (pip, pysetup, easy_install, buildout, whatever) is used</div><div> to install my package, My package should just describe what to do to install itself.</div><div><br></div><div>As a end user:</div><div> I should not (in general) care what tool was used to create a package (setuptools, bento, distutils,</div><div> whatever). My tool of choice should look at the package and preform the operations that the package</div><div> says are needed for install.</div><div><br></div><div>Ideally the package could have some basic primitives that are enough to tell the package installer</div><div>tool what to do to install it, These primitives should be enough to cover the common cases (pure python</div><div>modules at the very least, maybe additionally some C modules). Now as others have remarked it would</div><div>be insane to attempt to do this in every case as it would involve writing a build system that is more</div><div>advanced than anything else existing, so a required primitive would be something that allows calling out</div><div>to a specific package decided build system (waf, make, whatever) to handle the build configuration.</div><div><br></div><div>The eventual end goal here being to make a package from something that varies from implementation</div><div>to implementation to a standardized format that any number of tools can build on top of. It would likely</div><div>include some things defining where metadata MUST be defined.</div><div><br></div><div>For instance, if metadata in setuptools was "compiled" down to static file, and easy_install, pip et;al</div><div>used that static file to install from instead of executing setup.py, then the end user would not have</div><div>required setup tools installed and instead any number of tools could have been created that utilized</div><div>that data.</div>