0

The developer life becomes incredibly complicated once you work in commercial companies. Recently, I ran into the problem that I wanted to install the Python packages turbodbc, sktime, and tslearn. All are speeded up by using C-functions under the hood. pip builds these functions when installing the packages. If you lack of a proper C compiler (apparently only Microsoft C++ Build Tools are “proper”), you run into the error message

distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

Which is surprisingly a quite common issue reported on stackoverflow, but all answers recommend to just install the tools, e.g. here.

The Microsoft C++ Build Tools require a Visual Studio License, i.e. “Community”, Professional, or Enterprise. Now, while the tools are freely available for open-source development under the Visual Studio Community, the question is if the license also applies for building the (developed) software on a different system.

Here is a snippet from the license

Visual Studio Community 2019 is a free, full-featured IDE for any developer building non-enterprise apps across any platform or device. ...

Organizations

  • An unlimited number of users within an organization can use Visual Studio Community for the following scenarios: in a classroom learning environment, for academic research, or for contributing to open source projects.
  • Any number of users may use the software to develop and test device drivers for the Windows operating system.
  • For all other usage scenarios: In non-enterprise organizations up to 5 users can use Visual Studio Community. In enterprise organizations (meaning those with >250 PCs or > $1M in annual revenue) no use is permitted for employees as well as contractors beyond the open source, academic research and classroom learning environment scenarios described above.

I am left absolutely puzzled. While the license seems to be very clear, I am unsure if the build process still belongs to the development of a software (in this case the open-source library that enthusiasts with no relation to me have written). And, why should one like to develop something free & open-source, if part of the community (OK, the commercial part of the community) would need to buy something from a giant like Microsoft to install (a one-time action) their software/library? Nonetheless, the Microsoft C++ Build Tools seem to be the standard in developing C-based Python libraries. MinGW is only supported up to Python 3.4


BTW, do not to get side-tracked with the MS Build tools, which are open-source and released under the MIT License.

2

Of the three packages you link to above, one (turbodc) is under the MIT licence, one (sktime) is under "an OSI-approved licence", and one doesn't make much effort to tell me the licence at all. A strong copyleft licence, such as the GPL, would likely have something to say about licensees releasing code that would only build under a proprietary compiler, without providing that compiler; but there's no evidence that any of these modules is under such a licence.

So for me, this comes back to personal choice, and the consequences thereof. You (either you personally, or your employer) chose to run a proprietary OS. If it was your employer, you should turn round to them and point out that if they don't buy proper tools for you to work with, you won't be able to work at maximum efficiency. If it was you, then I'm afraid you've just run into one of the consequences of trying to use free toolchains on proprietary OSes: at some point down the stack, the free shades into the non-free, and if you're using software under licences that don't much care about the exact location of that border, you may get caught up in border-crossing issues.

3
  • Thx. I agree with all your points but it still puzzles me that even the Python development moved to Visual C++ and discontinued to support free alternatives, such as GCC/MinGW [since Python 3.5]( wiki.python.org/moin/WindowsCompilers#GCC_-MinGW-w64.28x86.2C_x64.29). – max May 28 at 7:13
  • Why the puzzlement? If you're going to run on a proprietary OS, it's reasonable to assume you have access to other proprietary tools, especially tools from the OS vendor. – MadHatter May 28 at 7:25
  • fair enough xD I haven't seen it this way so far. But since MS is the defacto-standard in the desktop-world and their exist proper alternatives in developing code for this OS, perhaps, I may have been a bit idealistic on keeping the pipeline as free as possible – max May 28 at 11:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.