본문 바로가기

프로그래밍/language

python 2.7은 곧 종료된다.

세계에서 가장 많이 쓰이는 언어 중 하나인 python은 여타 언어들처럼 수많은 업데이트가 진행되었는데 1994년 python1을 시작으로 2000년 10월 python2, 2008년 12월 python3가 나오면서 현재는 공식적으로 지원되는 버전은 python2와 python3 두 가지다.

 

PEP 373 인 python2.7 release schedule에 업데이트 내용에 따르면 다가오는 2020년 python 2.7은 공식적으로 지원이 중단된 이후 python 2.8은 없을 것이며 이후 python2.7 버전은 자원봉사자(volunteer)들의 참여를 통해서만 업데이트 된다고 한다.

 

 

The End Of Life date (EOL, sunset date) for Python 2.7 has been moved five years into the future, to 2020. This decision was made to clarify the status of Python 2.7 and relieve worries for those users who cannot yet migrate to Python 3. See also PEP 466
This declaration does not guarantee that bugfix releases will be made on a regular basis, but it should enable volunteers who want to contribute bugfixes for Python 2.7 and it should satisfy vendors who still have to support Python 2 for years to come.
There will be no Python 2.8 (see PEP 404).
- PEP 373 발췌 - 

 

2000년 처음 세상에 모습을 드러낸 이후로 python2는 무려 19년 동안이나 업데이트를 계속해 왔으며(심지어 python3과 함께 보낸 시간이 본인이 주인공이었던 시기보다 길다) 오랜 기간동안 개발자들을 위해 열심히 일해준 python 2의 노고를 위해서라도 은퇴식에 박수를 치며 보내줘야 할 것처럼 느껴지지만 현실은 그렇게 아름답지 않다.

 

python2

2016년 6월 PEP 373은 python 2의 종말을 예고했다. 유예기간은 3년이 조금 넘는 시간이며, 이 시간은 수많은 python2 유저들에게 python3 버전으로 옮겨갈 것을 강요하는 글이 되었다. 하지만 그 기간이 5개월 남짓한 시간으로 다가온 지금, 우리는 어떤 상태인가?

 

 

유명 IDE 개발 회사인 JetBrains의 조사에 따르면, 2018년 python2와 python3 사용자의 비율은 6:1로 보인다. 이는 7명 중의 1명의 개발자가 아직까지 python2를 이용해서 개발을 하고 있다는 것을 뜻한다.(2017년에는 4:1이었다.) 매년 꾸준히 사용자가 늘어나는 것이 통계를 기반으로 증명되었고 위의 그래프로 미루어 짐작해보면 2020년 즈음엔 python2는 완전히 역사 속으로 사라질 것으로 보인다. 하지만 정말 그럴까? 정말 내년에는 python2가 아름답게 은퇴하고 자신의 여생을 편하게 보낼 수 있을까?

 

Legacy는 거대하고, 호환성은 유지되어야한다.

앞서 보았던 그래프를 보면 종료 시점이 코 앞으로 다가온 상황에서도 몇몇 python 개발자들은 python2를 이용해서 개발을 하고 있다. 이러한 이유에는 여러가지가 있겠지만 필자가 생각하는 가장 큰 이유는 아래의 댓글에서 찾아볼 수 있다.

 

reddit - Why people still use python 2.7? 

 

python2는 python3가 나오기 전까지 무려 8년 동안이나 python을 주력으로 사용하던 개발자와 회사들을 홀로 책임져왔다 그 오랜 기간 동안 수많은 개발자들이 다른 곳으로 이직하거나 은퇴하고 코드는 그 규모가 커져 크기를 가늠할 수 없는 거인들이 되어 있었다. 문제는 여기서부터 시작되는 것이다.  심지어 불과 3년 전까지만 해도 python2 사용자가 훨씬 많았다. 실제로 이용되거나 서비스되고 있는 프로젝트를 통째로 갈아엎는 것도 쉬운 일이 아니지만 그것을 Legacy 프로젝트의 유지보수와 버전 업데이트까지 함께 병행하는 것은 더욱 힘들다. 또 다른 댓글을 보자

 

 

댓글로 미루어보아 위의 개발자는 python2를 주로 사용하는 것으로 보인다. 필자는 python 보안/해킹 관련 프레임워크에 대한 지식이 거의 없다. 그래서 검색을 해본 결과 PySec이라는 보안 관련 프로젝트를 발견했는데 python3은 전혀 지원되지 않는다. 또한 이 사이트를 보면 python3가 지원되지 않는 라이브러리 목록을 직접 확인할 수도 있다.

 

상황은 어렵지만 우리에겐 정말 시간이 얼마 남지 않았다.

이러한 python3를 향한 움직임은 여러 곳에서 발견할 수 있는데 python에서 가장 범용적으로 사용되는 web framework인 django는 django2 버전부터 python2에 대한 지원을 전면 중단하기로 선언했으며 마지막 python2 지원버전인 django1.11 버전은 2020년 4월에 종료된다고 한다. 필자는 처음 python을 접했을 때는 사용한 버전은 3.4였다. 모든 python 개발을 python3을 통해서 진행하고 있으며 python2를 통해서 개발을 진행했던 경험은 python3로 바꾸기 하기위해서 다뤄보았던 것이 전부였다. 그래서 EOL 정보를 처음 접했을 때는 크게 동요하지 않았지만 생각보다 많은 블로그에서 python3로 버전업 하는 것에 대한 부담을 느끼는 것을 보았다. 비록 여러 상황적 문제로 인해 매우 어렵지만 보안 업데이트마저 지원이 안되는만큼 최대한 빠르게 python2가 은퇴하는 것을 도와야할 것으로 보인다.

 

 

 

참고

https://en.wikipedia.org/wiki/History_of_Python

https://www.reddit.com/r/Python/comments/5kltzn/why_people_still_use_python_27/

https://www.jetbrains.com/research/python-developers-survey-2018/