Icedove-UXP es una aplicación de correo basada en la Plataforma Unificada XUL.
Históricamente, Icedove fue un cambio de marca de Thunderbird por el proyecto Debian, con modificaciones mínimas, para resolver las disputas de marca. Debian descontinuó Icedove en febrero de 2017 después de alcanzar un acuerdo con Mozilla sobre el uso de su marca.
El equipo de Hyperbola continuó la marca Icedove en el espíritu de la libertad cultural durante varios meses. Sin embargo, se descubrieron inconsistencias, incluido el uso de fuentes no libres en el logotipo Icedove de Debian. Como Debian ya no era compatible con Icedove y alentaba a los usuarios a instalar Thunderbird con el nuevo motor Quantum, decidimos buscar la creación de un fork adecuado.
Icedove fue la segunda aplicación en ser portada con éxito a UXP por el Proyecto Hyperbola.
Para preservar el conocimiento de portar una aplicación a UXP para futuros desarrolladores, esta es una guía paso a paso de cómo Icedove fue portado a la Plataforma Unificado XUL.
Como con cualquier proyecto, lo primero que debes hacer es comenzar desde la fuente. En este caso, cualquier aplicación XUL < 52.x debería funcionar. Las versiones 60.x y superiores utilizan el llamado motor Quantum, que reemplaza a XUL en favor de las dependencias de Chromium.
Para configurar el entorno de compilación, necesitará instalar algunas dependencias. Los nombres de los paquetes pueden variar ligeramente dependiendo de su distribución de GNU/Linux. También puede consultar las notas de la LFS.
pacman -S alsa-lib dbus-glib ffmpeg gtk2 gtk3 hunspell icu libvpx libxt mime-types mozilla-common nss sqlite startup-notification ttf-font autoconf-legacy clang diffutils gconf git imake inetutils libpulse llvm mesa pkg-config python2 quilt unzip xorg-server-xvfb yasm zip
Comenzamos con Thunderbird 52.9.1 ya que era la última versión estable en el momento de escribir este artículo. Las fuentes originales se pueden encontrar aquí: http://http.debian.net/debian/pool/main/t/thunderbird/thunderbird_52.9.1.orig.tar.xz
tar -jXf thunderbird_52.9.1.orig.tar.xz -c ~/Projects/mailclient
Una vez que haya extraído las fuentes, lo primero que debe hacer es eliminar la carpeta /mozilla. Este contiene el núcleo de mozilla-central, que reemplazaremos.
cd ~/Projects/mailclient rm -rf mozilla
A continuación, coloque UXP como reemplazo:
git clone https://github.com/MoonchildProductions/UXP mv UXP mozilla
Ahora prepare un mozconfig para la aplicación y colóquelo en la carpeta root. ~/Projects/mailclient en nuestro ejemplo.
Puede consultar la lista de depuración a continuación:
# Dile a UXP que compile la aplicación en la carpeta "mail" ac_add_options --enable-application=mail # Configuración de depuración ac_add_options --disable-optimize ac_add_options --enable-debug-symbols ac_add_options --enable-debug ac_add_options --with-pthreads # Plataforma objetivo ac_add_options --target=x86_64-pc-linux-gnu # Especifique el número de núcleos de CPU mk_add_options MOZ_MAKE_FLAGS="-j2" # Desactive bloatware que pueda haber en la aplicación ac_add_options --disable-accessibility ac_add_options --disable-alsa ac_add_options --disable-cpp-rtti ac_add_options --disable-crashreporter ac_add_options --disable-dbus ac_add_options --disable-necko-wifi ac_add_options --disable-negotiateauth ac_add_options --disable-official-branding ac_add_options --disable-pulseaudio ac_add_options --disable-tests ac_add_options --disable-updater ac_add_options --disable-webrtc ac_add_options --disable-safe-browsing ac_add_options --disable-url-classifier # Habilite algunas características útiles # Lightning Calendar ac_add_options --enable-calendar # Gnome GIO ac_add_options --enable-gio # System Libs confirmed working: ac_add_options --with-system-icu ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --with-system-bz2 ac_add_options --with-system-libvpx ac_add_options --enable-system-hunspell ac_add_options --enable-system-ffi ac_add_options --enable-system-pixman #ac_add_options --enable-system-sqlite # keep disabled for stability #ac_add_options --with-system-nspr # keep disabled for stability #ac_add_options --with-system-nss # keep disabled for stability
Desde aquí debe familiarizarse con mach build le ayudará mucho cuando comience a construir y depurar tu aplicación. Puede probar “./mozilla/mach build” en este punto, pero no se completará correctamente hasta que hayamos corregido una serie de errores de compilación.
Ahora que su entorno de compilación está listo, debemos incluir los archivos que faltan en su aplicación. Cuando descargó las fuentes originales, Mozilla se negó a decirle que estaban incompletas. Tendrá que encontrar e instalar los archivos que faltan.
UXP es conocido por eliminar bloatware. Como tal, pasará una buena cantidad de tiempo eliminando la información que ya no es compatible con UXP.
En este punto, su aplicación debería estar compilando correctamente, y puede iniciarla con “./mozilla/mach run”, pero aún quedan algunos errores.
El resto de tu trabajo será su marca. Debería tener un buen nombre para su nueva aplicación y un logotipo adecuado.
La marca está en la carpeta /branding respectivamente. Es posible que desee modificar las imágenes con GIMP para crear su marca.
Una vez que haya elegido un buen nombre, es el momento de revisar todo el código para cambiar el Nombre de la aplicación. También puede querer renombrar el archivo preference js para fines de marca.
Es posible que desee cambiar la estructura de construcción. Aunque no lo hicimos para esta aplicación, puede consultar este commit de UXP's para mover una aplicación y los cambios de ruta respectivos en toda la aplicación.
También eliminamos un API privativo y JavaScript ofuscado) descubierto en la aplicación. Email != Web. No podemos permitir que el correo electrónico dependa de la web, o mecanismos de autenticación privativos.
Como medida final, puede desear cambiar el GUID. Aunque esto rompe la compatibilidad de extensión de la aplicación que bifurcó, esto permite mucho más personalización más adelante.
En este punto, habrá errores triviales para corregir, o características que quizás desee crear o desactivar. La elección depende de usted.