Cannon: Where are we in the Python 3 transition?
Unfortunately people are running up against the classic problem of lacking buy-in from management. I regularly hear from people that they would switch if they could, but their manager(s) don't see any reason to switch and so they can't (or that they would do per-file porting, but they don't think they can convince their teammates to maintain the porting work). This can be especially frustrating if you use Python 3 in personal projects but are stuck on Python 2 at work. Hopefully Python 3 will continue to offer new features that will eventually entice reluctant managers to switch. Otherwise financial arguments might be necessary in the form of pointing out that porting to Python 3 is a one-time cost while staying on Python 2 past 2020 will be a perpetual cost for support to some enterprise provider of Python and will cost more in the long-term (e.g., paying for RHEL so that someone supports your Python 2 install past 2020). Have hope, though, that you can get buy-in from management for porting to Python 3 since others have and thus reached the "acceptance" stage."
Posted Dec 31, 2015 20:35 UTC (Thu)
by gwolf (subscriber, #14632)
[Link]
Posted Dec 31, 2015 22:02 UTC (Thu)
by arjan (subscriber, #36785)
[Link] (5 responses)
Posted Dec 31, 2015 23:02 UTC (Thu)
by juliank (guest, #45896)
[Link]
Posted Jan 1, 2016 9:38 UTC (Fri)
by codewiz (subscriber, #63050)
[Link]
> I wonder if the Perl 6 transition will go any faster.... Unlike Python 2.x, Perl 5.x is not being frozen to push a transition onto its developer community. From dev.perl.org: > I suspect it won't (perl is often used for write-only software) This is gratuitous and unnecessarily inflammatory.
Posted Jan 1, 2016 12:00 UTC (Fri)
by MarcB (subscriber, #101804)
[Link] (1 responses)
In practice, the "use Foo::Bar:from<Perl5>" construct plus the "X::AdHoc"-exception should already be enough to migrate almost all of our in-house software in a "top-down" manner, i.e. convert the main script, then our own modules it uses, one at a time.
That being said, the management issue still applies. At the moment, I could not present a convincing "business case" to justify the migration work (also: we simply would not have the time). Our Perl5 code works fine, contrary to Internet wisdom it is actually readable and maintainable, obviously we have much more experience with Perl5 than with Perl6 and Perl5 is maintained for the foreseeable future.
This might all be very different in a year or so. Perl6 should have improved in performance, more modules should be natively available, hopefully Perl6 on JVM will have caught up to MoarVM again (and have some speed advantages), ...
IMHO Python would have been much better of, if they had done the same: Declare Python3 to be a completely new language (even though old code might work as-is) but enable it to interface seamlessly to Python2. The question is, if this would have been possible.
Posted Jan 6, 2016 18:20 UTC (Wed)
by mathstuf (subscriber, #69389)
[Link]
Possible? Probably. Easy? No. Python's interpreter is implemented with all kinds of global state (guarded by the infamous GIL) that shouldn't really be there in any better-designed engine. Look at Lua where every state-manipulating function takes a lua_State* parameter to manipulate rather than having some nebulous set of implicit parameters (import table, ). If Python had done the same thing, then the functions could just look at whether they have a Python2 or Python3 state and voilà, you're half way there. But instead, they valued the ability to continue using the same (well, similar) C API.
Posted Jan 2, 2016 0:44 UTC (Sat)
by flussence (guest, #85566)
[Link]
Contrast to the other camp of programming languages, which have no complaints because nobody uses them.
Posted Dec 31, 2015 22:06 UTC (Thu)
by ldo (guest, #40946)
[Link] (14 responses)
The answer to that is what separates the innovative companies from the ones still stuck on Windows XP and Internet Explorer 6. And Python 2.
Posted Dec 31, 2015 22:18 UTC (Thu)
by lambda (subscriber, #40735)
[Link] (9 responses)
Sorry, I have a lot more time to innovate if I'm not having to port perfectly good, working code that does boring but necessary management tasks to a new language. Simply porting from Python 2 to Python 3 is just an expense, and the new features available aren't really enough to justify the expense.
Posted Jan 1, 2016 0:56 UTC (Fri)
by ldo (guest, #40946)
[Link] (8 responses)
Remember why you wrote the code in Python rather than, say, C or Java in the first place: it was because, being a higher-level language, it would make you more productive and the code becomes easier to maintain. That doesn’t mean you don’t have to maintain the code at all.
Posted Jan 1, 2016 8:04 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Seriously, there are quite a lot of well-written systems in Python 2. They don't suddenly become creaky bumbling messes if Python developers extrude yet-another-version of Python 3.
Posted Jan 4, 2016 22:39 UTC (Mon)
by pboddie (guest, #50784)
[Link] (5 responses)
If anyone launching spacecraft had the same attitude to working code, nothing would ever leave the launchpad. In fact, nothing would even get as far as the launchpad. Now substitute for the space industry any one of many other more mundane industries that just want working systems without having to burn organisational resources just to retain their existing capabilities. (And why not substitute various other disciplines for software engineering, too?) Of course, one can make observations about things being archaic and having severe limitations that don't seem to make sense any more, and one can make the case for improvements to those systems to make them more accessible and intuitive for developers and users (thinking of things like flight reservation and banking systems here). And one can also advocate that organisations should retain the capability of improving and adapting their systems. But let us not pretend that a "technology provider"-mandated migration that is supposedly "good for you" (or any one of a number of questionable analogies used to advocate porting stacks of Python 2 code, in this instance), all for marginal benefit and at potentially significant cost, is fundamentally a necessary or desirable thing. It is, as was written earlier, an expense and a potential deterrent to the adoption of a technology in both its existing and its future forms.
Posted Jan 4, 2016 23:20 UTC (Mon)
by ldo (guest, #40946)
[Link] (4 responses)
Posted Jan 5, 2016 0:14 UTC (Tue)
by bronson (subscriber, #4806)
[Link]
Posted Jan 5, 2016 0:19 UTC (Tue)
by Wol (subscriber, #4433)
[Link] (1 responses)
If the requirements don't change, don't change the code. The requirements changed and they didn't change the code ... oopssss!
And one of the BIG problems with IT, is its proponents are very much "ooohh shiny" about new toys - why should business expect to cough up loads of cash for new equipment, when the old stuff is working fine ? I'm minded of a story about when RS232 serial ports disappeared from new computers as a default - apparently when a end-user complained about needing them to drive a load of peripherals, the reaction (of Microsoft) was "just replace your peripherals". At $1/4M per peripheral (and quite a lot of them), that's an extremely expensive option!
New != Better !!!
Cheers,
Posted Jan 5, 2016 10:16 UTC (Tue)
by smurf (subscriber, #17840)
[Link]
Posted Jan 5, 2016 13:57 UTC (Tue)
by pboddie (guest, #50784)
[Link]
And yes, despite what people would claim here, it affects the Linux kernel, too. Because things like driver frameworks and other internals seem to change over time, meaning that developers have to either get stuff into the mainline kernel distribution (and hope it doesn't get flung out) or maintain their own fork indefinitely, both being "treadmill" kinds of tasks that ultimately prove unappealing when there are other demands on people's time and money.
Posted Jan 5, 2016 3:16 UTC (Tue)
by jwarnica (subscriber, #27492)
[Link]
Posted Jan 1, 2016 20:39 UTC (Fri)
by ovitters (guest, #27950)
[Link] (3 responses)
Posted Jan 1, 2016 21:07 UTC (Fri)
by ldo (guest, #40946)
[Link] (2 responses)
Have you noticed that the successful companies are run by people who understand that concepts like “innovation” and “excellence” are not “buzzword bingo”?
When was the last successful company run by engineers?
Posted Jan 1, 2016 23:57 UTC (Fri)
by Wol (subscriber, #4433)
[Link]
I think Hewlett-Packard are a classic example of a company that went downhill when the engineers were forced out.
Yes the leaders need business nous, but, without solid engineering experience in the top leadership, any company that competes on merit is likely to get flattened. Notice I said "competes on merit" - unfortunately many seriously mediocre (or worse) companies prefer to compete on dirty tricks, and the average consumer doesn't realise what's going on.
Cheers,
Posted Jan 2, 2016 18:03 UTC (Sat)
by jospoortvliet (guest, #33164)
[Link]
Posted Dec 31, 2015 22:24 UTC (Thu)
by ibukanov (subscriber, #3942)
[Link] (56 responses)
Posted Jan 1, 2016 0:18 UTC (Fri)
by ldo (guest, #40946)
[Link] (39 responses)
Do you think of your code as something that, once built, remains static and unchanging thereafter? Or as something living and growing, needing regular care and feeding?
It seems to me that proprietary software tends to take the former attitude, while open-source projects are the latter.
Which one remains more agile, more adaptable to changing circumstances?
Posted Jan 1, 2016 0:32 UTC (Fri)
by sfeam (subscriber, #2841)
[Link] (25 responses)
Oh, and ponies.
Posted Jan 1, 2016 0:47 UTC (Fri)
by ldo (guest, #40946)
[Link] (24 responses)
It is inaction that leads to bitrot and death.
Posted Jan 1, 2016 1:04 UTC (Fri)
by sfeam (subscriber, #2841)
[Link] (9 responses)
Python exemplifies the other extreme. Code written in Python is a sand castle built on shifting sand. It is at risk from every shiny new wave of change and will inevitably crumble as the tide comes in. If you have a large pail+shovel crew you can keep your castle looking good, but if the crew wanders off to play with other castles then by next Tuesday yours will be uninhabitable.
Posted Jan 1, 2016 1:15 UTC (Fri)
by ldo (guest, #40946)
[Link] (5 responses)
Posted Jan 1, 2016 8:09 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (4 responses)
They were pretty compatible with each other, so that was actually a selling point compared to "let's rewrite the world" Ruby and "next-version-in-another-decade" Perl.
Posted Jan 1, 2016 9:34 UTC (Fri)
by jmtapio (guest, #23124)
[Link] (3 responses)
I think that not having to maintain stable software is a complete myth in the generic real world. Ok, you can have some limited functionality stuff that works pretty much everywhere. But that is the exception and not the norm.
Posted Jan 2, 2016 0:06 UTC (Sat)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Both is false for Python3 - you have to carefully check all source code for incorrect string use and then you have to fix your native code modules.
Posted Jan 2, 2016 19:41 UTC (Sat)
by niner (subscriber, #26151)
[Link]
In the Python world maybe. In the past 15 years, the time we spent on getting our quarter million lines of code application to work on newer version of Perl can be counted in single digit hours. And this time was spent on fixing actual bugs that just by luck did not cause problems earlier.
Backwards compatibility is certainly possible when developers care about their users.
Posted Jan 4, 2016 22:11 UTC (Mon)
by pboddie (guest, #50784)
[Link]
Cyberax wrote... jmtapio wrote... Well, 1.5 and 3.x are not part of the 2.x series. That's your problem right there with things like Unicode: it wasn't directly supported in 1.5 (but only in the 1.6 release equivalent to the 2.0 release), and is handled differently in 3.x. But what you're describing is problems with library evolution, albeit in response to new language features, where those libraries fail to uphold their existing semantics in later versions. However, I would argue that such problems are a consequence of pressure to be seen to be doing the "right" thing in front of the language developers, sweeping away old but working approaches in a way that admittedly does allow a degree of code simplification, but which causes library users to make very difficult choices.
Posted Jan 1, 2016 14:09 UTC (Fri)
by smurf (subscriber, #17840)
[Link]
Fact of life: script languages change. Deal with it. Python is better than many others in this regard. At least when a Python program hits an unexpected condition, it crashes with an actual error message, instead of plodding along like a PHP or Perl script. I consider that to be a Very Good Thing.
Yes, the SSL thing was bad, but then you can choose between using SSL in a safe way or not using it at all. I'd rather see a crash than security theater.
Posted Jan 3, 2016 10:59 UTC (Sun)
by warmcat (guest, #26416)
[Link] (1 responses)
From the point of view of "old code relying on it" being kernel code... there is deliberately no attempt at backward compatibility whatsoever.
At least it'd be better if you put the word 'userland' in there somewhere.
Posted Jan 3, 2016 13:17 UTC (Sun)
by smurf (subscriber, #17840)
[Link]
Posted Jan 1, 2016 1:05 UTC (Fri)
by welinder (guest, #4699)
[Link] (13 responses)
So the kernel is a find example for the opposite of your statement.
Posted Jan 1, 2016 1:22 UTC (Fri)
by ldo (guest, #40946)
[Link] (12 responses)
Backward compatibility in userland does not stop development of new APIs (e.g. sysfs, KMS), nor does it preclude reorganizations of the internal kernel architecture where this is seen as necessary for future enhancements.
There is a rule that no line of code goes into the kernel without some live, active maintainer who can respond to queries about that code. As Microsoft discovered to its cost.
Posted Jan 1, 2016 2:52 UTC (Fri)
by butlerm (subscriber, #13312)
[Link] (11 responses)
By contrast, Python 3 is more different from Python 2 than Linux is from BSD. Far more different. A new creature, not designed to implement the same interface or (as I understand it) any general purpose subset thereof at all. If you want to write software and still have it running twenty years down the road, that could be a problem, albeit one easily solved by someone maintaining Python 2 indefinitely.
Posted Jan 1, 2016 3:14 UTC (Fri)
by ldo (guest, #40946)
[Link] (1 responses)
Maybe you shouldn’t have mentioned BSD. That predates Linux by a long shot, in the way that Python 2 predates Python 3. Yet that community struggles to achieve the level of acceptance that Linux has managed. Nowadays, it is they who predominantly copy features from the Linux project, not the other way round.
There is something to be said for making a clean start, without feeling obliged to hang onto every bit of baggage from the past.
Posted Jan 6, 2016 18:49 UTC (Wed)
by mathstuf (subscriber, #69389)
[Link]
Well, Linux is also refusing (or just taking a long time) to take their (sometimes better) ideas. kqueue, forkfd, capsicum, and more. Other times Linux gets things inspired by the BSDs but having different tradeoffs (kqueue vs. epoll).
Posted Jan 1, 2016 8:14 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
But let's pretend that Py3 is a new language. Then why the old language is deprecated?
Posted Jan 7, 2016 14:44 UTC (Thu)
by pboddie (guest, #50784)
[Link]
Obviously, Jython is available as a Python 2 runtime without the GIL, or at least with some support for simultaneous execution of threaded code, and things like PyPy and Micropython also offer different trade-offs. I think I've noted many times that had Python 3 been about fixing the things that people struggled the most with when using Python, it would have kept language changes to a minimum and dealt with the GIL, GC and other implementation issues with CPython.
Posted Jan 1, 2016 14:20 UTC (Fri)
by smurf (subscriber, #17840)
[Link] (6 responses)
Maintaining Py2 indefinitely is not "easy". Also, Python is no worse than other languages, compiled or not. Try compiling a C++ program from that time, or running an ancient PHP or Perl script. Good luck, you'll need it.
Posted Jan 2, 2016 0:14 UTC (Sat)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Posted Jan 2, 2016 1:02 UTC (Sat)
by flussence (guest, #85566)
[Link]
In this one, you condemn them for having supposedly worse backward compatibility than Python.
???
Posted Jan 2, 2016 8:11 UTC (Sat)
by ibukanov (subscriber, #3942)
[Link] (3 responses)
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
src/resources.C:57:33: warning: conversion to ‘int’ from ‘size_t {aka long unsigned int}’ may alter its value [-Wconversion]
src/resources.C:168:46: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
src/main.C:177:12: warning: deleting object of abstract class type ‘ResourceSource’ which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]
The last one discovered a real bug but it should be harmless in this case. The resulting executable runs normally.
Posted Jan 3, 2016 17:36 UTC (Sun)
by k8to (guest, #15413)
[Link] (2 responses)
(I didn't write that C++).
You can argue that the C++ code was never right, but I think C++ is definitely not a shining example of the language where code always keeps working. Now, I have a lot of C that still works from the 1980s.
Posted Jan 11, 2016 12:16 UTC (Mon)
by khim (subscriber, #9252)
[Link] (1 responses)
Posted Jan 11, 2016 22:33 UTC (Mon)
by smurf (subscriber, #17840)
[Link]
Posted Jan 1, 2016 0:50 UTC (Fri)
by b7j0c (guest, #27559)
[Link] (2 responses)
For most companies, it isn't either, it is something like cattle...you want to make sure you aren't spending more on grain and water than the resulting beef will be worth.
In many situations, programs providing small marginal utility don't justify this level of care.
With container tech like Docker, its easier than ever to hide ugly dependencies away. Most people faced down with deteriorating dependencies will deal with it once in a Dockerfile and run out the clock.
Posted Jan 1, 2016 7:08 UTC (Fri)
by patrakov (subscriber, #97174)
[Link] (1 responses)
I'd rather watch what dies first: Python 2 or Dockerfiles in their current form.
Posted Jan 1, 2016 12:25 UTC (Fri)
by ibukanov (subscriber, #3942)
[Link]
Posted Jan 1, 2016 1:17 UTC (Fri)
by xtifr (guest, #143)
[Link] (9 responses)
Old code needs enough maintenance work to keep it up-to-date with changing requirements and such already! Needing to fix major portions of it because the language it's written in keeps changing randomly is just more pointless and annoying work. Even in open source projects.
People don't generally rewrite their C code every time a new version of the C standards come out. Fortunately, they don't have to, because the C standards guys are generally very good at maintaining backwards compatibility. C89 code still works fine with a C11 compiler. Aside from finally dropping gets() (which has been considered a bug for ages), I can't think of a single breaking change since the K&R->ANSI transition 25 years ago.
C++ has been much more unstable, but it looks like things may finally settling down. The only big thing I've seen recently that may _require_ source-code changes to old code is the replacement of auto_ptr with unique_ptr. Both are supported in C++11/14, but the former is supposed to be removed in C++17 (or so I've heard).
Other languages may lack the stability of good old C, but I can't really think of another _established_ language that's gone for wholesale random breakage of existing code the way Python did.
Posted Jan 1, 2016 1:24 UTC (Fri)
by ldo (guest, #40946)
[Link] (8 responses)
But that’s the point—the language didn”t change “randomly”, it had to change precisely because real-world requirements have changed.
The same sorts of changes in requirements affect your code as well, which is why you need to keep up to date.
Posted Jan 1, 2016 8:14 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (6 responses)
Python 3 fulfills no real-world driven requirements except for scratching developers' itches. Otherwise, they would have found a way to remove GIL and add a JIT-compiler.
Posted Jan 1, 2016 14:13 UTC (Fri)
by smurf (subscriber, #17840)
[Link] (2 responses)
Removing the GIL is very easy. Just drop support for threading. You want to keep that module? good luck, you'll need it.
Posted Jan 2, 2016 0:12 UTC (Sat)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
PyPy is working on STM which is supposed to be the new Messiah that will magically make everything better and even transform Python programs into optimized C++ code.
In reality, STM struggles with more than 4 cores and has a lot of limitations ( http://doc.pypy.org/en/latest/stm.html#current-status-stm... ). It's also pretty clear that it's never going to be as fast as regular threading for most of tasks.
Posted Jan 2, 2016 14:04 UTC (Sat)
by smurf (subscriber, #17840)
[Link]
Posted Jan 1, 2016 20:45 UTC (Fri)
by ldo (guest, #40946)
[Link] (2 responses)
What you need to do is take some substantial piece of code written in Python 3, and rewrite it in Python 2 and show how it works just as well, or even better. That would help to demonstrate that you have a point. Otherwise you are just indulging in hand-waving hot air.
Posted Jan 2, 2016 0:20 UTC (Sat)
by Cyberax (✭ supporter ✭, #52523)
[Link]
> What you need to do is take some substantial piece of code written in Python 3, and rewrite it in Python 2 and show how it works just as well, or even better. That would help to demonstrate that you have a point.
BTW, I did this to use PyPy because it didn't support Py3 or Py2 modules back then.
Posted Jan 7, 2016 17:15 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link]
Posted Jan 1, 2016 12:34 UTC (Fri)
by mpr22 (subscriber, #60784)
[Link]
Posted Jan 1, 2016 0:58 UTC (Fri)
by smurf (subscriber, #17840)
[Link] (15 responses)
Posted Jan 1, 2016 3:29 UTC (Fri)
by ldo (guest, #40946)
[Link] (10 responses)
I wonder about that. The 4.0 version number would be a good point at which to make more backward-incompatible fixes to the language. Much as I enjoy using Python, it currently exhibits a few instances of brain-damage that come to mind:
Or, even better, why not subsume them (along with exceptions) into full-fledged continuations?
Posted Jan 1, 2016 14:38 UTC (Fri)
by smurf (subscriber, #17840)
[Link] (9 responses)
One conditional expression is as good as any other. The semantics are the same. Expressing this thing in English has the same structure as Python.
You can't do continuations because Python is not just CPython and some VMs simply do not and never will support first-class continuations. That was a deliberate design decision. "yield from", or Py3.5's async/await evolution of that concept, is as good as we're going to get and, frankly, they're a lot easier to understand and debug than anything using call/cc.
Posted Jan 1, 2016 20:48 UTC (Fri)
by ldo (guest, #40946)
[Link] (3 responses)
And having participated in online discussions involving code in Python and other languages, I have seen how it bites the Python code much more often.
Never forget that the human propensity for screwing things up is practically infinite. Having a bit of redundancy in the code structuring (i.e. expressing it both in bracketing and indentation) helps to mitigate that somewhat. Chucking away that redundancy is not a good idea.
Posted Jan 1, 2016 23:39 UTC (Fri)
by anselm (subscriber, #2796)
[Link] (2 responses)
The problem with that idea is that in languages like C, indentation doesn't actually provide useful redundancy because the compiler ignores it completely. Hence you can have pieces of code that suggest one thing to a human reader but mean something quite different to the compiler, along the lines of
You can of course try to work around this with style guides that mandate braces, or automatic reformatting of source code when it is checked into a VCS, but Python avoids this type of ambiguity altogether to begin with because both human readers and the language interpreter only look at the indentation to infer program structure.
Posted Jan 1, 2016 23:57 UTC (Fri)
by ldo (guest, #40946)
[Link]
It provides redundancy for human readers. A discrepancy between the bracketing and the indentation can at least ring some alarm bells.
Luckily, in Python, you can at least put back the redundancy the other way—this time, the bracketing symbols, in the form of “#end” comments, are the things being ignored by the compiler.
This is how I write my Python code.
Posted Jan 5, 2016 11:41 UTC (Tue)
by jezuch (subscriber, #52988)
[Link]
And that's why the coding style guidelines in my team prohibit "bare" statements like these. Use braces everywhere or die by checkstyle ;)
Posted Jan 1, 2016 21:13 UTC (Fri)
by ldo (guest, #40946)
[Link] (4 responses)
Every other conditional construct in the world puts the condition before the true- and false-branches, not between them. Having the condition in-between makes no sense at all.
Python already copied things from C, like “=” for assignment and “==” for equality, instead of “:=” and “=” respectively as in the Algol family. (I’m old enough to still be wistful about that from time to time.) Why did it have to invent its own form of conditional expression?
Other things that Python does differently, it does differently for a good and useful reason (e.g. range() including the first bound but not the second). But the rationale for the design of its conditional expression seems completely lacking.
Posted Jan 7, 2016 17:48 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (3 responses)
Posted Jan 8, 2016 9:46 UTC (Fri)
by mbunkus (subscriber, #87248)
[Link]
[0 mbunkus@chai-latte ~] perl -le 'print $_ for (0..2)'
Posted Jan 8, 2016 12:39 UTC (Fri)
by niner (subscriber, #26151)
[Link] (1 responses)
nine@sphinx:~> perl6 -e '.say for 0..3'
Posted Jan 8, 2016 19:38 UTC (Fri)
by bronson (subscriber, #4806)
[Link]
irb(main):003:0> (1..3).to_a
Posted Jan 1, 2016 7:38 UTC (Fri)
by allesfresser (guest, #216)
[Link]
Posted Jan 1, 2016 12:09 UTC (Fri)
by ibukanov (subscriber, #3942)
[Link] (2 responses)
Posted Jan 2, 2016 17:33 UTC (Sat)
by kvaml (guest, #61841)
[Link] (1 responses)
Posted Jan 3, 2016 17:45 UTC (Sun)
by k8to (guest, #15413)
[Link]
But that's not a backwards incompatibility problem.
Indeed, looking through https://www.python.org/download/releases/2.0/ I see no backwards incompatible changes.
Posted Dec 31, 2015 22:46 UTC (Thu)
by ledow (guest, #11753)
[Link] (1 responses)
Sure, we all know that an API can't have 20-20 vision into the future, and that some things have to be deprecated and changed, but when you are touting something as "just another version", then create documents that can't be close to summarised (the best I can find is: http://python-future.org/compatible_idioms.html and just look how long that page is) about what changes are required, and then complain that people aren't all flooding over to the new version, you are doing something wrong.
The only Python-based programs I used are all broken on a regular basis anyway. Nobody seems to care. For instance, Emscripten has a python installer that relies on Python 2.7 and urllib2, which doesn't work out of the box on some Ubuntu versions because the code changed for connecting to SSL sites and NOBODY bothered to patch it. I can't say I blame them, as at one time the code worked perfectly fine. But even where it's got fixes suggested for it, people are doing things like just overriding the way the whole Python interpreter treats that code, or forcing SSL by overloaded functions, etc. rather than fix the underlying problem.
I honestly think that if you can't transition in a safe way, with only minor inconvenience, that doesn't break the majority of programs (even if that means printing red stderr warnings in all-caps on the use of certain constructs), then your transition just isn't going to happen.
Programs will instead die because they have broken. Then people will rewrite them. And if you have to rewrite them, why would you bother doing it in the same language, you're much more likely to just use the current language-of-the-moment that hasn't yet broken itself several times over.
Such major problems only hint at COMPLETE lack of forethought about how the language needs to work, rather than a planned and sensible evolution of the language.
Posted Jan 1, 2016 0:52 UTC (Fri)
by smurf (subscriber, #17840)
[Link]
Posted Jan 1, 2016 0:02 UTC (Fri)
by iabervon (subscriber, #722)
[Link]
Still, the first reason we found not to adopt Python 3 for our latest project was that other groups' company-specific libraries didn't support it, and their development effort is going into REST APIs to their services rather than porting libraries.
Posted Jan 1, 2016 0:43 UTC (Fri)
by b7j0c (guest, #27559)
[Link] (23 responses)
Lesson learned: if you want to community to follow you to the future, backwards-compatibility is non-negotiable.
If python3 had supported all python2 programs without error or warning, 95% of python developers would be at or near the latest version.
Posted Jan 1, 2016 1:27 UTC (Fri)
by dskoll (subscriber, #1630)
[Link]
if you want to community to follow you to the future, backwards-compatibility is non-negotiable.
That should be Quote of the Week.
Posted Jan 1, 2016 1:58 UTC (Fri)
by ldo (guest, #40946)
[Link] (21 responses)
Where is there a Python 2.x “community”? All I see is a bunch of passive users wringing their hands over their piles of mouldering legacy code. A “community” is an active grouping of people contributing to ongoing development—people who give, not just receive.
In this sense, the Python “community” has clearly moved to Python 3.x.
Posted Jan 1, 2016 3:18 UTC (Fri)
by rgmoore (✭ supporter ✭, #75)
[Link] (13 responses)
It seems to me that the underlying problem is that there are really two relevant Python communities: the language designers who write Python and the programmers who program in Python. There apparently isn't enough overlap between the two groups, so that the developers are ignoring the desires of the programmers, and the programmers appear not to have the capability of taking over maintaining Python 2.x so they can keep their backward compatibility. Dismissing the programmers as a bunch of passive users isn't helpful; a language needs both groups to be really successful.
Posted Jan 1, 2016 4:31 UTC (Fri)
by ldo (guest, #40946)
[Link] (12 responses)
Posted Jan 1, 2016 5:19 UTC (Fri)
by sfeam (subscriber, #2841)
[Link] (6 responses)
Sure - “the one who writes the code makes the rules” - but if those rules make life hard for downstream users don't be surprised if they gradually go elsewhere. I say this as someone responsible for managing a couple of medium sized projects that have been burned by Python's instability. The lesson I learned was to veto choosing Python for new projects, and to the extent we have resources for porting old code I recommend migrating away from Python altogether rather than moving to Python 3.
Posted Jan 1, 2016 6:38 UTC (Fri)
by ldo (guest, #40946)
[Link] (5 responses)
Who is going to bother to work, for free, supporting old legacy code for users who are too cheap to upgrade? Nobody.
Posted Jan 1, 2016 12:05 UTC (Fri)
by khim (subscriber, #9252)
[Link] (4 responses)
Well, nobody except for developers of C, C++, C#, Go, Java, JavaScript, Perl5, PHP, and many-many other languages. Note that two last languages were burned by an attempts to introduce incompatible change and did the right thing. As for Python? The only thing you need to know about it: don't. Don't use it if possible and especially don't use Python3 for anything ever. You'll be happier that way. I still don't understand why this lesson is so hard to understand for developers of Python. Perl5 developers realized what happens first: Perl5 was developed in parallel to Perl6 and they only needed to decide that it'll continue to be the case in the future - indefinitely. PHP6 was never all that important for the PHP developers and users never actually felt the need to switch, thus it's abandonment was an easy decision. Python… python is in bad shape there: it's developers are still pretending that they could change the fate and shove the unwanted and pointless changes into the language. Their only hope (and I mean only) is that people will adopt it like scientific truth is adopted: A new scientific truth does not triumph by convincing its opponents and making them see the light, but rather because its opponents eventually die, and a new generation grows up that is familiar with it. I guess eventually, after maybe two or three decades, Python3 will became “a standard version of Python”, but it'll happen not because people will switch to it, but because new people will come and for them Python3 will be the only version they knew for a long time (in schools, universities, etc). The extemely naive hope that people will start adopting Python3 because Python2 support time will end is just stupid: it's not that hard to support a package (especially since for real users “support” here does not mean “we'll need to decide what changes to adopt and what to drop” but rather “we'll change the code when and if it'll be needed to make sure old version is still buildable on new systems”), it could be done for decades for sure. Only time will tell what happens to python in the next 20-30 years when people will finally switch to Python3. My guess would that it'll become just another “legacy” platform because of that transition and join cool ranks of Cobol and Perl anyway… but who knows, it's looong time.
Posted Jan 1, 2016 14:41 UTC (Fri)
by nix (subscriber, #2304)
[Link]
Posted Jan 1, 2016 16:04 UTC (Fri)
by welinder (guest, #4699)
[Link]
Posted Jan 1, 2016 20:38 UTC (Fri)
by ldo (guest, #40946)
[Link]
Posted Jan 6, 2016 20:39 UTC (Wed)
by mathstuf (subscriber, #69389)
[Link]
Just as a note, Python 2 only (officially) supports Visual Studio 2008 as its newest compiler on Windows[1]. Luckily, it is C, so you can compile-and-forget-it and just ship those binaries when the rest of your code grows up, but it is still a significant burden since finding the Express edition is non-trivial (nevermind a 64-bit toolchain if you need it). Importing the project into 2013 was a colossal failure (whether the fault of Visual Studio or something wrong in the project files is up for debate). Even bumping it to 2010 would be a great life saver for many people.
[1]https://docs.python.org/2/using/windows.html#compiling-py...
Posted Jan 1, 2016 17:31 UTC (Fri)
by rgmoore (✭ supporter ✭, #75)
[Link] (4 responses)
A big thing that ordinary programmers contribute are the universe of libraries that extend from its core features into the realms of problems that programmers need to solve. Without those libraries, a language is mostly a toy. The big risk of breaking compatibility is that it also breaks compatibility for those libraries, which leaves you with a language that doesn't fulfill it's basic purpose of letting people get their work done.
Posted Jan 1, 2016 20:41 UTC (Fri)
by ldo (guest, #40946)
[Link] (3 responses)
Posted Jan 1, 2016 23:17 UTC (Fri)
by barryascott (subscriber, #80640)
[Link] (2 responses)
But I solved that problem another way. I ported my code from py2+wxPython to py3+PyQt5, and it was
Posted Jan 3, 2016 17:52 UTC (Sun)
by k8to (guest, #15413)
[Link] (1 responses)
I suppose the value of wxwindows has faded as Qt has become increasingly good at abstracting the native platform issues and foibles. May the Qt project live long and healthily!
Posted Jan 4, 2016 12:22 UTC (Mon)
by renox (guest, #23785)
[Link]
Only if the language which you use has good binding for Qt!
Posted Jan 1, 2016 8:16 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Most of the actual interesting development is concentrated in library code, and Py2 is very much alive and kicking there.
Oh, and don't forget that the second major Python implementation (PyPy) still barely supports Py3.
Posted Jan 1, 2016 22:47 UTC (Fri)
by b7j0c (guest, #27559)
[Link]
Except for the ones who have moved on to Go, Swift and even Java so they can be part of the modern era
Python3 is worthless in the modern era for anything but the most trivial scripting tasks. It brings nothing to the table and is hopelessly lagging, by decades, the capabilities of its peers
Posted Jan 2, 2016 1:20 UTC (Sat)
by flussence (guest, #85566)
[Link] (3 responses)
What's left of it, if you're representative of how it treats its own. I thought pythons weren't venomous snakes.
Posted Jan 2, 2016 1:51 UTC (Sat)
by ldo (guest, #40946)
[Link] (2 responses)
Your attempt to make things personal is an admission that you have run out of rational things to say.
Posted Jan 2, 2016 2:48 UTC (Sat)
by flussence (guest, #85566)
[Link]
And repeatedly trying to bash Python 2 users over the head with the idea that they're so insignificant they might as well not exist isn't?
The only thing I admit is that rationalizing in the face of such sheer arrogance is a waste of *anyone's* time.
Posted Jan 2, 2016 5:48 UTC (Sat)
by viro (subscriber, #7872)
[Link]
*plonk*
Posted Jan 11, 2016 16:01 UTC (Mon)
by rpcope1 (guest, #100731)
[Link]
> In this sense, the Python “community” has clearly moved to Python 3.x.
You know, I'm simply one data point, but my employer maintains a rather sizable codebase (many hundreds of thousands of lines of Python 2.x) with lots of new code being produced and no clear path to migrating to Python 3.x in the near future; we are also a "tech" company, so this probably means we ahead of a lot of other users of Python. Even a lot of the high performance greenfield work I have been doing is yet again limited to 2.x because PyPy's support for 3.x is limited at best. I can't speak for the community at large, but to say that no "significant community" is interested in 2.x at the current time, is perhaps an overstatement.
Posted Jan 1, 2016 3:28 UTC (Fri)
by khim (subscriber, #9252)
[Link] (1 responses)
From looking on the article it does not look like Python3 is even looking on the right numbers. To me transition from Python2 to Python3 does not really resemble transition from Perl5 to Perl6 but more like transition from Visual Basic to Visual Fred. Once upon time Visual Basic was one of the most popular languages out there. Some even claim is was the most popular language for development. When Visual Basic was declared dead and new, completely incompatible version (derisively called Visual Fred) was pushed as possible replacement Visual Basic developers have passed all these stages of Kübler-Ross model but eventually, of course, they all have reached “acceptance” phase and they have switched… to C#, Java, JavaScript, heck, some even picked Python! Today Visual Basic community is very pale shadow of it's former self. It's still one of top ten languages, but if you'll actually look on the tiobe index you'll find to your great surprise that regular Visual Basic is still about half-as-popular as it's newer cousin! And, remember, we are talking about proprietary, Windows-only language only available in binary form which was declared dead seven years ago! Python 2.7 is not like Visual Basic. It's open-source project which could be compiled on any reasonably decent version OS. I don't understand why “people will need to pay for Python 2 support”? You could always just grab latest version and use it. Or maybe even better: just stick with some tested and working version (2.7.8 looks good). Heck, even today it's often not a good idea to even use latest version because (as was noted above) it already breaks stuff.
Posted Jan 1, 2016 18:44 UTC (Fri)
by b7j0c (guest, #27559)
[Link]
Exactly. I predict many Python2 users will just freeze at a stable version and run out the clock, and then move on to an entirely new stack at some point in the future....which likely won't be Python* at all
Posted Jan 1, 2016 11:29 UTC (Fri)
by job (guest, #670)
[Link] (6 responses)
Posted Jan 2, 2016 0:05 UTC (Sat)
by ldo (guest, #40946)
[Link] (5 responses)
And if they did that, they would abandon all hope of benefitting from future network effects.
Remember why Free Software has been so successful in the first place: it’s because no one company, no matter how big, can match the resources of an entire active community of users, developers, documentors and other contributors. Any company that forks off the code into its own private version can say goodbye to that.
Posted Jan 2, 2016 0:44 UTC (Sat)
by job (guest, #670)
[Link] (4 responses)
Posted Jan 2, 2016 1:22 UTC (Sat)
by ldo (guest, #40946)
[Link] (3 responses)
Posted Jan 4, 2016 8:48 UTC (Mon)
by linuxrocks123 (subscriber, #34648)
[Link] (2 responses)
That's a big community, but Python 2 only needs a small one to keep going. The Python 2 standard library is vast and will not be going away. The external library developers supporting Python 2 will likely continue to do so as long as there is demand; for those that don't, porting from 3 to 2 is fairly easy since 3 really just screwed things up and didn't actually add many meaningful improvements to the language. A small community can handle the rare cases where some jerk decides to stop supporting Python 2 out of spite and a fork is necessary. I see a long, bright future for Python 2.
There was no reason Python 3 needed to exist as a fork of the language. Saying it was necessary to make backward-incompatible changes to the language to improve it betrays an extreme lack of imagination. For an example of a language handling major improvements in a grown-up manner, take a look at C++11.
Posted Jan 5, 2016 10:39 UTC (Tue)
by smurf (subscriber, #17840)
[Link] (1 responses)
I'm not saying that this is an unsolvable problem, but simply stating that there's "no reason" is wrong. You may not accept the Py3 authors' reasoning why they thought a new version is unavoidable, and in hindsight (given six.* and a couple of changes to both Px3 and 2.7.x) they might even retroactively change their mind, but at the time the situation was different – and we still don't have time machines.
Posted Jan 5, 2016 12:48 UTC (Tue)
by job (guest, #670)
[Link]
Sure, you would have to wait until your libraries handled it to use it (use polymorphism for backwards compatibility), but at least it would have been possible to keep the ecosystem of code.
Posted Jan 2, 2016 0:11 UTC (Sat)
by kiko (subscriber, #69905)
[Link]
Posted Jan 2, 2016 23:04 UTC (Sat)
by njs (subscriber, #40338)
[Link] (3 responses)
Obviously this is mostly a matter of looking from different perspectives, and possibly "perspective" is the thing that internet comment sections are most pessimized for, but figured I'd throw this in at the bottom of the pile in case anyone reads that far :-).
Posted Jan 4, 2016 18:08 UTC (Mon)
by k8to (guest, #15413)
[Link]
This is mostly how I view it in the open source world. In the commercial world of the app I dayjob on, python3 is not on the horizon because we have a large body of legacy code we're not actively working on. That's a smell in general but so it goes...
Posted Jan 5, 2016 7:47 UTC (Tue)
by abartlet (subscriber, #3928)
[Link] (1 responses)
While some may say that means we are still at the 'denial' stage, I would counter that we feel the Python3 advocates have for so long been in denial about the make-work being enforced on other projects. I'm glad to finally see some involved in Python writing that, given hindsight, the execution of the transition didn't go well, because I'm a bit sick of it being seen as some moral obligation to forward port our codebase to the new language.
As it is, the drivers and implementers of the transition have been the Linux distributions (alone). That Red Hat staff are both those preparing the Python3 patches and maintaining RHEL, which doesn't ship Python3, is a particular irony. (Samba is an important piece of enterprise software, so what ships on RHEL matters a lot in terms of what we can depend on. It also makes the claims that Python2 will go unsupported any time soon look silly, as Red Hat will have no choice for most of another decade).
I don't just speak from this as an observer: Samba faced a similar choice, and looked over the same cliff. We decided we couldn't abandon our users, or leave backward compatibility behind, even for a far better architecture. We avoided this option, and spent engineer-years merging the efforts within Samba to build Samba 4.0, with both new features and the old.
Posted Jan 5, 2016 14:12 UTC (Tue)
by pboddie (guest, #50784)
[Link]
I also find it interesting that there's been this more recent "messaging" about how people should start asking other people for money to keep supporting Python 2.x code, targeting those users who don't want (or who aren't ready) to move to Python 3. Meanwhile, the "make-work" of porting stuff to Python 3 - breaking and then unbreaking code that already worked - was something that everyone had to do for free.
Problem not exclusive to Python...
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Perl 5.22.1external link is the current stable version of Perl. Perl 5 is actively maintainedexternal link and developed (git repository)external link by a large group of dedicated volunteersexternal link. Perl 5 will be developed and maintained for many years to come.
Cannon: Where are we in the Python 3 transition?
There is no "flag day" like a switch to Python3 entails, i.e. no need to wait until all modules you use have been migrated.
(Now, if things like Moose or pseudo-type-checking-libraries did not exist, the switch would be easier to justify - but then, we most likely would have stopped using Perl a long time ago.)
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Do You Think Of IT As Strategic To Your Business?
Do You Think Of IT As Strategic To Your Business?
Re: not having to port perfectly good, working code
Re: not having to port perfectly good, working code
Why do you insult my perfect Python2 code?
Re: not having to port perfectly good, working code
In the real world, there is very little such code. Those “boring, but necessary management tasks” do not sit still. Circumstances are always changing, which is why you need to be agile and adaptable. Trying to keep the same old creaky code bumbling along with spit and baling wire will only get you so far.
... because keeping old software going is such a great idea...
Re: If anyone launching spacecraft had the same attitude to working code ...
Re: If anyone launching spacecraft had the same attitude to working code ...
Re: If anyone launching spacecraft had the same attitude to working code ...
Wol
Re: If anyone launching spacecraft had the same attitude to working code ...
Re: If anyone launching spacecraft had the same attitude to working code ...
Re: not having to port perfectly good, working code
Do You Think Of IT As Strategic To Your Business?
Re: IMO "innovative companies" is buzzword bingo
Re: IMO "innovative companies" is buzzword bingo
Wol
Re: IMO "innovative companies" is buzzword bingo
Cannon: Where are we in the Python 3 transition?
The presumption here is that porting is one-time cost.
I fear that you are right about many open-source projects adopting the latter point of view, but this is a bad thing. If a codebase needs regular care and feeding just to continue working - that is a recipe for bitrot and eventual death. What one really wants is something else again - code that continues to work as before without any extra effort, while also continuing to grow in utility when care and feeding is available. The presumption here is that porting is one-time cost.
Re: but this is a bad thing.
I think your examples argue against your claim. The linux kernel is a standout example of putting an emphasis on backward compatibility and a guarantee that old code relying on it will continue to "just work" despite lots of spiffy new features in the kernel itself.
Re: but this is a bad thing.
Re: will inevitably crumble as the tide comes in
Re: will inevitably crumble as the tide comes in
Re: will inevitably crumble as the tide comes in
Re: will inevitably crumble as the tide comes in
Backwards compatibility in the real world
Re: will inevitably crumble as the tide comes in
Python really took off in early 2000-s. Since then there were 4 major widely used versions in Python 2 series: 2.2, 2.4, 2.6 and 2.7
They were pretty compatible with each otherWell, no. I have have been writing and maintaining code in Python since 2000 and have been through all the versions from 1.5 to 3.4.
Re: but this is a bad thing.
Re: but this is a bad thing.
Re: but this is a bad thing.
Re: but this is a bad thing.
might be daily grind on the inside, but its outside remains unchanged.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
Re: Python 3 is more different from Python 2 than Linux is from BSD
Re: Python 3 is more different from Python 2 than Linux is from BSD
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
src/resources.C: In constructor ‘CrResources::CrResources(int&, char**, bool)’:
src/resources.C:22:39: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
Re: The kernel provides a very stable interface to its customers.
Have you tried to make that code compileable? Usually it takes few hours to add some define's here and there but when you finally convince said code to compile it run and works in 99.9% cases. Compare with Python2-to-Python3 transition where you need to actually carefully read and test each and every line of code.
Re: The kernel provides a very stable interface to its customers.
Re: The kernel provides a very stable interface to its customers.
The presumption here is that porting is one-time cost.
The presumption here is that porting is one-time cost.
The presumption here is that porting is one-time cost.
The presumption here is that porting is one-time cost.
because the language it's written in keeps changing randomly
because the language it's written in keeps changing randomly
because the language it's written in keeps changing randomly
because the language it's written in keeps changing randomly
because the language it's written in keeps changing randomly
Re: Python 3 fulfills no real-world driven requirements
Re: Python 3 fulfills no real-world driven requirements
Yup. That's the problem, you don't even know (or pretend not to) understand the problems with large-scale porting efforts.
I did exactly this for http://python.projects.pgfoundry.org/ , it took about the same amount of time it takes to move Py2 to Py3. I probably can share the resulting code, if you want.
Re: Python 3 fulfills no real-world driven requirements
Changes in "real world requirements" at large do not necessarily translate into changes in the real-world requirements of any given software project.
because the language it's written in keeps changing randomly
Cannon: Where are we in the Python 3 transition?
Re: Python 4 will not require incompatible changes
Re: Python 4 will not require incompatible changes
Re: Do you have any idea how often wrongly-indented code bites C programmers?
Re: Do you have any idea how often wrongly-indented code bites C programmers?
if (conditionA)
if (conditionB)
foo();
else
bar();
Re: indentation doesn't actually provide useful redundancy
Re: Do you have any idea how often wrongly-indented code bites C programmers?
Re: One conditional expression is as good as any other
Re: One conditional expression is as good as any other
Re: One conditional expression is as good as any other
0
1
2
[0 mbunkus@chai-latte ~] ruby -e '(0..2).each { |i| puts i }'
0
1
2
[0 mbunkus@chai-latte ~]
Re: One conditional expression is as good as any other
0
1
2
3
nine@sphinx:~> perl6 -e '.say for 0..^3 # read "up to three"'
0
1
2
nine@sphinx:~> perl6 -e '.say for ^3 # read "short version"'
0
1
2
Re: One conditional expression is as good as any other
=> [1, 2, 3]
irb(main):004:0> (1...3).to_a
=> [1, 2]
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
It will never happen
It will never happen
Re: f you want [the] community to follow you to the future
Re: f you want [the] community to follow you to the future
Where is there a Python 2.x “community”?
I don’t know what else you are supposed to do with them. There is a saying in the open-source community: “the one who writes the code makes the rules”. The ones who contribute (code, documentation, support, whatever) are the ones who have a say in the direction of the project; the ones who don’t, don’t.
Re: dismissing ... a bunch of passive users isn't helpful
What those users would contribute, if they were listened to, is a requirement for stability or at least backwards compatibility. That is a contribution of policy or design (or management insight or vision) rather than one of code but it would nevertheless be a real contribution. In practice they can't make that contribution, because the group of people futzing around with the language itself isn't interested in receiving it.
Re: dismissing ... a bunch of passive users isn't helpful
Re: don't be surprised if they gradually go elsewhere
Re: don't be surprised if they gradually go elsewhere
Who is going to bother to work, for free, supporting old legacy code for users who are too cheap to upgrade? Nobody.
Re: don't be surprised if they gradually go elsewhere
Re: don't be surprised if they gradually go elsewhere
You are too late. I learned Python back around 2.4 or so (after a few years with Perl and a brief dalliance with Tcl), and gradually moved to the 3 series by around 3.3. It is my language of first preference for new projects. I saw the 2→3 transition as a good thing, and a necessary thing. if you hate it, don’t use it, by all means. But don’t waste your time trying to claim it is going to be a bad experience for me, because it wasn’t.
Re: Don't use [Python] if possible and especially don't use Python3 for anything ever
Re: don't be surprised if they gradually go elsewhere
Re: dismissing ... a bunch of passive users isn't helpful
Re: ordinary programmers contribute ... the universe of libraries
Re: ordinary programmers contribute ... the universe of libraries
a straight forward refactor. Indeed the Qt code is far cleaner then the wxPython version.
And moving from py2 to py3 is not hard in my experience and I have cleaner code as a result.
Re: ordinary programmers contribute ... the universe of libraries
Re: ordinary programmers contribute ... the universe of libraries
AFAIK only Python and (obviously) C++ have good binding for Qt whereas wxwindows can be used from many more languages..
Re: f you want [the] community to follow you to the future
Re: f you want [the] community to follow you to the future
Re: f you want [the] community to follow you to the future
Re: if you're representative of how it treats its own
Re: if you're representative of how it treats its own
Re: if you're representative of how it treats its own
Re: f you want [the] community to follow you to the future
> mouldering legacy code. A “community” is an active grouping of people contributing to ongoing development—people who give, not just receive.
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Look at the most invested users
Re: As long as the biggest companies ... stick with Python 2
Re: As long as the biggest companies ... stick with Python 2
Like I said elsewhere, the user base alone is not what counts, it’s the community.
Re: 2 has an order of magnitude larger user base than 3
Re: 2 has an order of magnitude larger user base than 3
Re: 2 has an order of magnitude larger user base than 3
Then what happens if you pass that string to a library which doesn't yet do that, and which isn't tested against these newfangled things?
Re: 2 has an order of magnitude larger user base than 3
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
Cannon: Where are we in the Python 3 transition?
While some may say that means we are still at the 'denial' stage, I would counter that we feel the Python3 advocates have for so long been in denial about the make-work being enforced on other projects. I'm glad to finally see some involved in Python writing that, given hindsight, the execution of the transition didn't go well, because I'm a bit sick of it being seen as some moral obligation to forward port our codebase to the new language.