My team received application written in Python 2.7.
Old team members are retired and not available for any questions.<p>Following technologies are used in project:<p>* Django<p>* SQLAlchemy<p>* XML-RPC<p>* Jinja<p>* Springpython<p>* Pyro.<p>The application is using PostgreSQL as database and has about 150.000 lines of code. (mostly backend, UI is really simple)<p>We are tasked to modernize whole tech stack (migrate to Python 3) and fix couple bugs (rated from the previous team with both priority and severity low)<p>Most of the team members have zero experience with Python and have zero knowledge in business domain of this new application. We can not hire additional people. Considering how much will cost us in time/money to update this code base to Python3 I am somehow more on the line to migrate to the tech stack that we are already using for all other projects.<p>I found a lot writing on topic Python to GO, but on Python to Java/C# not so much. Are there any success stories with described best practices during rewrite?
From my advice, try to stay on Python.<p>I am currently doing the opposite. Moving an old Java stack to Python/Django. Been able to do so under 9 months. I think upgrading to Python 3 should be doable. What's the version of your Django stack? You just need to try to reach Django 2.2. And if you are at Django 1.1, 90% of your code can be upgraded to Python 3. Nothing fancy. You just need to use libraries such as pyupgrade [0] to automatically upgrade your code, combined with black [1], flake [2],... Everything is done in less than 20 commits. From there you jump to 2.2 which supports Python 3.6+ .<p>It will be very difficult to implement all the goodies given by Django ORM/SQLAlchemy. But ... You if Java/C# is the tech that you feel confortable with, no problem. You have to use it. But, I really think it's easier to understand the "business domain" of Python code than Java/C#.<p>[0]: <a href="https://github.com/asottile/pyupgrade" rel="nofollow">https://github.com/asottile/pyupgrade</a>
[1]: <a href="https://github.com/psf/black" rel="nofollow">https://github.com/psf/black</a>
[2]: <a href="https://gitlab.com/pycqa/flake8" rel="nofollow">https://gitlab.com/pycqa/flake8</a>