27/07/2021Artículo original
Krysztof Kowalczyk es programador: ha escrito varios libros de programación que están accesibles en formato web y, sobre todo, es conocido por haber creado y seguir desarrollando uno de los lectores de PDF más popularesdespués de Adobe Acrobat: SumatraPDF.
Y da la casualidad de que SumatraPDF acaba de cumplir 15 años desde su primer lanzamiento, por lo que Kowalczyk ha decidido escribir un extenso post en el que hace dos cosas: repasar datos curiosos sobre su lector de PDFs… y lanzar una serie de utilísimos consejos para el resto de programadores que trabajan con código abierto.
Entre las curiosidades, cabe destacar el hecho de que SumatraPDF es un software que consta de 127.000 líneas de código, escrito mayoritariamente por dos personas. Que nació como consecuencia de que Palm le encargara crear un lector de PDFs para Foleo, una minicomputadora portátil como ARM y Linux que nunca llegó a salir a la luz.
Pero, ¿qué ha aprendido en la década y media que ha pasado programándolo?
Es mi proyecto y me lo codifico como quiero
Kowalczyk afirma que uno de los grandes atractivos de trabajar en código por el que no te pagan por escribir es que nadie puede decirte qué hacer o cómo hacerlo. Nada de codificar a gusto de otros:
En GenbetaAsí nació youtube-dl en un pueblo asturiano, motivado por una conexión vía módem de 56k en pleno 2006
No comiences un proyecto open source pensando en ganar dinero…
Rara vez podrás tener libertad para hacer lo que quieras y ganar dinero por ello, así que elige lo más importante para ti, explica. Afirma ganar poco más de 100 dólares al mes gracias a Patreon y a las donaciones vía PayPal, pero poco más:
…pero trata tu proyecto open source como si fuera software comercial
Lo anterior no está reñido con su convicción de que si deseas que tu software ‘open source’ sea lo más exitoso posible, debes tratarlo como si fuera un producto comercial. Pero, ¿qué significa eso en la práctica?
Por eso también recomienda emprender otras medidas, como la obtención de usuarios tempranos, descubrir qué funcionalidades quieren, e implementar un montón de éstas antes de saber si a alguien le importa lo que estamos haciendo.
Ser pequeño y rápido siempre será una ventaja
Kowalczyk afirma que nunca llegará el momento en el que los usuarios pidan aplicaciones “hinchadas y lentas” por lo que “ser pequeño y rápido siempre será una ventaja”. Y SumatraPDF, con su instalador de menos de 10 MB y su inicio cuasi instantáneo, cumple de sobra con tal objetivo.
En XatakaMi software es Open Source, pero no te pases: a los responsables de Stockfish y Audacity se les hinchan las narices
Pero, ¿cómo logra mantener así de ligera su aplicación (además de rechazando constantemente las peticiones de añadir nuevas funcionalidades o nuevos iconos a la interfaz)?
La multiplataforma está sobrevalorada
Kowalczyk califica SumatraPDF como una aplicación “descaradamente sólo-para-Windows”. Las peticiones de soporte a otras plataformas son frecuentes, pero él las descarta de plano. Y dejando de lado la falta de tiempo, enarbola otro argumento más:
‘Be water, my friend’
Kowalczyk cita al gran Bruce Lee y nos recomienda ‘ser agua’, “adaptarnos a los cambios del mundo”. ¿Qué tipo de cambios?
- De repositorio: “Empecé con Sourceforge, cambié a code.google.com y luego a github.com”.
- De CMS para el foro: “He cambiado el software del foro ya tres veces”.
- De Windows: Antes sólo existía SumatraPDF para 32 bits y ahora, aunque sigue existiendo, hace hincapié en la de 64 bits; al mismo tiempo, Windows XP pasó de ser la versión más usada por los usuarios de su programa a dejar de ser compatible con éste.
{“videoId”:”x80kt27″,”autoplay”:true,”title”:”La carrera de programador en 2017 y en el futuro (con Javier Santana)”}
Haz código de calidad
Como decía más arriba, que el código no sea ortodoxo no significa que tenga que ser de baja calidad, pero
Kowalczyk propone varias opciones: “usa mucho tu propia aplicación… prueba el código tú mismo”; apostar por los informes automatizados de fallos, las pruebas de esfuerzo, las unitarias y los análisis de código estático:
Imagen | OpenSource.com
(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName(‘head’)[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement(‘script’); instagramScript.src = ‘https://platform.instagram.com/en_US/embeds.js’; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();