Como escribir una aplicación KDE y una aplicación GNOME

fedora_gnome_y_kde

En venganza por las dificultades técnicas y la falta de colaboración que condujeron a la interrupción del episodio de «El MicroKernel» del sabado pasado, y con el desafío de superar en calidad de trolling al post de pandev, voy a recurrir al humor del blog Linux Haters para dejar unas cuantas cosas en claro.

Cómo escribir una aplicación KDE.

  1. Buscá alguna aplicación de código abierto semi-exitosa
  2. Convéncete de que escribir en C++ es la forma suprema de masturbarse, y que aprender Qt es mejor que pasar el tiempo con tu novia, porque es tan hermoso
  3. Recuérdate por qué MOC (Music On Console) no es malo.
  4. Toma el nombre de la aplicación, sed s/[cg]/k/, verifica que no acabes con tres kas en linea. Si no hay kas, añade una al principio.
  5. Piensa en cualquier función de cara al usuario que pueda proveer tu aplicación
  6. Foreach function: crear una capa de abstracción que soporte malamente al menos 3 otros backends
  7. Foreach function: crear botón en la barra de herramientas
  8. Foreach function: crear item de menú
  9. Asegúrate que pueda partir ventanas, crear pestañas y soportar KParts. Si no podés pensar en una UI, imita una de Windows.
  10. Asegúrate que use Phonon, y KAddressBook. Y una Terminal acoplable.
  11. NUNCA uses una librería cuyo nombre tenga una g. NUNCA.
  12. Publícala en KDE-Look.org
  13. Promete a todos que la portarás a Windows, pero no lo hagas
  14. Una vez cada unos pocos años, usa la revisión del toolkit como excusa para volver a empezar desde cero.

Cómo escribir una aplicación GNOME.

  1. Busca alguna aplicación razonable de alguna otra plataforma (Windows, Mac, KDE, la que sea, preferentemente Mac). Puntos extra si ya existen 3 otras alternativas basadas en gtk que no se quieren integrar a Gnome.
  2. El nombre DEBE tener una g. Puntos extra si puede ser una «gn». Si puedes usar «gnu» o «gno» o «gna» eres gegnial, y tu aplicación valdrá la pena usarla. Asegúrate que el nombre de tu aplicación no tenga mucho que ver con lo que en verdad hace. Además, NUNCA documentes si la g se pronuncia fuerte.
  3. La O en Gnome significa objeto. Utiliza el framework de objetos D-Bus. Si usas también Bonobo, mejor. Asegúrate que al menos una plataforma funcione en la red, pero también asegúrate que tu aplicación nunca la utilize en la red.
  4. Recuérdate que la Orientaación a Objetos en C no es tan mala. assert(gtk_no_en_serio_no_es_tan_malo). Además, recuérda que GTK+ es mucho mejor que Qt porque no tiene una compañía comercial escribiendo código para este. Así que, ya sabes, es más libre o algo así, y tiene un + en el nombre.
  5. Genera wrappers para cada lenguaje concebible, pero asegúrate que ninguno funcione exáctamente como quieres. Inisiste que tu distro empaquete cada wrapper en un paquete separado.
  6. Explícale a al menos tres otros programadores cómo glib no tiene mucho que ver con gnome. Porque les importa.
  7. ¡No olvides los íconos Tango!
  8. Asegúrate que tu aplicación compile en windows, pero que se vea como una MIERDA.
  9. Enumera todas las características que quieres que tu aplicación tenga.
  10. Descarta el 90% de ellas. Porque son difíciles de hacer. Pero diles a todos que en verdad no las necesitan.
  11. Implementa el 2% de ellas. Oculta el otro 8% en gconf. Ocúltalas bien.
  12. Tu interfaz no debe tener más de 4 botones.
  13. Asegúrate que tu aplicación dependa de al menos otras 4 librerías que tengan una g en el nombre. La vuelve más gnomera.
  14. No uses Mono, porque contagiarás tu ETS a todos. No, espera, usa Mono, porque te hará mucho más productivo. Espera, no, no uses Mono, porque si lo haces, alguna distro libretardada que nadie usa no distribuirá tu aplicación.
  15. Que dependa de un módulo que esté «dirigiéndose hacia la obsolencia programada»
  16. Tranquilízate de que aunque tu aplicación apesta, al menos sigue las guías de interfaz humana.

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      F3niX dijo

    Jajajja ahora si me rey usa mono no lo uses jajajajaj buena esta. Crea tres capas de abstracción jajaj

      gustawho dijo

    LOL
    Lo correcto sería publicar las apps KDE en kde-apps.org, ¿no? 😛

      vicky dijo

    Lo mas gracioso es que el articulo original en ingles fue escrito en el 2008, pero la gran gran mayoría de las cosas sigue siendo verdad. En especial :

    Enumera todas las características que quieres que tu aplicación tenga.
    Descarta el 90% de ellas. Porque son difíciles de hacer. Pero diles a todos que en verdad no las necesitan.

         diazepan dijo

      En verdad cambié un poco las cosas considerando la actualidad. En el post original habían 4 frameworks de objetos (D-Bus, Bonobo, Corba y Orbit) y decía que usara al menos 2. Corba ya desapareció y Bonobo está en plan de obsolencia. Hoy se usa D-Bus

         Windóusico dijo

      Pues yo creo que ha perdido frescura. Sigue resultando gracioso porque aún no hemos olvidado los tiempos de GNOME 2 y los comienzos de KDE 4 (curioso que sigan vigentes los puntos 10, 11 y 12 de GNOME).

      eVeR dijo

    jajjajaa, me morí.
    Empezó bien con KDE y «Foreach function: crear una capa de abstracción que soporte malamente al menos 3 otros backends» (me vienen a la mente vlc, gstreamer y xine; ninguno anda bien 😛 )
    Faltó que la app use Akonadi y Nepomuk, pero esas partes que no andan y nadie sabe bien para que sirven… ah, y que cuando se redimensiona la ventana los elementos de la misma se deformen horriblemente…

    Pero cuando llegué a la parte de Gnome, ahí si me descostillé:
    «Genera wrappers para cada lenguaje concebible, pero asegúrate que ninguno funcione exáctamente como quieres» y «Asegúrate que tu aplicación compile en windows, pero que se vea como una MIERDA.» se llevan todas las palmas, jaja.
    Saludos

      DanielC dijo

    Lo que mas me gustó, es que aunque no haya desarrolladores, solo con mirar el numero de pasos para uno y otro te das cuenta que es mas facil programar en Qt. 2 pasos menos son 2 pasos menos, como me la pongan. xD

         eliotime3000 dijo

      Además que el QT se adapta a (casi) cualquier tipo de interfaz de escritorio.

           DanielC dijo

        Pero ese no es mérito de las Qt sino de los que las adaptan a su escritorio.

        Es como si me dijeras que las gtk de Gnome 3.6 se adaptan a Cinnamon 1.6., 1.7 y 1.8, cuando eso es mérito de quienes desarrollan Cinnamon, no de los que desarrollan Gnome o las gtk’s.

      pandev92 dijo

    Lo siento, cuando llegues a 340 comentarios haciendo del post el más comentado de todo el blog, solo detrás de la entrada esa de los navegadores,
    xD, me habrás superado ahaha

         Juan Carlos dijo

      Es que a vos te contrató @elav para lograr más accesos al blog…jajajaja.

           pandev92 dijo

        jajajajajaj LOL

         diazepan dijo

      Dije en calidad de trolling, no en comentarios. Lo tuyo es una horterada.

         eliotime3000 dijo

      Para hacer que los usuarios que usen máquinas obsoletas (como es mi caso) puedan visualizar el flame sin tener que esperar que se carguen los benditos comentarios, hubieras puesto sólo un extracto de tu post y el flame completo lo hubieras enlazado al foro de aquí, de paso que pedías que debatan en el foro para no tener que saturar la página a visualizar (a menos que se tomen la molestia de instalar el Disqus, pero como el Disqus y otros gestores de comentarios no se pueden customizar como los que vienen incluídos en WordPress, se comprende la razón).

      pandev92 dijo

    8-Asegúrate que tu aplicación compile en windows, pero que se vea como una MIERDA.

    Bueno, en este caso puedo decir que ciertas aplicaciones qt, también se ven horribles, basta probar qbittorrent bajo windows 7 u 8, para ver lo fea que se ve.
    En windows como el 90% de aplicaciones tienen apariencia fea, dado que debes hacerle un tema tu….

         eliotime3000 dijo

      Obviamente, porque el QT se adapta al tema que usa la interfaz de cada SO que se compile (un clarísimo ejemplo es el VLC, que se ve genial en KDE y Aqua, pero en Windows es completamente aburrido).

      elendilnarsil dijo

    Ey Diazepan, hablando de trolleo, en la primera línea, lo correcto es «condujeron» y no conducieron.

         diazepan dijo

      corregido

           elendilnarsil dijo

        Gracias compañero.

      Giskard dijo

    «y con el desafío de superar en calidad de trolling al post de pandev»
    JA JA JA JA JA JA. Te pusiste muy alta la vara!!! 😀

         diazepan dijo

      Repito lo que le dije a pandev: «Dije en calidad de trolling, no en comentarios.»

      Garbage_Killer dijo

    >Convéncete de que escribir en C++ es la forma suprema de masturbarse, y que aprender Qt es mejor que pasar el tiempo con tu novia, porque es tan hermoso.

    >es la forma suprema de masturbarse
    >es mejor que pasar el tiempo con tu novia
    >manuela is everywhere

    loltodo

      Colga1 dijo

    Creí que era el unico que usaba «libretardado» como traducción de Freetard jaja.

         diazepan dijo

      yo tambíen consideré traducirlo como «libertarado» (libertad y tarado)

           GGGG1234 dijo

        Yo lo veo más como «retardado» que como «tarado». Igual, son pavadas. Sea como sea cumplen con su objetivo…

      kikee dijo

    A mi el post me parece lo de siempre, los que usan KDE machacando a los de Gnome, no creo que uno sea mejor que el otro, son distintos, la simpleza maxima contra lo sobrecargado. Y otra cosa, los lenguajes de programación a mas alto nivel son mas faciles de utilizar pero menos optimos a la hora de ejecutar las aplicaciones hechas con dicho lenguaje, un programa en ensamblador funciona mejor que uno en C, y uno en C funciona mejor que uno en C++, decir que Qt es mejor que GTK+ por estar en C++ me parece una falacia, por eso Torvalds no quiere ni una linea de C++ en el kernel y hay partes programadas en ensamblador como el arranque del kernel.

         x11tete11x dijo

      como explicas que QT sea el mas usado en moviles? siendo que son equipos de limitados recursos…. lo de optimizacion en que te basas para decir eso?, todo depende del compilador, si este hace algun manejo de static scheduling que el otro no, obviamente que sera mas efectivo que el otro… por otra parte viste la lista de desarrolladores que hay para cada proyecto?, para GTK hay un solo desarrollador a tiempo completo y ultimamente cada nueva version rompe la compatibilidad con las anteriores… tu comentario mas bien parece en contra de la programacion orientada a objetos…
      Por otro lado a que llamas sobrecargado?, soy usuario de KDE y si sobrecargado lo interpretamos como consumo de RAM, KDE debido a su modularidad se puede configurar sacrificando algunas comodidades que ofrece para que consuma muchisimo menos que Gnome (cosa que en Gnome no se puede), si hablamos en cuanto a minimalismo nuevamente KDE debido a su modularidad se puede «tunear» de miles de maneras para que quede muy «minimal» (no sobrecargado), si lo interpretamos como cantidad de aplicaciones que trae, entonces lamento decirte que no se puede hablar de uno mas pesado que el otro porque tanto KDE, como Gnome, se pueden instalar sus versiones base, que solo traen las apps indispensables.
      Por ultimo con QT se pueden hacer cosas que con GTK no u.u

           pandev92 dijo

        qt es más usado en móviles porque tiene un ide decente, porque es un lenguaje más completo a nivel de gui, etc.

           kikee dijo

        – Cito textualmente una frase de Linus Torvalds que define muy bien la opinión de muchos:

        “C++ es un lenguaje horrible. E incluso es más horrible por el hecho de que un montón de programadores de segundo nivel lo usan, hasta el punto de que es aún más y más fácil generar basura sin utilidad con él. Sinceramente, incluso si la decisión de haber usado C no tuviera *nada* más que ver con el hecho de mantener a los programadores de C++ fuera del proyecto, esa hubiera sido una gran razón para usar C.”

        -Con sobrecargado me refiero a la interfaces llenas de botones y opciones por donde perderte y que luego la mitad de ellas no hacen nada o algo insignificante (no se si eso lo que significa hacer mas cosas que GTK), el tema del consumo de memoria es un tema aparte, no hace falta hablar de eso.

        -@pandev92 a definido muy bien porque QT se usa mucho en moviles, pero hay que decir la verdad entera, porque GTK es el que mas se usa en aplicaciones de escritorio que para mi es lo importante, cosa que la mayoria usa GTK2 que es mejor que GTK3, ya que como bien dices se cambia radicalmente en cada versión, pero GTK2 aun tiene soporte y posiblemente mas que GTK3 debido a las aplicaciones que hacen uso de ellas como Firefox por ejemplo.

             x11tete11x dijo

          respeto muchísimo la opinion de Torvalds, pero como bien dice, se esta refiriendo a programadores incompetentes, mas allá de que no le guste C++ , si tenes un programador en C que es un animal, por usar C no va a crear buenos programas, van a seguir siendo basura, yo tambien vi C, y tenia compañeros que cosas que podian controlar con un while, las controlaban con un for con un break adentro ¬¬ , a lo que voy desde mi punto de vista, C es un gran lenguaje, pero si hay un mandril programando detras es lo mismo que nada.

          respecto a la interfaz es bastante subjetivo el 90% de las aplicaciones de KDE se puede configurar que botones queres que esten visibles en la ventana, si consideras que hay cosas innecesarias simplemente las quitas y listo.

          respecto de los moviles si bien es cierto que es un Framework , hay mucha mas gente detras de QT que de gtk.. y las mejoras respecto a OpenGL son constantes, en fin me gustan los lenguajes imperativos, pero reconozco que hay cosas que es un dolor de huevo hacerlas en este tipo de lenguajes, siendo que existe el concepto de objeto

               kikee dijo

            – No se trata de que haya buenos programadores o no, se trata de que en igualdad de condiciones (buen programador, buen compilador, etc..) C es capaz de sacar mas rendimiento que C++, porque es la mezcla ideal entre lenguaje de bajo nivel y lenguaje de alto nivel, claro esta que programar en C es mas dificl a la hora de diseñar interfaces por ejemplo, pero es igual que programar en ensamblador, es mas dificl pero se obtiene muchas rendimiento, por eso el Kernel de Linux no tiene ni una sola linea de C++, se usa C y ensamblador para cosas como el arranque del Kernel.

            – Lo de las interfaces de KDE la verdad no lo entiendo, osea, yo cojo un programa como brasero (GTK) y luego otro como K3B (QT) y si el K3B me parece que la interfaz es muy sobrecargada, llena de botones y opciones que no se usan, entonces puedo ir haciendo desaparecer los botones y menus por arte de magia?, pues es la primera vez que lo oigo.

             x11tete11x dijo

          perdon sigo sin entender porque obtenes mas rendimiento, en que te basas para decir eso?, concuerdo en que eso depende del compilador, todas esas cosas, dependen de que tanto code scheduling hagas, incluso hasta el GCC se lo podes activar como caracteristica experimental

          en cuanto a las interfaces aca hay una cap del que mencionas, el K3B totalmente destripado (los paneles los saque afuera simplemente para mostrar que se los puede quitar o recolocar a gusto y placer, otra cosa, se ven oscuros porque no les estoy haciendo focus (es un efecto de kwin)) y la barra de herramientas tambien podes configurar que botones queres que esten disponibles

          http://i.imgur.com/Z1OZqgQ.jpg

      Djngo dijo

    Como ex-programador de KDE te cuento que MOC NO ES music on console, en este caso. Saludos.

    Supongo que viste mi coment en muy linux y fueste a la fuente a copypastear y translatear con guugle.