Archivo de la categoría: Opinion

Cagándola con un bug grave

A veces a uno se le escapan pequeños bug que, en principio, no tienen la menor importancia, hasta que resulta que sí la tienen. Eso me ha ocurrido con la nueva versión en desarrollo de DevedeNG.

El bug ni siquiera era tal, sino más bien una combinación de valores por defecto poco adecuados, mensajes poco claros, y código que hacía demasiadas cosas. Básicamente, DevedeNG necesita una carpeta vacía donde crear el proyecto, así que le pide al usuario que le indique una. Si dicha carpeta ya existe le indica que va a proceder a borrarla, dejándole escoger si quiere continuar o cancelar antes de hacerlo.

Hasta aquí todo parece normal. El problema es que la carpeta por defecto era la carpeta personal del usuario, y el mensaje de aviso decía simplemente: «La carpeta seleccionada ya existe. Si continúa, será borrada. ¿Continuar?». Este mensaje no es lo suficientemente claro porque en ninguna parte aparece qué carpeta se va a borrar. Ante esto, un usuario que se limite a pulsar Siguiente->Siguiente->Siguiente se encontrará con su carpeta personal borrada.

El código ya está corregido, para lo que he aplicado las siguientes lecciones aprendidas:

  • Debe evitarse utilizar la carpeta de usuario ($HOME) como destino por defecto cuando haya que realizar alguna acción que borre una carpeta. En el caso de DevedeNG, el primer cambio fue que la carpeta destino se componga de la carpeta escogida por el usuario más el nombre del proyecto, por lo que, por defecto, nunca será la carpeta de usuario sola la escogida para ser borrada.
  • Siempre que se le pida al usuario confirmación para borrar una carpeta debe mostrarse claramente en el texto qué carpeta se va a borrar. Nunca se debe dar por supuesto que el usuario lo sabe.
  • En la medida de lo posible no debe borrarse la carpeta al completo, sino buscar qué ficheros y directorios son los que pueden interferir con el proceso que se quiere realizar, borrando exclusivamente esos y ninguno más.

Afortunadamente, el usuario que se tropezó con este problema tenía copia de seguridad, por lo que todo quedó en un susto.

Viajando al espacio

Me he enganchado al juego Kerbal Space Program. Para los que no lo conozcan, es un simulador espacial de corte humorístico, aunque muy realista. El objetivo es construir un cohete para llevar a los Kerbals, (los habitantes del planeta Kerbal) hasta su luna Mun. Se pueden poner en órbita satélites, y muchas cosas más.

Lo más interesante es que hay versión para Linux, y además, comprado en la propia página cuesta sólo 23 dolares (unos 16 euros, al cambio). Aún está en desarrollo, pero se puede comprar la versión actual, que es muy completa, y con ese pago ya se tiene acceso a las distintas actualizaciones, hasta que el juego esté completo.

Solo tiene un defectillo: la falta de un instalador que permita disponer de un icono en los menús. Por eso he escrito yo uno, que se puede bajar aquí: instalador de Kerbal Space Program para Linux. Basta con descomprimirlo en la misma carpeta que el juego y ejecutar el fichero ksp_installer.

Un par de detalles, por si acaso:

  • No utilizar el ejecutable de 64 bits, porque falla más que una escopeta de feria (es un problema conocido). El ejecutable de 32 bits funciona perfectamente en Linux de 64 bits.
  • Si se quiere lanzar desde una línea de comandos, debe utilizarse el comando LC_ALL=C ./KSP.x86 para que el juego funcione bien (mi instalador ya lo tiene en cuenta)
  • La última versión de pago, la 0.20.2, no funciona con el driver libre para tarjetas AMD/ATI; es necesario utilizar el privativo, o bajarse la versión 0.19, que también está disponible (espero que lo corrijan pronto)

 

Cronopete, WebTV y Gnome Shell

Desde mi última entrada hasta hoy he hecho unas cuantas cositas, pero no las comenté por aquí por falta de tiempo. Y dado que al final no se ha acabado el mundo, vamos a retomar las buenas costumbres.

En primer lugar, lancé una nueva versión de Cronopete, la 3.6.0, que justo hoy actualicé a la 3.8.1. El principal cambio ha sido un lifting de la interfaz de restauración de ficheros, además de incluir paquetes .deb con las versiones GTK2 y GTK3.

Por otro lado, lancé una nueva versión de Transmission para WebTV, la 5.0. En ella, además de incluir la última versión de Transmission, he recompilado todas las bibliotecas desde cero para tener las más recientes y he sustituido el viejo periscope por mi versión modificada de submarine. Ahora, por fin, vuelven a funcionar los subtítulos. Por desgracia, el autor aún no ha mezclado mis cambios con su rama, así que le he escrito y estoy esperando su respuesta.

Por último, he vuelto a Gnome Shell desde Elementary. El motivo es que necesito tener iconos en el escritorio, y de la forma que trabaja Gala (el gestor de ventanas de Elementary) no es nada cómodo hacerlo: cada vez que un escritorio virtual se queda sin ventanas abiertas, se mueve al anterior automáticamente. Aunque en Gnome Shell ocurre algo parecido (cambia a modo Actividades u Overview) tiene la ventaja de que se pueden añadir extensiones de manera relativamente sencilla. Pero a la vez echaba de menos algunas características de Elementary, así que me lié la manta a la cabeza y escribí dos:

  • Slingshot: se trata de un clon para Gnome Shell del menú lanzador de aplicaciones de Elementary.
  • AvoidOverview: elimina, precisamente, el molesto cambio de modo cuando se cierran todas las ventanas de un escritorio, pero permitiendo que se siga accediendo mediante los hotspots, el botón de Actividades, o la tecla windows.

Reconozco que la elección de JavaScript para crear Gnome Shell me resultaba curiosa al principio, pero ahora que he escrito estas dos extensiones puedo entender los motivos: gracias a la técnica de Monkey Patch, es posible cambiar el funcionamiento de cualquier parte del escritorio sin necesidad de modificar los fuentes originales, porque JavaScript permite modificar en caliente los métodos de un objeto. Esto no es necesario cuando simplemente se quiere hacer un módulo sencillo que incluya un menú, un icono, un botón, etc. pues para ello existe una API muy bien definida. Este es el caso de Slingshot, que no necesita ninguna de estas técnicas.

Sin embargo, para cambiar la forma en que responde el escritorio en funciones muy internas, como hace AvoidOverview, no queda más remedio que usarlas. Y aunque reconozco la potencia y versatilidad que ofrecen, tengo que decir que no me gustan demasiado, porque no puedo evitar ver el resultado como sucio. La apariencia no es la de un módulo que se enchufa en un punto específico mediante una interfaz bien definida, sino la de un parche aplicado con cinta aislante, cortando pistas del circuito impreso, y sujetando todo con una brida.

Pese a todo, en conjunto creo que el resultado ha sido acertado, porque de limitarnos exclusivamente a una API para módulos, probablemente no se podría jamás incorporar un cambio en algo tan profundo como esto. No olvidemos la postura de Gnome de reducir al mínimo las opciones de configuración del escritorio: no creo que aceptasen ni cambiar en la rama oficial el funcionamiento del modo Overview, ni incluir la opción de configurarlo.

Esto le da un nuevo sentido a un comentario que leí sobre Gala, el gestor de ventanas de Elementary OS, que también está basado en la tecnología de Gnome 3 (y que, por desgracia, no recuerdo donde la leí). Venía a decir que lo importante no es tanto el escritorio en sí, sino la tecnología que hay debajo, con mutter y demás, porque con ella se pueden hacer nuevos escritorios con facilidad, como es el caso de Gala o Cinnamon. Y así es: no hace falta que en la rama principal se añadan todas las opciones imaginables, porque es perfectamente posible modificar el funcionamiento interno con bastante facilidad, y simplemente añadiendo unas cuantas extensiones se puede cambiar de arriba a abajo la forma de trabajar del sistema.

Para aquellos que quieran saber cual ha sido mi elección, comentar que, además de AvoidOverview y Slingshot, tengo las siguientes extensiones:

  • Coverflow Alt-tab: cambia el funcionamiento de las teclas Alt+Tab por un cambiador al estilo cover-flow, además de mostrar sólo las ventanas del escritorio actual.
  • Hide Dash: elimina el dash (barra de aplicaciones situada a la izquierda). Lo tengo porque prefiero tener plank en la parte baja de la pantalla.
  • No top-left hot corner: desactiva el hotspot de arriba a la izquierda, que permite entrar en el modo Overview. Necesario porque, si no, es muy fácil que se active cuando se intenta lanzar una aplicación desde Slingshot.
  • Remove Accesibility: elimina el icono de configuración de la accesibilidad. Cabe señalar que es la extensión más descargada para Gnome Shell… por algo será 😉

A mayores también tengo System-Monitor y Workspace navigator, pero esas ya son por gusto propio. Con estas extensiones, y activando Nautilus para que gestione los iconos del escritorio, he podido darle la vuelta por completo a la forma de trabajar de Gnome Shell, ajustándolo exactamente a como yo lo quiero.

Personalizando Gnome3

Hace tiempo escribí un artículo criticando el modelo de escritorio de Gnome3 y de Unity, en el que, además, explicaba como configurar un Gnome clásico.

Cuando actualicé a la última Ubuntu (12.04) empecé a tener problemas con los escritorios al usar Gnome Classic, y después de la buena crítica de un amigo, decidí darle otra oportunidad a Gnome3. Pero aún así no olvidaba las carencias que describí en mi anterior artículo, así que decidí personalizarlo a mi gusto.

Lo primero que hice fue activar los iconos en el escritorio. Para ello instalé el programa gnome-tweak-tool, y escogí la opción correspondiente, como se ve en esta imagen:

Lo segundo fue buscar extensiones que supliesen las carencias que veía. Fue entonces cuando me llevé una muy agradable sorpresa con el nuevo sistema para instalar extensiones de Gnome 3.4: en lugar de tener que bajar un fichero, copiarlo en alguna carpeta y rezar para que funcione, los desarrolladores han creado una página web (https://extensions.gnome.org/) que permite simplificar de manera notable este proceso. Dicha página se integra con el navegador y permite instalar extensiones con un simple click en el interruptor que aparece en la parte izquierda. También permite, desde la misma página, desinstalar, actualizar, desactivar y configurar las extensiones instaladas (aunque las dos últimas acciones también se pueden hacer «en local»).

La cantidad de extensiones disponibles es muy grande (más de 170 en el momento de escribir estar líneas), y cubren la práctica totalidad de las necesidades del usuario medio. Las que instalé en mi sistema son las siguientes:

  • Alternative Status Menu: añade al menú de usuario la opción de apagar el equipo
  • Dash and Overview Click Fix: hace que al pulsar sobre el icono de una aplicación que ya está lanzada, se lance otra copia en lugar de mostrar la que ya existe
  • Dash to dock: convierte la barra de iconos de la izquierda en un dock. También permite cambiar de escritorio con la rueda del ratón
  • Frippery Applications Menu: sustituye el botón Actividades por un menú de aplicaciones como el de Gnome 2 en la parte superior izquierda (la tecla Windows sigue entrando en dicho modo)
  • Maximus: elimina la barra superior de las ventanas maximizadas, lo que permite ganar un poco de espacio extra
  • Remove Accesibility: elimina el icono de accesibilidad en la barra superior
  • System Monitor: añade gráficas de uso de la CPU, memoria, etc. (configurable)
  • Windows Alt Tab: hace que las teclas Alt+TAB sólo escojan entre las ventanas del escritorio actual, en lugar de entre las de todos los escritorios
  • Workspace Indicator: muestra un icono con el escritorio actual, y permite cambiar de escritorio desde él
  • Workspace Navigator: permite usar las flechas arriba y abajo para cambiar de escritorio en la vista de Actividades

La única extensión que echo en falta es una que impida que Gnome 3 entre en modo Actividades cuando el escritorio actual se queda sin ventanas.

Lo sorprendente es que, al final, he acabado acostumbrándome a lanzar las aplicaciones mediante la técnica de pulsar la tecla Windows, para entrar en el modo Actividades, y teclear el nombre de la aplicación que quiero. Para las más usadas es mucho más cómodo (por lo que tengo que comerme mis palabras en el anterior artículo). Para las menos, sin embargo, sigue siendo más cómodo el menú de aplicaciones que el sistema nativo de Gnome 3, razón por la que lo conservo.

El maximizar las ventanas simplemente arrastrándolas hasta la parte superior me resulta comodísimo, y el ponerlas a media pantalla arrastrándolas a un lateral es una opción realmente útil cuando uno tiene que comparar textos o copiar de un lado a otro. Además, he acabado acostumbrándome al sistema de escritorios virtuales dinámicos, y de hecho creo que es la mejor opción para aquellos usuarios noveles que nunca los han utilizado.

Así pues, creo que debo comerme parte de mis palabras y reconocer que Gnome 3, aunque con algunos defectos (nada en este universo es perfecto), sí es un escritorio perfectamente válido, y muy sencillo de adaptar a las necesidades de cada uno.

No, no voy a hacer tu trabajo

A veces me pregunto qué se cree la gente que somos los que, por afición, nos dedicamos al software libre. Esto viene porque me ha llegado otra vez un correo de un alumno de una carrera/ciclo/curso/lo-que-sea, con una asignatura de programación y una práctica muy, pero que muy chunga oye, que él, por circunstancias ¿eh?, no por vagancia, no sabe hacer; y que venga, va, que me enrolle y se la haga yo.

Mi respuesta, como en el resto de las ocasiones, ha sido ofrecerle alguna pequeña orientación, o algún consejo de donde puede encontrar alguna información que le ayude a resolverlo, pero dejando claro que ni de coña pienso hacer su trabajo.

Pues bien: hasta ahora nadie ha aceptado ese tipo de ayuda. Y lo peor es que, en base a alguna respuesta que me han enviado, opinan que soy un cabrón egoísta por no darles el problema resuelto y masticado, listo para imprimirlo y entregárselo al profesor sin siquiera tener que leerlo ellos.

Pues voy a ver si puedo dejar las cosas bien claritas para que no haya más malentendidos: no pienso hacer el trabajo de nadie, y por dos razones bien sencillas:

  • ¿Qué pasará cuando trabajes en una empresa y tengas que resolver otro problema del que no tienes ni idea? ¿Me volverás a escribir para que te saque las castañas del fuego otra vez? ¿Y cuantas veces más? ¿Te crees que solo por tener un papel que dice que has hecho un curso ya te van a llover ofertas millonarias, independientemente de si realmente sabes hacer algo o eres un perfecto inútil? ¡Señores, que trabajar no consiste en ir a la oficina a actualizar el Facebook y leer el Marca!
  • Si hago programas en mi tiempo libre y los cuelgo gratis en mi web es porque me apetece A MI hacerlos. Son cosas que YO decido hacer, cuando YO decido hacer y como YO decido hacer. Disfruto haciéndolas porque es lo que YO quiero hacer en un momento determinado. Cuando me aburro, dejo de hacerlas, y por eso hay proyectos «abandonados» en mi web. Hacer el trabajo de otros no es divertido, así que olvídalo.

¿De qué vamos?

El fracaso de Gnome-Shell y Unity (y como solucionarlo)

Llevo un mes aproximadamente probando Ubuntu 11.10, y la verdad es que no me gustan nada las interfaces que nos esperan en ella. Me refiero, como ya habréis supuesto, a Gnome-Shell y a Unity.

No niego que son muy bonitas y novedosas (especialmente Gnome-Shell). Tampoco niego el ingente trabajo que hay detrás. El problema, bajo mi punto de vista, es que les falta ergonomía.

Veamos a qué me refiero. Si en Gnome-Classic (el Gnome de toda la vida) quiero lanzar una aplicación que no tenga en un lanzador rápido, tengo que hacer estos movimientos con el ratón (parto de la mitad de la pantalla porque intento mostrar trayectorias promedio; la línea roja es el recorrido del ratón, y los puntos gordos representan cada click):

Rápido y directo.

Veamos ahora lo que hay que hacer en Gnome-Shell:

La cosa ya no es tan sencilla: no sólo hay que ir adelante y atrás por la pantalla, sino que hay que buscar de izquierda a derecha y de arriba a abajo entre los iconos, lo que es más lento que buscar únicamente de arriba a abajo en el menú de Gnome-Classic.

Finalmente, Unity:

Aquí se añade complejidad a mayores, porque demasiado a menudo hay que expandir los resultados (Ver X resultados más).

Los defensores de estos entornos probablemente dirán que es posible teclear parte del nombre de la aplicación, y ésta quedará seleccionada, pero eso no soluciona nada, porque obliga a levantar la mano del ratón, teclear, y volver a agarrarlo: pérdida de tiempo e incomodidad.

Además, en Gnome Shell tampoco disponemos de iconos en el escritorio, lo que también lía de mala manera a los que ya estamos acostumbrados a trabajar con un escritorio clásico. A fin de cuentas, el problema real es el cambio brutal en la forma de trabajar: el hombre es un animal de costumbres, por lo que si le cambias todo su entorno, no se siente cómodo.

Afortunadamente hay formas de resolverlo…

Cambiar a Gnome-Classic

Gnome3 incluye un port del escritorio clásico a GTK3, por lo que la solución más sencilla para mantener nuestro escritorio de toda la vida consiste en utilizar éste. Además, nos permite seguir utilizando Compiz.

Para cambiar a este entorno, primero tenemos que instalar los paquetes gnome-session-fallback y gnome-tweak-tool. Una vez hecho, salimos de la sesión y volvemos a entrar, escogiendo Gnome Classic como entorno:

Entramos en nuestra sesión y veremos el escritorio de toda la vida, pero sin iconos. Para resolverlo, arrancamos gnome-tweak-tool y marcamos las siguientes opciones:

La primera opción activa el escritorio con iconos, la segunda muestra el icono Equipo, la tercera la carpeta personal, y la quinta la papelera. A mayores se puede marcar la sexta, si te gusta que aparezcan las unidades montadas en el escritorio. Y con esto ya tenemos nuestro Gnome de toda la vida, con la única diferencia de que para activar el menú de las barras superiores e inferiores (el que nos permite añadir nuevos elementos, y moverlos) hay que mantener pulsada la tecla ALT a la vez (bueno, y que los elementos de éstas no se colocan donde uno los deje, sino alineados a la izquierda, centro o derecha, lo que es mucho más cómodo).

Adaptar Gnome Shell

La segunda opción consiste en adaptar Gnome Shell al estilo que queremos. Para ello, empezamos por instalar gnome-tweak-tool, y la usamos para activar las mismas opciones que en el caso anterior. Con ello ya tendremos de nuevo iconos en el escritorio.

Ahora llega la segunda parte, que consiste en instalar la extensión que incorpora un menú de aplicaciones a Gnome Shell. Por desgracia, a la hora de escribir este artículo todavía no conseguí hacerla funcionar, así que se agradece cualquier ayuda. Probablemente cuando Gnome Shell 3.2 sea ofical, sea más fácil (actualmente Ubuntu 11.10 incluye Gnome Shell 3.1, que es una versión en desarrollo).

Por supuesto, hay más extensiones que harán que Gnome Shell se parezca aún más a Gnome Clásico. Como siempre, todo es cuestión de ir probando.

Adaptar Unity

Para hacer lo mismo con Unity, basta con seguir las (algo liosas) instrucciones para instalar un menú de aplicaciones en Unity. Hasta ahí llego, porque la verdad es que me gusta tan poco que lo he usado una semana escasa.