ha7ilm / openwebrx

Open source, multi-user SDR receiver software with a web interface
https://sdr.hu/openwebrx
GNU Affero General Public License v3.0
989 stars 476 forks source link

Python 3 compatibility? #68

Closed KM4YRI closed 7 years ago

KM4YRI commented 7 years ago

Are there any major roadblocks standing in the way of Python 3 compatibility?

Would you consider taking a pull request if the work to support both 2 and 3 was minimal? I'd volunteer to do the conversion but wanted to open a dialog before beginning.

ha7ilm commented 7 years ago

Are there any major roadblocks standing in the way of Python 3 compatibility?

I have not tried yet.

Would you consider taking a pull request if the work to support both 2 and 3 was minimal? I'd volunteer to do the conversion but wanted to open a dialog before beginning.

Yes, it is a good idea, if it is possible to keep python 2.7 compatibility, too. Thank you very much for the offer.

KM4YRI commented 7 years ago

I will look into this. I have used Python six before, which is a compatibility layer that allows Python scripts to run in either.

If you'd like to keep the issue open for a bit, I'll start looking through the code and see how soon I can start on the conversion. I'll try to make the change soon, as time allows.

ha7ilm commented 7 years ago

I have used Python six before

Will users have to install an additional library/tool then?

KM4YRI commented 7 years ago

it's just a python dependency, e.g. import six. I looked through your code and surprisingly didn't see any other python dependencies in your code (not a bad thing or a good thing, just an observation).

Most linux and windows users will already have this library, as a high percentage of python packages and scripts use it, and it comes with most linux distros, out of the box. If not, it's as easy as typing pip install six. I can't really think of any situation where the benefits don't out-weigh the disadvantages here (keep in mind that Python 3 came out a decade ago, and Python 2 is considered legacy at this point. All new development should be done in Python 3, ideally six is nice because it allows both (2 * 3 = 6). I will say confidently that this will be a cakewalk compared to getting your other non-python dependencies satisfied.

edit: try to import it on your system and let me know if it's already installed .. it probably is :)

ha7ilm commented 7 years ago

Neil,

Thank you very much for your comments and your effort. Right now I don't think it is a good idea anymore.

KM4YRI commented 7 years ago

From your comment, I'm assuming you've never tried to write a program that supports Python 2 and 3, which is nothing more than a finite list of syntactical differences that have been abstracted into a well-tested library (six). It's stuff like print foo instead of print(foo) and re-defining functions that BFDL Guido moved on a whim. That's it. They don't behave differently in any significant way. And I'm also guessing you've not had much experience with unit testing, CI platforms, or other tools that are used in modern software development. At least you're using Github. Good job there. I think you're afraid of something that (A) is being done daily by a high percentage of other applications and libraries using the language, and (B) is probably the most benign and easiest-to-unittest change that would ever happen in your repo. Things that people like me would have or could have added.

But that's OK, a hard-fork it is then.

Good day sir.