<div><span style="color: rgb(160, 160, 168); ">On Wednesday, December 5, 2012 at 6:18 PM, Barry Warsaw wrote:</span></div>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>On Dec 05, 2012, at 06:07 PM, Donald Stufft wrote:</div><div><br></div><blockquote type="cite"><div><div>If you're installing B you've prescribed trust to that author. If you don't</div><div>trust the author then why are you installing (and then executing) code</div><div>they wrote. </div></div></blockquote><div><br></div><div>What you installed Z, but B got installed because it was a dependency three</div><div>levels down?</div></div></div></span></blockquote><div>Sure, you granted trust to Z, Z granted trust to Y, and Y granted trust to B. Like</div><div>in SSL certificates there was a chain of trust. If you don't trust Z then don't install</div><div>their package. </div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;"><span><div><div><div><br></div><blockquote type="cite"><div><div>Very convenient to declare that one of the major use cases for</div><div>Obsoletes over Obsoleted-By is not valid because of your own</div><div>personal opinions. Like I said above, if you're installing a package</div><div>that someone has uploaded you've implicitly granted them trust. There</div><div>is far worse things that a bad Python citizen can do during, and after</div><div>and install that what is allowed by Obsoletes.</div></div></blockquote><div><br></div><div>Well, basically never installing anything from PyPI except into a virtualenv</div><div>is probably a good recommendation (maybe even now).</div></div></div></span></blockquote><div>A virtualenv only protects you from well behaved packages. There is no way</div><div>to prevent a package author from doing very nasty things to you if they wish.</div><div>Providing more power in the metadata doesn't make this situation better or</div><div>worse, it just makes more standard paths in the cases where you do need</div><div>to do it.</div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;"><span><div><div><div><br></div><blockquote type="cite"><div><div>End systems often times do not have a singular organization controlling</div><div>every package in their system. The best example is Ubuntu and their PPA's. </div></div></blockquote><div><br></div><div>Well, PPAs are awesome, but have known and well-publicized trust issues.  I</div><div>wouldn't enable a PPA into my running system without really knowing who the</div><div>owner is and why I'm using their PPA.  Or doing a lot of testing in a chroot</div><div>first, and probably pinning the package set to just the one(s) from the PPA I</div><div>care about.</div></div></div></span></blockquote><div>Basically the same thing can be said about packages on PyPI. All the same</div><div>trust issues exist there. Simply installing a Python package is already granting</div><div>far more trust than Obsoletes requires since installing a package is executed</div><div>someone else's python code on your system. Even if you remove setup.py you're</div><div>still going to be executing their code on your system. If you do not trust the</div><div>author of the packages you are installing, you do not install their packages.</div><div><br>
                </div>