Windows environments

This post started as a reply to another post in the Multicore thread but I thought it deserved its own thread. Maybe we could use it to share our experiences (am I alone here ?) and see what we could do to improve things for everyone.

In our discussions we often overlook corporate environments. Most of you have probably erred on these unwelcoming lands. Let me summarize what it’s like on my side::

  1. By default PCs are pretty much locked down; only the sysadmins can install anything. So anything coming with an installer is ruled out.
  2. Technical software usually carries heavy licence fees so it’s doubtful you could justify any installation unless it is a direct requirement to work on a project.
  3. The only language runtime installed by default is Java. Corporate tools are often Eclipse-based but no Linux version is ever provided.
  4. Our business revolves around embedded platforms, so we’re not really a Windows shop.
  5. We are adamantly prohibited from using libraries which carry viral licences a la GPL.
  6. Developpers still install external tools (editors for example), but do so at their own risks and will be held accountable if anything goes wrong.

So in essence we can only use software packaged as zip files and .NET languages are ruled out in favour of Java-based software. I use OCaml for prototyping, single-use scripting and small temporary tools (often working around deficiencies of half-baked internal software). I could use scripting languages like Ruby or Perl which have some traction in-house. Ruby is nice but I prefer using OCaml whenever I can (more efficient, more scalable, more pleasant, less error-prone, vastly more interesting libraries).

As you probably gathered I need to build OCaml from scratch each time I upgrade. I already got scarred a few times; fixing libraries and their build systems used to be very time consuming. I noticed the situation improved quite a lot since the advent of opam (great work guys) but there is only so much you can do at the package level.

IMHO the situation would be much more pleasant if:

  • People stopped being snobbish towards Windows users (rare nowadays).
  • Library developpers would keep obviously non-portable dependencies optional even if this implies a performance degradation (think parmap).
  • Windows warts were worked around as far as possible (as most languages end up doing) even if I understand that most of you don’t want to be dragged into this undending pit of pain. Once again I must say the situation is much better than what it used to be. Maybe remaining incompatible behaviours could be documented (Unix.stat?) so at least Linux users know about them.
  • OCaml installation could be unzipped anywhere (currently needs a few environment variables and changes in findlib.conf).

Ah sorry, I’m day-dreaming again :slight_smile:


Wow. That sounds like an unusually restrictive environment. I hope it is unusual, anyway. I worked for business and government years ago, with Windows in one of the jobs. There were constraints for the sake of team work and efficiency–letting anyone do whatever they wanted all the time would lead to chaos and a lack of productivity–but nothing like what you’re describing.