Table of Contents

Icedove-UXP

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.

Información de la aplicación

Notas de portabilidad

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.

Obtenga la fuente y configure el entorno de compilación

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.

Archivos perdidos

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.

Archivos eliminados

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.

Corrección de cambios en la API

En este punto, su aplicación debería estar compilando correctamente, y puede iniciarla con “./mozilla/mach run”, pero aún quedan algunos errores.

Poner en orden el diseño

Haciéndolo tuyo

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.