<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div>+1</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt"><span style="font-weight:bold">From: </span> Gabriel Hurley <<a href="mailto:Gabriel.Hurley@nebula.com">Gabriel.Hurley@nebula.com</a>><br><span style="font-weight:bold">Reply-To: </span> OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br><span style="font-weight:bold">Date: </span> Tuesday, November 27, 2012 11:35 AM<br><span style="font-weight:bold">To: </span> OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br><span style="font-weight:bold">Subject: </span> Re: [openstack-dev] Python and OS version support<br></div><div><br></div><div xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><meta name="Generator" content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:807937870;
        mso-list-type:hybrid;
        mso-list-template-ids:-458852276 -993781648 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:27.0pt;
        text-indent:-.25in;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:63.0pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:99.0pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:135.0pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:171.0pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:207.0pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:243.0pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:279.0pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:315.0pt;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--><div lang="EN-US" link="blue" vlink="purple"><div class="WordSection1"><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">I’d just like to throw it out there that it is possible to support Python 2.6.5 or later alongside Python 3… making the minimum bar 2.7 just makes it easier.
 The real problem is OpenStack’s massive number of dependencies which are in a horribly mixed state as far as support for various Python versions. I don’t think we can even begin to draw boundaries around certain versions for Python 3 support until we do a
 complete audit of all our dependencies.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "><o:p> </o:p></span></p><p class="MsoListParagraph" style="margin-left:27.0pt;text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><!--[endif]--><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; ">Gabriel<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125); font-family: Calibri, sans-serif; "><o:p> </o:p></span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "> Doug Hellmann [<a href="mailto:doug.hellmann@dreamhost.com">mailto:doug.hellmann@dreamhost.com</a>]
<br><b>Sent:</b> Tuesday, November 27, 2012 10:15 AM<br><b>To:</b> Daniel P. Berrange; OpenStack Development Mailing List<br><b>Subject:</b> Re: [openstack-dev] Python and OS version support<o:p></o:p></span></p></div></div><p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p><div><p class="MsoNormal">On Tue, Nov 27, 2012 at 7:23 AM, Daniel P. Berrange <<a href="mailto:berrange@redhat.com" target="_blank">berrange@redhat.com</a>> wrote:<o:p></o:p></p><div><p class="MsoNormal" style="margin-bottom:12.0pt">On Mon, Nov 26, 2012 at 08:40:15AM -0800, Monty Taylor wrote:<br>
> Except where it comes to base python versions.<br>
><br>
> If we take the above to be correct, it has the following effect:<br>
><br>
> - We need to care about python 2.6 compatibility until such a time<br>> as there is a RHEL that has 2.7 in it.<br>
> - 2.7 should be our current dev focus, so if possible we should code<br>
> to 2.7 libs and then use backport packages like unittest2 to make<br>
> 2.6 happy.<br>
> - We can't REALLY start thinking about Python3 in earnest until a<br>
> RHEL release comes out with python 2.7, because 2.7/3.3 are needed<br>> for source-code compatible code<br>
><br>
> Net result - pretty much exactly what we're doing today, it just<br>
> gets it down on paper a little better.<br>
><br>
> Thoughts? Disagreements?<o:p></o:p></p></div><p class="MsoNormal">Even ignoring the question of what versions distros we're targetting<br>
support, I think we should be conservative in both the base python<br>
version, and external dependancies in general. I observe that there is<br>
a general tendancy to move to the latest release of external depedencies<br>
very quickly. As an example, Fedora 17 (which is not exactly an old<br>
release - in fact it is the current up2date Fedora release still) is<br>
already unable to satisfy OpenStack's min version requirements for<br>
something as simple as pep8.<br><br>
The view seems to be that things like DevStack / virtualenvs make it<br>
easy to switch to newer versions, and so there's little-to-no downside.<br>This is mostly prioritizing easier coding for developers, over ease of<br>
deployment & maintenence for both end users and distributors. Perhaps<br>
this was the right approach early in OpenStacks lifetime, but with<br>
people increasingly viewing OpenStack as production ready /  maturing<br>
I think the current balance is wrong. Indeed I believe the overly eager<br>switch to new versions is actively harmful to the community as a whole.<br><br>
I would like to see our guiding principal be to avoid min version upgrades<br>
unless there is a significant (ie show stopper) problem with existing min<br>
versions to is not practical to live with. If a new particular new feature<br>
is really desired, then structure things so that the new feature is only<br>
used if the corresponding version is available, and fallback to turning<br>off that feature otherwise. This avoids the need to upgrade min version<br>requirements, without preventing use of new features.<br><br>
To your specific point of Python base versions, my view is that we should<br>
aim for the lowest possible Python version. Yes, new python 2.7 version<br>introduces shiny new features over 2.6, but in reality it is entirely<br>
practical to write OpenStack without requiring these new features. As for<br>
Python 3.0, it may remove many warts from Python 2.x, but I really don't<o:p></o:p></p><div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal">It isn't about "shiny features," it's about support. Just as we don't have the resources to support old versions of OpenStack indefinitely, the Python development team has to declare EOL for older versions of Python.<o:p></o:p></p></div><div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal">Python 2.6 is currently only receiving security fixes. No other bug fixes or enhancements will be made. Even that level of support will stop in October of next year (<a href="http://www.python.org/download/releases/2.6.8/">http://www.python.org/download/releases/2.6.8/</a>).<o:p></o:p></p></div><div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal">Python 2.7 is receiving bug fixes now, but will be cut off from support after another few years. The cutoff date isn't set, yet, but that's not an excuse to stick with old tools.<o:p></o:p></p></div><div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal">Failure to move will mean we won't be able to use fixes for existing libraries that drop support for 2.x or take advantage of new libraries without any support for Python 2. The progress from 2.x to 3.x in the rest of the Python community
 is slow, but steady. Many developers are already targeting 3.3 first, with 2.7 (or earlier) support an afterthought. <o:p></o:p></p></div><div><p class="MsoNormal"><o:p> </o:p></p></div><div><p class="MsoNormal">Doug<o:p></o:p></p></div><div><p class="MsoNormal"> <o:p></o:p></p></div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><p class="MsoNormal">see much compelling reason to even consider supporting to that. Python<br>
2.x is going to be around for a long time yet and I don't see any end<br>
user relevant features of OpenStack that would be blocked by us sticking<br>
with 2.x only and ignoring 3.x entirely. There is certainly plenty of<br>
downside to increasing the min python above 2.6 for both os vendors and<br>end users.<br><br>
Regards,<br>
Daniel<br><span class="hoenzb"><span style="color:#888888">--</span></span><span style="color:#888888"><br><span class="hoenzb">|: <a href="http://berrange.com" target="_blank">http://berrange.com</a>      -o-    <a href="http://www.flickr.com/photos/dberrange/" target="_blank">http://www.flickr.com/photos/dberrange/</a> :|</span><br><span class="hoenzb">|: <a href="http://libvirt.org" target="_blank">http://libvirt.org</a>              -o-            
<a href="http://virt-manager.org" target="_blank">http://virt-manager.org</a> :|</span><br><span class="hoenzb">|: <a href="http://autobuild.org" target="_blank">http://autobuild.org</a>       -o-        
<a href="http://search.cpan.org/~danberr/" target="_blank">http://search.cpan.org/~danberr/</a> :|</span><br><span class="hoenzb">|: <a href="http://entangle-photo.org" target="_blank">http://entangle-photo.org</a>       -o-      
<a href="http://live.gnome.org/gtk-vnc" target="_blank">http://live.gnome.org/gtk-vnc</a> :|</span></span><o:p></o:p></p><div><div><p class="MsoNormal"><br>
_______________________________________________<br>
OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p></div></div></blockquote></div><p class="MsoNormal"><o:p> </o:p></p></div></div></div></div></span></body></html>