Volvemos con una nueva entrevista que se realizo el pasado 7 de Febrero al programador Albert Astals Cid.
Entrevista En Diferido: Empezamos una nueva entrevista a Albert Astals Cid programador de KDE, pero lo mejor que se presente él mismo.
¿Te podrías presentar en una líneas?
Albert Astals: Hola a todos, soy Albert de L'Hospitalet de Llobregat https://en.wikipedia.org/wiki/L%27Hospitalet_de_Llobregat en Barcelona. Soy de la generación Naranjito (para los jóvenes eso quiere decir que soy del 82 del siglo pasado). Formalmente soy un Ingeniero Informático y trabajo como desarrollador de software, principalmente C++ y Qt en una empresa que se llama KDAB. Dentro del campo del Software Libre llevo colaborando con KDE
https://kde.org/
casi 20 años, con lo que he hecho un poco de todo, traducciones, código, coordinación de versiones, he formado parte de la junta directiva de las asociaciones que representan al proyecto (tanto KDE e.V.
https://ev.kde.org/
a nivel internacional como KDE España https://www.kde-espana.org/quienes-somos ), etc. Quizás dentro de KDE una de las cosas más conocidas que he hecho es ser programador principal de Okular
https://okular.kde.org/
(el visor de PDF y otros tipos de documentos) durante mucho tiempo. Fuera de KDE también colaboro con otros proyectos de Software Libre como Poppler
https://poppler.freedesktop.org/
EED: Para empezar , unas cuantas preguntas cortas para conocerte mejor a ti y a tu entorno tecnológico.
¿Qué ordenador utilizas? ¿Distribución de Linux que usas? ¿Qué lenguajes de programación usas y/o conoces? ¿IDE o editor de código? ¿Teclado mecánico para programar? ¿Que dos escritorios considera mejor desarrollados?
AA: Mi ordenador personal es un Dell XPS 15 de 2011, detalles completos aquí https://ghostbin.com/M0lvh/raw
La verdad es que para tener casi 11 años aguanta bastante bien, a parte de la bateria que está completamente destruida, como podeis ver inxi dice que le quedan 0.5 de 727.4 Wh.
La distribución de Linux que utilizo es ArchLinux, personalmente me es la más cómoda para mantener las cosas actualizadas, pero mi punto de vista sobre las distribuciones es, usa la que más te guste, si te hace feliz a ti, eso es lo que vale, lo que digan los demás es solo ruido.
En cuanto a lenguajes de programación, podríamos decir que soy principalmente un programador de C++, pero también como he dicho antes uno ya no es un jovenzuelo o sea que he tenido tiempo para hacer cosas en otros muchos lenguajes Java/C/Python/Ruby/Rust/PHP/JavaScript/etc., al final los conceptos de la mayoría de lenguajes son bastante similares.
Sobre el tema de IDEs o no, mi elección personal es que uso Kate
https://kate-editor.org/
Depende a quien le preguntes te dirá que es un IDE ligero o un editor de texto muy básico que no se puede usar para programar. Un poco como las distribuciones, lo que creo es que cada uno ha de usar lo que le vaya bien, si a te gusta usar emacs felicidades, si prefieres usar Eclipse, pues ningún problema tampoco :)
Sobre el tema de teclados (y periféricos en general), soy muy austero ahora mismo uso un simple Logitech K120, creo que era literalmente el teclado más barato que había en la tienda. Tiene teclas, la distribución es "relativamente estándard" (eso si es una de las cosas que personalmente no aguanto, no me pongas las teclas de flecha en un lugar "cool").
Sobre el tema de escritorios de Linux la verdad es que no puedo dar una opinión, llevo más de 20 años usando Plasma/KDE, no he usado otros escritorios durante un tiempo suficientemente largo como para poder opinar sobre ellos (excepto Unity durante el tiempo que fui empleado de Canonical/Ubuntu, pero ya no existe o sea que comentar sobre el tampoco tiene mucho sentido)
¿Te resulta interesante? ¿Por qué no lo compartes?
EED: Una pregunta fija que cambia en función del perfil de entrevistado, en tu caso me centraré en KDE.
¿Qué añadirías a KDE? ¿Qué modificarías de KDE? ¿Qué eliminarías de KDE?
AA: Voy con las preguntas de esta mañana sobre añadir, modificar, eliminar. La de añadir es fácil, hay que añadir más gente colaborando, porque cualquier otra cosa que se piense en añadir pasa por ahí. Porque si no cuando se dice ,hay que añadir XYZ es una característica muy importante, es muy bonito, pero nadie se moja en decir (y para eso dejar de hacer JKL).
Eliminar va un poco relacionado y es que el querer hacer muchas cosas, a veces nos lleva a cargarnos más de trabajo / responsabilidades de las que podemos hacer y a veces nos acabamos "quemando" un poco con el consiguiente "mal humor", o sea que consigamos más gente colaborando y podremos eliminar gran parte de los malos rollos. (Que no me malentendais, no es algo común, pero haberlos haylos de vez en cuando)
La cosa principal que me gustaría modificar es la cantidad de gente que se puede dedicar a colaborar con KDE como trabajo remunerado. Ahora mismo es un número relativamente / muy bajo, y eso está "bien" por una parte porque te asegura que la gente que colabora lo hace con todo su cariño, pero también tiene el problema de que según evoluciona la vida y tienes que pagar casa, tienes descendencia, etc. la gente se puede cada vez dedicar menos a colaborar en su tiempo libre
Por eso, si usáis KDE, una donación en https://kde.org/community/donations/ siempre es bienvenida.
EED: Una de las quejas que mas suelo leer es la fragmentación en GNU/Linux, ya sea de distribuciones , escritorio o aplicaciones, y se centran en la gran variedad de opciones disponible y el gasto en su de desarrollo, mejor sería centrar el desarrollo en una única,o un grupo de muy reducido, opción, permitiendo una mejor evolución del desarrollo. Por otro lado , esa gran variedad implica mas posibilidades para los usuarios de encontrar una opción mas acorde a sus requisitos.
¿Qué opinas de la fragmentación?
AA: El tema de la fragmentación es algo inherente al Software Libre, yo lo veo como algo bueno, de hecho una de las libertades básicas es la de modificación, pero que alguien haga una modificación, no quiere decir que al autor original le interese, por muchas razones varias, o sea que en ese caso tenemos un fork, los usuarios / programadoras acabarán decidiendo si se mantienen los dos programas, solo uno, etc.
Cierto es que el caso de los fork es quizás poco común, lo más común posiblemente es gente que comienza un proyecto des de cero cuando otro similar existe. Primero se ha entender (perdónenme el ejemplo ridículo) que la programación es un poco como la gestación de un humano, no por poner a más mujeres a gestar tendremos al humano más rápido, simplemente tendremos más humanos, pero harán falta 9 meses igual. Por lo tanto no se puede decir "si la gente de KDE y los de GNOME hicieran un solo software en vez de dos tendría sería el doble mejor". Esto sin entrar en que varias veces las tecnologías usadas son diferentes o sea que lo que hace a una persona eficiente en el proyecto X haría que quizás hasta tuviera contribución negativa en el proyecto Y, ya que haría demasiados errores...etc.
Y quizás la parte más fundamental para mi en este tema de la fragmentación está relacionada con la respuesta anterior. Mucha gente hace software libre en su tiempo libre, hace lo que ellos quieren, si que es cierto que existe un cierto nivel de coordinación basado en el concepto de pertenencia a un grupo y el hecho que los humanos nos gusta "seguir a un líder". Pero todo eso ha de ser dentro de una evolución / ordenes que "tengan sentido" si mañana " los líderes" de KDE dijeran, "vamos a dejar de hacer KDE, uníos todos al proyecto PKY" , la gente diría "quien te crees para decirme lo que yo hago en mi tiempo libre" y continuaría haciendo lo mismo que ahora.
EED: La siguiente pregunta se ha puesto en un comentario, la pongo en el canal para que tenga mas visibilidad.
Hola Albert, Soy Luigi y quería preguntarte sobre el riesgo de basar muchos software sobre frameworks como Qt, que tiene una buena parte de su licencia libre pero al final no muchas personas pueden o saben modificarlo. Te hablo directamente de QGIS en que estoy involucrado. como proyecto, a veces, hemos financiado KDAB para hacer algún fix en Qt por algunos fallos importantes (para QGIS).
Esta dependencia puede ser demasiado grande si ademas la integración no es solo del framework gráfico sino del ecosistema de librería de Qt.
¿Cuánto piensas que puede ser peligroso esto para proyectos de larga duración?
AA: Asumid que mi respuesta va a ser sesgada, llevo programando con Qt 20 años
Qt es el mejor framework de programación para aplicaciones de escritorio multiplataforma. No hay nada que se le acerque en calidad, cantidad de características, etc.
Ciertamente Qt tiene bugs, pero todo software tiene bugs.
Tu preocupación parace tener dos puntos, primero los programadores de Qt no arreglan los bugs que a mi me parecen importantes, segundo arreglarlos "nosotros mismos" no es fácil
Sobre el primer punto, "es lo que hay" , es un proyecto de Software Libre y no hay ningún tipo de garantía, es un riesgo que asumes al usar Software Libre, pero no es que otros proyectos que son de pago tengan una forma mucho mejor de arreglar bugs de clientes.
Sobre el segundo punto, tienes razón (a medias), no hay mucha gente que pueda arreglar bugs en Qt, pero eso es debido a la complejidad de las cosas que hace Qt. Si, podrías usar otra librería que fuera más fácil de arreglar bugs en ella, pero esa facilidad probablemente viene del hecho que hace menos cosas.
Recapitulando mi opinión es que si quieres una librería multiplataforma para aplicaciones de escritorio, no hay otra cosa mejor. Quizás la hay más simple, y si eso te sirve pues perfecto, pero si quieres hacer todo lo que hace Qt al final has de acabar "pagando" una complejidad similar a la de Qt.
EED: Me gustaría hablar un poco sobre la financiación en proyectos de Software Libre, como participas en un proyecto tan grande como KDE. También me gustaría preguntarte sobre la comunidad, empresas y la financiación
¿Cómo se financia KDE? ¿Qué importancia cree tienen las empresas y la comunidad a la hora de financiación en GNU/Linux?
AA: Dentro del mundo del Software Libre hay una gran disparidad en cuanto a la financiación, cosas que sean orientadas a servidor (digamos por un ejemplo Docker) tienen una cantidad de financiación "infinita" comparadas como cosas para el escritorio como KDE.
KDE tiene una financiación "muy pequeña" si mirais en https://ev.kde.org/reports/ev-2020/#working-groups_ (haced un poco de scroll hasta la parte de Financial Working Group ) se puede ver que el presupuesto anual anda en torno a los 200.000€. Eso no es nada. Este año en particular hay un poco más de donaciones de personas que de empresas, pero se podría decir que normalmente se está en torno a un 50/50. Siempre andamos trabajando en como pensar que la gente y empresas done más, pero hay siempre que pensar en el balance, ya que la forma "fácil" de que la gente done es ser pesado y recordárselo relativamente a menudo, pero ser pesado nunca es especialmente "guay".
EED: KDE es un proyecto bastante grande con muchos componentes y aplicaciones , realmente no se si se llamo bien a cada componente y se para que sirve . Por ese motivo me gustaría que me lo aclarase con un pequeño listado.
¿Qué es?
KDE.
Kio.
Plasma.
Kwin.
Akonadi.
KDE framework.
Qt designer.
AA: KDE es la comunidad de gente organizada alrededor de kde.org, ya se que es un poco tautológico pero es lo que hay.
KIO es un framework / librería / biblioteca / trozo de código utilizado por la mayoría de programas que hacemos en KDE que se encarga de gestionar la entrada / salida. Es decir, escribir / leer de ficheros en tu disco duro, en Internet, en un servidor samba, en tu cámara de fotos, etc.
Plasma es el escritorio principal de la comunidad KDE. La definición de escritorio es un poco "difícil" pero piensa en todo lo que no parecen programas en si, el menú de inicio, el salva pantallas, la barra de tareas, la cosa del alt+tab, etc. Y digo escritorio principal porque a parte de Plasma en KDE también hay otros escritorios.
KWin es el gestor de ventanas de KDE, se usa en Plasma (es parte de Plasma) pero también hay otros escritorios que no son Plasma ni tan siquiera parte de KDE que lo usan como su gestor de ventanas. Un gestor de ventanas es lo que decide que ventana va donde, que tamaño, también habla con tu hardware para que la pinte, etc.
Akonadi es un framework de gestión de información personal (calendario, correo, contactos, etc). Formado a su vez de varias partes, un base de datos donde están las cosas, unos gestores que se encargan de mover estas cosas arriba y abajo (por ejemplo de tu base de datos local a Google calendar y viceversa) y unas librerías que usar para que hacer aplicaciones sea más sencillo
KDE Framework en singular no existe, es KDE Frameworks. Es el nombre que se le da al conjunto de 83 librerías que KDE hace para que se usen por el resto de aplicaciones, permitiendo así compartir código, etc. Hay una nueva versión de KDE Frameworks cada mes
Qt Designer es una aplicación para el diseño de interfaces gráficas para aplicaciones en Qt. No tiene nada que ver con KDE, fuera del hecho que la mayoría de programas que hacemos en KDE están hechos en Qt y algunos de ellos han usado Qt Designer para hacer su interfaz gráfica.
EED: La librería Qt es un componente esencial para el desarrollo de KDE que el año pasado sufrió un cambio de licencia .
¿En que consiste ese cambio? ¿Qué ha implicado esos cambios en el desarrollo de aplicaciones con Qt?
AA: Sobre el cambio de la licencia de Qt. Bueno pues no ha habido ningún cambio de licencia. Qt sigue siendo libre tal y como garantiza el acuerdo que KDE y The Qt Company tenemos firmado https://kde.org/community/whatiskde/kdefreeqtfoundation/
Si es cierto que ha habido un cambio de cuando salen las versiones libres de Qt comparadas con las no libres, y para ciertas versiones The Qt Company está retrasando unos meses la salida de dichas versiones, tal y como les permite el acuerdo antes mencionado.
Esto llega en un momento poco idóneo que es el cambio de versiones de Qt 5 a Qt 6 por lo que en KDE hemos creado una colección de parches para ir arreglando cosas que nos hacen falta https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection
EED: Yo siempre digo que GNU/Linux es un sistema operativo que lo puede utilizar cualquier persona pero no es para cualquier persona. Como el resto de sistema operativo , por funcionalidades, aplicaciones disponibles y otras características tiene un perfil de usuario determinado para poder aprovechar al máximo todo .
¿Crees que hay un perfil de usuario idóneo para GNU/Linux? ¿Que tipo de usuario y que cualidades debe tener?
AA: La gente (ese grupo indefinido y lleno de tópicos) normalmente no usa sistemas operativos. La gente lo que usa son aplicaciones y servicios, porque quieren hacer cosas como retocar la imagen de su bebé o ver el último video de gatitos. Entonces el grupo ideal de usuarios de Linux es aquellos que pueden hacer todo lo que quieren hacer en Linux. Si te hace 100% falta usar Photoshop para tu trabajo, no uses Linux, si eres mi padre y lo único que te hace falta es una hoja de cálculo para apuntar las excursiones que has hecho, pues puedes usar Linux perfectamente.
Otra cosa muy importante ligada al "la gente no usa Sistemas Operativos sino aplicaciones" es "la gente no instala Sistemas Operativos", con lo que una de las cosas a mejorar (y KDE ha estado trabajando en ello con partners como Slimbook o Pine64) es que la gente pueda comprar ordenadores / dispositivos con Linux. Un poco idea loca, pero quizás el usuario normal ideal es aquel que está usando Linux sin saberlo, como cuando le preguntas a tu amigo si usa Android y te dice, "yo uso Samsung".
EED: La siguiente pregunta es de un anterior entrevista que le pedi una pregunta para un futuro entrevistado con perfil de programador.
¿Qué herramientas consideras indispensables para un correcto flujo de trabajo?
AA: Cada tipo de programación tiene sus propias idiosincrasias, lo que yo voy a comentar esta centrado en C++, probablemente aplicable a otros lenguajes, pero si no aplica, no digais que lo haceis porque yo lo he dicho. La herramienta más indispensable de todas, si quereis ser programador, es la cosa cero que teneis que hacer. Aprended inglés. 100% no podéis tener problemas leyendolo, escribir y hablar ya depende de cuanto se quiera uno limitar la carrera profesional, pero leerlo con fluidez es esencial. Despues de esto, lo más importante es automatizar el mayor numero de cosas posibles, la plataforma hoy en dia para hacer esto es probablemente gitlab. Te da bastante flexibilidad para automatizar cosas.
Cosas que automatizar #1: el formatado de codigo con clang-format. Nunca más volváis a discutir si falta un espacio antes o despues del parentesis con quien envia o recibe el parche. Se pone un clang-format que es la fuente de verdad y listos.
Cosas que automatizar #2: la compilacion del código en todas las plataformas que soportes. Por ejemplo en poppler cada vez que alguien propone un cambio de codigo se compila en 6 combinaciones de compiladores y plataformas diferentes. Y menos amenudo (porque son plataformas un poco más costosas de integrar en el gitlab de freedesktop.org) en otras 5 más.
Cosas que automatizar #3: sacar nuevas versiones ha de ser fácil, idealmente apretar un boton, pero si no seguir una serie de instrucciones que sea menos de 30 minutos. La moda hoy en dia es "release early, release often", es decir saca cuantas más versiones puedas y lo más a menudo que puedas. Firefox, Chrome, sacan versiones cada mes o a veces menos. Tu proyecto tiene que estar preparado para hacer los mismo, que no pase como el otro dia que encontramos un error bastante importante en un proyecto, pedimos al responsable que sacara una nueva versión y la respuesta fue "uffffffff, sacar una nueva versión me cuesta varias horas de trabajo".
Obviamente hace falta saber usar un sistema de control de versiones, no se puede tener micodigo.cpp micodigo1.cpp mycodigo_bueno.cpp y micodigo_bueno_de_verdad.cpp.
Hoy en dia la herramienta para gestionar versiones es git, tienes que saber usarla correctamente, aunque sea en los supuestos basicos, entender que es una rama, que es un merge y que es un rebase. Hay varios juegos que te pueden ayudar a aprender a usar git
https://learngitbranching.js.org/
Y luego obviamente las herramientas básicas, saber usar gdb y un IDE, el que más te guste, pero que puedas usar el ratón lo menos posible, si usas kate aprender que Ctrl+K mata lineas, que Ctrl+H busca la siguiente palabra seleccionada y que Ctrl+D comenta lineas.
EED: El fin de semana ,cambia el formato de la entrevista y las preguntas, con dos preguntas algo diferentes.
La primera pregunta sería.
¿Qué te hubiera gustado que te preguntase? Debes responder a tu propia pregunta.
La segunda pregunta.
¿Qué le hubieras preguntado a un programador?
AA: Una pregunta que creo que no me has hecho (perdona si si la has hecho y no la recuerdo, ha sido una semana larga) sería algo tipo ¿hace falta ser un super programador para comenzar a colaborar con KDE?
La respuesta es doble.
Primero, no hace falta ser programador, para colaborar con KDE, hay decenas de cosas a hacer que no son entrar código. Por ejemplo: traducciones, promoción, "gestión de proyectos", iconos / arte, prueba de aplicaciones, empaquetado...etc.
Segundo, si lo que quieres hacer es programar, no hace falta ser un programador "perfecto", en mi opinión las dos cualidades necesarias son fuerza de voluntad (para arreglar las cosas que rompas, no es un quizás, es un seguro, si haces cosas romperán cosas) y paciencia (cuando envíes un código nuevo, la gente tardará " un poco" en revisarlo, para ti parecerá muchísimo tiempo inaceptable, es decir, no seas como yo que la primera vez que envié una colaboración al día me estaba quejando que no me habían dicho nada).
Sobre que le preguntaría a un programador, pues quizás su opinión sobre cosas sobre diferentes "modelos" de desarrollo como Test Driven Development o Peer Programming.
EED: El Domingo , es el último día de la entrevista, será el momento de la despedida y para decir tus métodos de contacto, también si tienes un blog, podcast cualquier otro proyecto que quieras comentar.
Por último me gustaría que me recomendaras a una persona que creas que este dispuesto a participar.
Gracias por participar en la entrevista, ha sido un placer y espero que te haya resultado entretenida. Hasta la próxima, un saludo.
AA: Bueno, pues ha sido un placer también desde aquí, perdón si algunas de las repuestas he tardado un poco, espero que no haya sido terrible.
Comienzo con el blog
Twitter https://twitter.com/tsdgeos
Mastodon https://fosstodon.org/@tsdgeos
Y bueno, siempre hay más sitios en los que uno está pero como veis mi apodo es bastante consistente y mis apellidos también son bastante únicos o sea que si me buscáis me encontraréis.
Como persona para entrevistar la verdad es que no tengo un nombre en concreto pero creo que sería interesante alguien que se dedique al "arte" (música, imágenes, cómics, iconos, películas, etc.) con herramientas de Software Libre (perdón si ya se ha hecho, hace poco que estoy en el canal).
Y dicho esto me despido, volviendo a agradecer las preguntas y comentarios del público sin dejar de recordar por última vez que si pueden donen a los proyectos de Software Libre que usan, en particular para KDE tenemos https://kde.org/community/donations/
Si quieres leer la entrevista mientras se realiza, comentar e incluso realizar preguntas ,unete al canal de Telegram de las entrevistas Entrevistas en Diferido