Los que defendemos el uso de software libre no siempre podemos predicar con el ejemplo, sobre todo por cuestiones laborales. Pero siempre hay más opciones de lo que parece. Si sois programadores y os veis obligados a utilizar un sistema operativo como el de Windows, siempre podéis serviros de software libre para programar compatible con él, y eso es lo que os propongo.
- Mono: versión libre de la plataforma de desarrollo de Microsoft, basada en los estándares de ECMA (European Computer Manufacturers Association) y el CLR (Common Language Runtime), el entorno en tiempo de ejecución de lenguaje común. Cuenta con una comunidad muy activa. Es preciso tener antes el MS Visual C++ para poder instalarla.
- SharpDevelop: IDE (integrated development environment), un entorno de desarrollo integrado para varios lenguajes de programación: C#, Visual Basic .NET, F#, Python, Ruby, Boo y C++. Para proyectos C# en .NET de Microsoft, antes se requiere tener instalado .NET Framework 4.0, y se recomienda instalar también el .NET Framework Software Development Kit, versión 4.0, pero no es indispensable. Otras opciones son Eclipse C/C++ Luna SR2, CodeLite, Code::Blocks, Open Watcom C/C++, wxDev-C++ y Dev-C++ para C/C++; NetBeans Java EE IDE, BlueJ y Eclipse Java EE Luna SR2 para Java; Open Watcom Fortran para, claro, Fortran; Racket para Scheme, MzScheme y MrEd; Lazarus y sus ampliaciones para Windows de 64 bits y WinCE, para el compilador Free Pascal; Qt Creator, para desarrollar de aplicaciones en Qt, biblioteca multiplataforma de interfaces gráficas de usuario; Eiffel Studio, para lenguaje Eiffel; y los estupendos Geany y Light Table.
- jEdit: editor de texto libre orientado a la programación, distribuido en los términos de la licencia pública general de GNU. Posee un buen número de herramientas para editar, gestionar archivos y personalizarlos, con un lenguaje propio de macros y docenas de plugins. Funciona con Java. Otras opciones son Minimum Profit, Komodo Edit, Gedit, Notepad++, Vim y SciTE.
- Existen diversos implementadores de lenguajes de programación, como Scala, que posee características de la programación funcional y la orientada y requiere Java; CLISP (para Common Lisp), que contiene un intérprete, compilador, debugger y otros instrumentos; Qpad (para Q), basado en reescritura de términos y con un IDE incluido para editar y ejecutar programas; Erlang, para programación concurrente y sistemas que toleren fallos; SWI-Prolog, para Prolog, por supuesto; Ruby Installer, para Ruby, con el intérprete de este lenguaje, extensiones y un entorno de edición y ejecución; Python, cada vez más empleado por lo sencillo y elegante que resulta; Euphoria, fácil, flexible, multiplataforma y muy rápido; GNAT Programming Studio, para Ada; y Haskell Platform, para programar en el lenguaje funcional puro Haskell y que trae consigo el compilador Glasgow Haskell Compiler. Por otra parte, Parrot es una máquina virtual que ejecuta eficientemente toda clase de lenguajes dinámicos.
- FreeBASIC: compilador de BASIC de 32 bits y sintaxis semejante a la de MS-QuickBASIC, pero más avanzado, con punteros, orientación a objetos, etcétera.
- XML Copy Editor: edita archivos XML, permite autorizar los documentos en DTD, XML Schema o RELAX NG, realizar transformaciones XSLT, testear expresiones XPath y más. Otra posibilidad es Serna Free. Y XTrans es un editor de plantillas XSLT con el que también se pueden probar expresiones XPath.
- Los sistemas de control de versiones de los que podemos echar mano son Subversion, elaborado para sustituir a CVS (Concurrent Version System, con su cliente TortoiseSVN, que se integra en la Shell de Windows; darcs, interactivo y programado en Haskell; monotone, en el que todo cliente es también servidor; Git, perfecto para proyectos de envergadura; Mercurial, ligero y veloz, para grandes proyectos distribuidos; y WinCVS, para el acceso a servidores CVS (Concurrent Version System) con un sencillo interface gráfico.
- Bugzilla es un utilizadísimo sistema de seguimiento de fallos (bug tracking system), que necesita Perl para ser usado. Trac, que integra un wiki y requiere Pynthon, y MantisBT, asentado en PHP y MySQL, MS SQL o PostgreSQL, son otras opciones.
- Disponemos de editores de catálogos gettext para traducción, como Virtaal, para archivos .po y .mo y otros formatos (TBX, TMX, XLIFF, Qt Linguist, Qt Phrase Book y WordFast TM); y Poedit, para archivos .po, del que el código fuente es libre, pero no el instalador de las versiones posteriores a la 1.5.7.
- Regular Expression Editor: pone a prueba las PCRE (Perl Compatible Regular Expressions), secuencias de caracteres en un patrón de búsqueda, y comprueba su corrección. También podemos utilizar el testador de expresiones regulares Visual RegExp.
- Glade: crea interfaces de usuario para GTK+ y GNOME.
- wxWidgets: una biblioteca C++ para elaborar interfaces de usuario gráficas (GUI) que es posible compilar en multitud de plataformas. Cuenta también con wxFormBuilder, su generador visual de interfaces gráficas. Por otro lado, Pencil sirve para elaborar prototipos de interfaces gráficos que luego se pueden exportar en distinto formatos.
- Inno Setup e Inno Setup Tool: la primera es una herramienta para crear instaladores de programas a partir de scripts, las cuales resultarían un poco farragosas de elaborar manualmente si no tuviera la segunda herramienta, que sirve para generar los scripts de instalación de forma visual. Otras opciones son NSIS y su complemento HM NIS Edit, IzPack, para Java, y WiX, para Windows.
- GnuWin32 Indent: cambia la apariencia de un programa en C incluyendo o quitando espacios en blanco, realiza conversiones entre distintos estilos de escritura en este formato y ayuda a hacer el código más legible.
- Doxygen: sistema de documentación para C, C++, Java, IDL, Objective-C y parcialmente C#, PHP y D. Es capaz de generarla en los formatos HTML, RTF, PostScript, LaTeX y man de Unix desde el código fuente de la aplicación.