python/Python3MigrationMagnitude written at 15:51:53; Add Comment
The magnitude of the migration to Python 3, illustrated
I was just reading Nick Coghlan's Python 3 Q & A. and ran across this:
(It should be noted here that based on the release schedule, Ubuntu 14.04 is currently scheduled for April 2014, with a feature freeze probably happening around six months earlier.)
I'm afraid that my reaction to this involves a certain amount of grim laughter. To explain why, let's talk about the magnitude of the effort involved in making this sort of transition for a Linux distribution; in particular, I am going to look at Ubuntu 12.04 and Fedora 17.
On an Ubuntu 12.04 machine more or less configured as a desktop and with
a decent package selection installed, there are around 240 executables
installed that use Python 2, from around 90 different Ubuntu packages,
with over a hundred programs that are directly run by people (ie are in
On my Fedora 17 workstation (which has quite a number of packages) there
are around 310 executables installed that use Python 2, from over 130
packages; over 200 programs are in
But the bad news is not done yet. On both Ubuntu 12.04 and Fedora 17, there are no non-Python packages that use Python 3. Zero. Zip. None. The only Python programs that use Python 3 come from Python 3 itself. And if you want another bit of bad news, neither Fedora 17 nor Ubuntu 12.04 even install Python 3 by default. New, stock installed systems are Python 2 only. This is not a migration that is in progress; this is a migration that hasn't even started yet.
(By the way, as far as I am concerned this means that Ubuntu 12.04 can't be fairly described as 'shipping Python 3', merely as having it available.)
Sidebar: why not installing Python 3 by default matters
Imagine a new Python user on a Fedora or Ubuntu system. The most
convenient version of Python for them to start using is one that's
already on their system (especially the one that's called '
(Among other things this affects people who are casually curous about how things are in Python 3. Casual curiosity doesn't survive work.)
Or in short: installing Python 3 by default makes it enticing. Not installing Python 3 by default makes it unenticing.
solaris/DTraceLanguageCriticism written at 01:52:20; Add Comment
More about my issues with DTrace's language
I don't think that this is the case. In fact I think it works the other way around; I doubt very much that people can go from D's limitations to any real understanding how the system is traced, but if you know how DTrace is implemented you can see the bones of this implementation underneath some of D's oddities.
To start with, I will agree that making some things clear is useful and
even important. For example, I think that access to kernel data and
variables should look different than access to user level data (and in
a way that makes access to user level data look more expensive). What
I object to is things that D makes pointlessly difficult, things where
it doesn't support the obvious simple way of doing whatever and forces
you to be indirect. The shining example of this is conditionals. D does
not have any form of an
The story I remember hearing about why this limitation exists is that
the DTrace implementation doesn't want to be dynamically allocating
output buffer space as a probe action executes; it wants to allocate the
space once, before the probe's action starts. Well, fine, but if this
is the reason you can deal with it in
(You can argue that it saves users from themselves under some circumstances, for example if a rare condition requires a bunch more buffer space than the common ones. But this is an optimization and generally a premature one.)
Now, this story is clearly not the complete explanation given that
DTrace has plenty of things that certainly look like they create
variable sized output (including an outright ternary
* * *
Atom feeds are available; see the bottom of most pages.