Hacker News new | ask | show | jobs
by melling 3255 days ago
Swift is 3 years old. Most people who use it will be on the latest version Swift 4 within a few months. Apple won’t let developers stay behind.

While it was unrealistic for Python to be that aggressive given its larger community, not forcing the issue created a lot of unnecessary work for the community. A benevolent dictator should have moved developers along faster. Having the language fragmented for this long is extremely unproductive.

7 comments

I don't think Apple could even get away with this if Swift were more than 3 years old. I suspect the relationship between migration pain and age is exponential.
In part it's age. In part, Apple get away with it because they forewarned developers. Swift explicitly intended a "move fast and break things" approach to syntax, naming etc.
Forcing the issue early on would have killed Python3. For the first so many years, the majority was against Python 3.
Isn't Swift compiled? I'm not sure it's relevant to the specific problems faced here, unless a library written and compiled in earlier versions of Swift won't be usable in a Swift 4 project.
That's the case. Swift is currently not abi compatible, so libraries compiled with one Swift version only work with that version.
Ah, I see. I assume you could compile to a C compatible library, but they you would have to deal with marshaling costs where the types mismatch, correct?
I like it, "development tough love", ha. I think looking back it becomes clearer in hindsight that it really did consume a lot of community energy. I'm vaguely sensing maybe some kind of community development bystander effect where fixing and upgrading is someone else's problem has kept the divide around longer than it needed to be.
Python 3 faced a lot of friction when it was introduced.

There was no backwards compatibility with Python 2 and it had relatively little adoption.

They added Python 3 features to Python 2 over the years to encourage adoption of Python 3 as the standard. It worked.

Now we just need Apple to ship Mac OS with Python 3 instead of 2 as the default and that'll push adoption for developers.

> They added Python 3 features to Python 2 over the years to encourage adoption of Python 3 as the standard. It worked.

Did it really? My impression was the opposite: the fact that so much of Python 3 became available in Python 2 made people feel like there was no point in moving to Python 3.

It worked both ways. Some new features were ported back, some could be ported, but explicitly weren't to encourage migration. On the other side, things like the "u" prefix got re-added to python 3 for compatibility.
> Apple won’t let developers stay behind.

On macOS 10.12.5, released 2017-05-15:

    $ /usr/bin/python -V
    Python 2.7.10
That's a release from 2015-05-23. Latest is 2.7.13 released 2016-12-17.

And no system python3. Only through Homebrew/Macports.

I'm not sure I understand your point. They have a version of Perl from 2013 too.

Do you think that means they don't care about Python? Perhaps it's not a strategic language for them?

No one said they the provide a full Unix system or keep everything else up to date. Apple has a very narrow focus on what's important to them.

How would they have forced the issue?
They should have created an annotation or something saying "this file uses the python3 dialect", made python3 run all python2 code unmodified (the only way to not require both being on $PATH), and halted python2 releases except critical security bugs.