<story><title>Updated Packages – Python 3.3</title><url>https://wiki.ubuntu.com/RaringRingtail/TechnicalOverview#Python_3.3</url></story><parent_chain><item><author>ancarda</author><text>I don&apos;t code Python so as an outsider it always seemed strange that almost all code was written for Python 2.x - like 3 was unanimously rejected from the community. Can anyone shed light on why this is/was the case?</text></item></parent_chain><comment><author>masklinn</author><text>It was not a rejection. Python 3 (project name Python 3000, just to give you the kind of scope we&apos;re talking about) was always expected to be a long and rather arduous migration, because it &quot;cleaned up&quot; a number of things in backwards-incompatible manner: the stdlib was reorganized, syntax was added (and removed), semantics altered (the basic string of Python 2 is a bytestring, in Python 3 it&apos;s a codepoint sequence and implicit conversions were removed from the language), shuffling between keywords and regular symbols, etc... It might have been even more arduous than the core team expected, but most of the community has been aware it&apos;d take a long time from the start (the initial planning alone took ~30 months: the PEP3000 was created in April 2006 and Python 3.0 was released in December 2008, and as far as I remember Python 3.0 was not considered a production-able Python, more of a &quot;stable&quot; version for experiments and discovery in real-world settings)&lt;p&gt;Things were moving very slowly at the start, some features were backported to Python 2, others were reintroduced (in Python 3.2 and 3.3) and compatibility packages slowly appeared as people started experimenting with porting strategies and methods.&lt;p&gt;Since the second half of 2012, things have started picking up steam as bigger packages have started their migration effort (often as single-source, which is now considered the best strategy when possible) which is starting to solve the chicken-and-eggs problem for end-users (applications can&apos;t switch until all their dependencies are compatible)[0].&lt;p&gt;Python 2 will stick around though, there are 20 years of Python code which won&apos;t run as-is on Python 3, and may never do barring significant rewrite.&lt;p&gt;And of course Python 3 may yet be rejected by the community, although it definitely seems to be gaining — rather than losing — steam. The biggest problems in the long term will probably be in the Scientific Python communities.&lt;p&gt;[0] A few pretty big names are still Python 2 though, Werkzeug and Flask are big ones for webby stuff, the official-ish MySQL adapter is an other one for many, and a bunch are not considered &quot;production-ready&quot; state or side-packages are missing e.g. Django 1.5 is the start of Django&apos;s transition but many extensions such as South or the debug-toolbar are not p3-compatible.</text></comment>
<story><title>Updated Packages – Python 3.3</title><url>https://wiki.ubuntu.com/RaringRingtail/TechnicalOverview#Python_3.3</url></story><parent_chain><item><author>ancarda</author><text>I don&apos;t code Python so as an outsider it always seemed strange that almost all code was written for Python 2.x - like 3 was unanimously rejected from the community. Can anyone shed light on why this is/was the case?</text></item></parent_chain><comment><author>misnome</author><text>All code WAS written for 2.X, because 3 was either not around yet, under constantly changing flux (before release proper, and to a certain extent for a couple of versions) or the subsequent killer: Not enough libraries that you might depend on, worked in 3.0 yet - as it was written to be deliberately incompatible by removing legacy and old ways of doing things.&lt;p&gt;IIRC most of the big packages have finally moved over so it&apos;ll just become less of an issue over time.</text></comment>