Live data from Hacker News

Why CCP is still using Python 2

robg3d.com

61–70 of 95 posts

Re: Why CCP is still using Python 2

#61
post #59
post #50

Earlier quoted context omitted.

High-end wasn't mentioned before. But I know, I know, blender is often just not an option. Although I don't find the interface as bad as everyone is saying. But then again, I'm a software developer and I don't find GIMP's interface that bad either.

It's all about workflow. and it's what free/open source software gets wrong almost all the time (and I say that as an advocate of it), due to the fact devs rarely listen to users. The features are often there but they're not that easy or flexible to use, so often they're practically useless in certain situations. There was something last year when someone came up with some workflow / design improvements suggestions t…

> devs rarely listen to users

One would think that this is not the case for blender, because of the blender movie projects where users and developers work in the same room.

> There was something last year when someone came up with some workflow / design improvements suggestions to blender

Do you mean these awful ribbons? IIRC he also suggested different views for different tasks, even though blender has always had that feature! What was a valid point where the inconsistencies in the interface and some minor things.

Re: Why CCP is still using Python 2

#62
post #52

We have very few automated tests. He could have just written that one sentence.

That's quite a glorified view of tests. You can have the best test coverage in the world backed by a great CI culture but if porting something is a huge time investment, it may still be a huge time investment. Maybe there's one 2.x feature that you use almost everywhere that has been removed in 3.x and there's no simple way to replace it automatically.

Yeah, but if you have a test suite you add Python 3 and silence the existing failures. Now you can (at least partially) avoid writing new code that wouldn't work on 3, as well as gain the option of refactoring things to resolve compatibility - with lots of freedom to decide how much effort to spend on that if any.

It'd no longer be a huge risky project where you have to cut the QA team over to Python 3, then spend a bunch of QA's time putting the new code through the ropes with no end in site while explaining to management that this is all providing zero new functionality.

Re: Why CCP is still using Python 2

#63
post #62
post #52

Earlier quoted context omitted.

That's quite a glorified view of tests. You can have the best test coverage in the world backed by a great CI culture but if porting something is a huge time investment, it may still be a huge time investment. Maybe there's one 2.x feature that you use almost everywhere that has been removed in 3.x and there's no simple way to replace it automatically.

Yeah, but if you have a test suite you add Python 3 and silence the existing failures. Now you can (at least partially) avoid writing new code that wouldn't work on 3, as well as gain the option of refactoring things to resolve compatibility - with lots of freedom to decide how much effort to spend on that if any. It'd no longer be a huge risky project where you have to cut the QA team over to Python 3, then spend a…

Yeah, but if you have a test suite you add Python 3 and silence the existing failures.

They likely already know where a lot of their failures are going to be even without tests. The effort involved in fixing those known failures alone is prohibitive. The fact that the rest of regression testing will be easier with tests is nice, but doesn't reduce the work required to a level where they can justify doing it.

Now you can (at least partially) avoid writing new code that wouldn't work on 3,

Once you're on 3, you can just run your code and see if it works on 3. You don't need tests to avoid writing code that works on 2 but not 3.

as well as gain the option of refactoring things to resolve compatibility - with lots of freedom to decide how much effort to spend on that if any.

I don't think resolving compatibility issues is optional...

Re: Why CCP is still using Python 2

#64
post #8
post #6

Does anyone know what parts of the game client are using Python? Are they using it for scripting?

All of it, at least the last time I checked. You used to be able to wrap the client in your own Python, execute that, and give yourself extraordinary powers (read data from any market in game, send a pop up message to any player, etc)

Inject code, teleport between systems. There was some lack of server-side validation last year, but that seems to be fixed now.

Re: Why CCP is still using Python 2

#66
post #8

Earlier quoted context omitted.

All of it, at least the last time I checked. You used to be able to wrap the client in your own Python, execute that, and give yourself extraordinary powers (read data from any market in game, send a pop up message to any player, etc)

Inject code, teleport between systems. There was some lack of server-side validation last year, but that seems to be fixed now.

There were some larger violations/extraordinary effects possible, but you could get caught by logs then.

Re: Why CCP is still using Python 2

#67
post #63
post #62

Earlier quoted context omitted.

Yeah, but if you have a test suite you add Python 3 and silence the existing failures. Now you can (at least partially) avoid writing new code that wouldn't work on 3, as well as gain the option of refactoring things to resolve compatibility - with lots of freedom to decide how much effort to spend on that if any. It'd no longer be a huge risky project where you have to cut the QA team over to Python 3, then spend a…

Yeah, but if you have a test suite you add Python 3 and silence the existing failures. They likely already know where a lot of their failures are going to be even without tests. The effort involved in fixing those known failures alone is prohibitive. The fact that the rest of regression testing will be easier with tests is nice, but doesn't reduce the work required to a level where they can justify doing it. Now you…

> I don't think resolving compatibility issues is optional...

It is if you stay on 2 for production/qa and the bulk of new feature development in the meantime. Only CI (and any developers working on python 3 compat.) would be running 3 and only to provide reports of how compatible things are.

Only once the test suite passes would you swap QA to 3, start removing 2 compatibility code (i.e. whatever you've done to hack around handling strings) and eventually ship 3 to production.

Edit: The solution of "just switch to 3 then make it work" is exactly what they can't do because of (completely valid) business and political concerns. I think that if they were able to have a goal of some small percent of test progress on Python 3 per release - but continue to ship features - they would be able to find time to do the work if it's at all a priority, even if it took many many releases. If it's not at all a priority then maybe that's the one-sentence summary instead.

Re: Why CCP is still using Python 2

#69
post #48

Let's face, there's going to be projects that will NEVER be ported to Python3. Not a couple, a lot. Why should they? If they are using software for making money, it works and porting it to Python3 maybe is just too expensive and too risky. The point is that, as time past, hopefully more new projects will be created in Python3, and they can drive the development of more and more modules and tools, and, eventually, all…

If they're going to keep developing their game for 20 years, and they're smart, then they'll migrate sooner or later; otherwise the weight of finding developers willing to work in the ancient language that python 2.7 will become, and teach them that language, will drag them down, costing them more in the long term than a migration would. Just as it has for COBOL projects. It sounds like they are making efforts to pay…

Maybe that's true and maybe it's not. Unlike COBOL, Python 2 isn't inferior to its putative successor. Maybe people will eventually move anyway. Maybe they won't. Maybe they will, but not until after we are all dead.

Or maybe somebody will say bugger this for a game of soldiers, take the current Python 2, add such features from 3 as can be backported without breaking compatibility and release it as Python 4, and everyone will move to that and forget about Python 3 altogether. I don't know that will happen, of course, but I don't know it won't either. Prediction is hard, especially about the future.

Post reply on HN