Whena topic veers off-course or splits into a new topic, good luck trying to get people to do a split and actually follow it. With Discourse an admin and forcibly split a conversation into a new topic and that helps keep things on-topic in a discussion. (See this topic as an example .)
And I mean so much easier (just imagine I have a ton of emphasis on how so much better this is to get the scale appropriately ). For instance, accounts are in a single place so if we have an issue we can take care of the person and have it ripple through the whole instance; compare that to the mailing lists on
mail.python.org where each individual list has to maintain their own suspensions and blocks and so bad actors can continue to operate in other places.
Spam is automatically managed. On mailing lists the solution is to set all new subscribers to moderated to make sure that their initial email is legit and then clear the moderation flag. Here not only is it harder to sign up for an account to do the spamming, but the system detects when someone posts the same link too often.
I like that Discourse is a hybrid between a listserv and a forum, even allowing people to reply to discussions via email. The email digest is also a convenient way to keep up with the latest, and popular, conversations.
This is something traditional e-mail cannot deliver and it brings me some anxiety: I hate typos when I see them, I hate grammar errors when I make them, I want to be as clear as possible in my communication so that other second-language speakers (like me) can understand what I mean.
In HTML e-mail, some customize font sizes to be either tiny which makes it very annoying to read long messages formatted this way. Yet others choose to bump their font size making it look hilarious when content is quoted. Unless I specifically try to be obnoxious on Discourse, this does not happen
"Swapnil Bhartiya, the founder of TFIR, sat down with Guido van Rossum, the creator of Python, to talk about the origin of the language and why he stepped down from the leadership of the very project he created," writes sfcrazy. In the interview,...
I'm making a python policy to perform operations on my incoming payload, but once the operation is completed it is not reflected in postman. I've stored the result in a variable using "flow.setVariable" but it is not helping.
Python 3 was released in December 2008. A lot of time has passed since then but still today many developers hesitate to use Python 3. Even popular frameworks like Django are not compatible with Python 3 yet but still rely on Python 2.
Sure, Python 3 has some incompatibilities with Python 2 and some people need to rely on backwards-compatibility. But hasn't Python 3 been around long enough now for most projects to switch or start with Python 3?
Having two competing versions has so many drawbacks; two branches need to be maintained, confusion for learners and so on. So why is there so much hesitation throughout the Python community about switching to Python 3?
We (i.e. the Python core developers) predicted when Python 3.0 was released that it would take about 5 years for 3.x to become the "default" choice for new projects over the 2.x series. That prediction is why the planned maintenance period for the 2.7 release is so long.
The original Python 3.0 release also turned out to have some critical issues with poor IO performance that made it effectively unusable for most practical purposes, so it makes more sense to start the timeline from the release of Python 3.1 in late June, 2009. (Those IO performance problems are also the reason why there are no 3.0.z maintenance releases: there's no good reason anyone would want to stick with 3.0 over upgrading to 3.1).
While people typing Python 3 code are most regularly bitten by syntactic changes like print becoming a function, that actually isn't a hassle for library porting because the automated 2to3 conversion tool handles it quite happily.
The biggest problem in practice is actually a semantic one: Python 3 doesn't let you play fast and loose with text encodings the way Python 2 does. This is both its greatest benefit over Python 2, but also the greatest barrier to porting: you have to fix your Unicode handling issues to get a port to work correctly (whereas in 2.x, a lot of that code silently produced incorrect data with non-ASCII inputs, giving the impression of working, especially in environments where non-ASCII data is uncommon).
3.2 addressed a lot of those problems, providing a much better target for libraries and frameworks like Django. 3.2 also brought the first working version of wsgiref (the main standard used for communication between web servers and web applications written in Python) for 3.x, which was a necessary prerequisite for adoption in the web space.
Key dependencies like NumPy and SciPy have now been ported, installation and dependency management tools like zc.buildout, pip and virtualenv are available for 3.x, the Pyramid 1.3 release supports Python 3.2, the upcoming Django 1.5 release includes experimental Python 3 support, and the 12.0 release of the Twisted networking framework dropped support of Python 2.5 in order to pave the way for creating a Python 3 compatible version.
Tools for managing the migration process have also improved markedly. In addition to the 2to3 tool provided as part of CPython (which is now considered best suited for one-time conversions of applications which don't need to maintain support for the 2.x series), there is also python-modernize, which uses the 2to3 infrastructure to target the (large) common subset of Python 2 and Python 3. This tool creates a single code base that will run on both Python 2.6+ and Python 3.2+ with the aid of the six compatibility library. The Python 3.3 release also eliminates one major cause of "noise" when migrating existing Unicode aware applications: Python 3.3 once again supports the 'u' prefix for string literals (it doesn't actually do anything in Python 3 - it's just been restored to avoid inadvertently making migrating to Python 3 harder for users that had already correctly distinguished their text and binary literals in Python 2).
So we're actually pretty happy with how things are progressing - there are still nearly 2 years to go on our original time frame, and the changes are rippling out nicely through the whole Python ecosystem.
Since a lot of projects don't curate their Python Package Index metadata properly, and some projects with less active maintainers have been forked to add Python 3 support, purely automated PyPI scanners still give an overly negative view of the state of the Python 3 library support.
This list is personally curated by Brett Cannon (a long-time Python core developer) to account for incorrect project metadata, Python 3 support which is in source control tools but not yet in an official release, and projects which have more up to date forks or alternatives which support Python 3. In many cases, the libraries that are not yet available on Python 3 are missing key dependencies and/or the lack of Python 3 support in other projects lessens user demand (e.g. once the core Django framework is available on Python 3, related tools like South and django-celery are more likely to add Python 3 support, and the availability of Python 3 support in both Pyramid and Django makes it more likely that Python 3 support will be implemented in other tools like gevent).
The site at includes some excellent links to books and other resources for Python 3, identifies some key libraries and frameworks that already support Python 3, and also provides some information on how developers can seek financial assistance from the PSF in porting key projects to Python 3.
There are quite a few differences to the way the core language behaves, outlined in this document. Something as simple as changing "print" from a statement to a function, for example, will break a lot of Python 2.x code - and that's only the simplest. They got rid of the older-style classes completely in 3.0. They are, in fact, quite different languages - so porting old code is not as simple as some might assume.
There are no compulsive reasons for existing businesses to spend time, money and effort migrating to something while having no change in the existing feature set. I mean to say code base on Python 2 series has been up and running in business for a long time its stable, tested and has all the current product feature set. Why would anybody spend time, money and effort just to move Python 3 just for the sake of migrating to it.
Its your usual 'choosing a new language' process. This is where the chicken-egg problem comes in, Not many people are using it because not many people are using it. Ultimately nobody feels like moving to it at all.
Around the time Python 2.0 was released, Python was rapidly growing in popularity. There were lots of new users who naturally used the latest version, as they had no dependences on the older versions. With lots of people adopting 2.0 by default, there was a lot of pressure on library developers etc.
By the time Python 3.0 was released, there were already a huge number of users dependent on Python 2.0, and exponential growth (keeping a constant factor relative to existing users) obviously can't be sustained indefinitely.
I used to think Python 3 would eventually take over anyway, but I'm not so sure now. But it's not just Python that has this issue. After all, how many people honestly use Perl 6? That's been around a fair bit longer than Python 3, IIRC.
If this is not an option, using Python 2.7 is the best of both worlds: you have most every library created for Python 2.x and you can gradually alter your code to be Py3k-compatible, so that migration is easy when you decide on it. The list of syntax goodies from Py3k you already have in 2.7 is rather long, just don't forget to import from __future__. My favorites are Unicode by default and division always producing a float.
3a8082e126