Desarrollar
Hable siempre sobre las características que desea desarrollar al crear/encontrar y comentar la cuestión que aborda su problema antes de empezar a trabajar en él, e informe a la comunidad que comienza a codificar reclamando el problema.
Un Pull Request se debe solicitar en la rama main
.
Hasta marzo de 2023, las contribuciones se hacían en la rama develop
. Esto
ya es obsoleto.
Requisito previo para construir este plugin
Es muy recomendable el familiarizarse con los siguientes conceptos:
- Git
- NodeJS
- NPM
- TypeScript
Para generar el plugin, debe tener los siguientes paquetes:
git
npm
(>=8.x)nodejs
(>=14.x)build-essential
coreutils
wget
reuse
Tenga en cuenta que este plugin necesita una AppImage para el servidor
Prosody XMPP. Esa AppImage la proporciona el proyecto paralelo Prosody
AppImage. El script
build-prosody.sh
descarga los binarios adjuntos de ese repositorio remoto
y verifica que sus checksum sha256 sean correctos.
Desarrollar
Clona el repositorio, genera el plugin y crea tu rama de características:
# Clona el repositorio. No olvides el --recursive para clonar submódulos.
git clone https://github.com/JohnXLivingston/peertube-plugin-livechat.git --recursive
cd peertube-plugin-livechat
# Instala las dependencias de NPM y construye el módulo por primera vez:
npm install
# Construir el plugin después de una modificación:
npm run build
# Si tienes un fork del repositorio, añádelo como remoto (ejemplo):
git remote add me git@github.com:MY_GITHUB_ACCOUNT/peertube-plugin-livechat.git
# Crea una rama local para tus desarrollos, haz checkout para ello (ejemplo):
git checkout mi_desarrollo # Nota: si hay una incidencia asociada, usa fix_1234 como nombre de tu rama (donde 1234 es el número de la incidencia)
# Para enviar tus modificaciones, haz un push de tu rama a tu repositorio (ejemplo):
git push --set-upstream me mi_desarrollo
# Dirijete a tu repositorio github con tu navegador web para abrir una solicitud de incorporación de cambios Pull Request (ver instrucciones adicionales más abajo)
Una vez que esté listo para mostrar su código y desea solicitar comentarios, envíe un borrador de solicitud de incorporación de cambios. Una vez que esté listo para una revisión de código antes de la fusión, envíe una solicitud de incorporación de cambios. En cualquier caso, vincule su PR a los problemas que resuelve utilizando la sintaxis de GitHub: “fixes #issue_number”.
El código front-end se sitúa en el directorio client
, el back-end en
server
. Hay código compartido en el directorio shared
.
Para obtener instrucciones generales (desarrollo de plugins, generación, instalación, …), consulte la página Peertube documentation.
Puede generar el plugin con características adicionales de depuración simplemente usando:
NODE_ENV=dev npm run build
This plugin is REUSE compliant: it uses SPDX
headers to identify licensing information of its source code. More
information on the REUSE website. You can use
the reuse command
line tool to help you update headers. The npm run lint
command will use
the reuse
command to check compliance. Don’t forget to add your copyright
information in SPDX headers when you modify some code.
ESBuild vs Typescript
Este plugin utiliza ESBuild para la generación de código frontend, al igual
que el plugin oficial peertube-plugin-quickstart
. ESBuild puede manejar
TypeScript, pero no verifica los tipos (ver documentación de
ESBuild). Por ello
primero compilamos TypeScript con la opción -noEmit
, sólo para la
verificación de los tipos (check:client:ts
en el fichero package.json).
Luego, si todo está bien, ejecutamos ESBuild para generar el javascript
compilado.
Modo depuración
Hay un modo de depuración para este plugin, que acorta ciertos retrasos. Por ejemplo, algunos logs rotarán cada dos minutos, en lugar de una vez al día. Esto permite probar más fácilmente ciertas acciones, para las que se podría tomar horas o días de espera.
Para habilitar este modo, solo tiene que crear el archivo
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/debug_mode
(reemplazando /var/www/peertube/storage/
por la ruta correcta de su
instalación).
La simple existencia de este archivo es suficiente para activar el modo de depuración. Para asegurarte de que se toma en cuenta, puedes reiniciar tu instancia de Peertube.
Este archivo puede contener JSON para habilitar opciones más avanzadas. Para
tener una lista de los parámetros existentes, consulte
server/lib/debug.ts
. Reinicie Peertube después de cada modificación de su
contenido.
No habilites este modo en un servidor de producción, ni en un servidor público. Esto podría ocasionar problemas de seguridad.
Reiniciar Prosody
Cuando el modo de depuración está activado, puede reiniciar Prosody
utilizando esta llamada a la API:
http://your_instance.tld/plugins/livechat/router/api/restart_prosody
.
Esta llamada no necesita autenticación. La puede hacer desde la linea de
comandos, usando por ejemplo curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody
.
Depurador de Prosody
Es posible conectar la AppImage Prosody a un depurador remoto usando [MobDebug]https://luarocks.org/modules/paulclinger/mobdebug).
Para hacerlo, debe configurar MobDebug en un directorio al que pueda acceder
el usuario peertube
. Luego, agrega esto en el archivo debub_mode
:
{
"debug_prosody": {
"debugger_path": "/the_path_to_mobdebug/src",
"host": "localhost",
"port": "8172"
}
}
host
y port
son opcionales. debugger_path
debe apuntar a la carpeta
donde se encuentra el archivo MobDebug
.lua
.
Reiniciar Peertube.
Inicie su servidor de depuración.
Para que Prosody se conecte al depurador, llame a la API
http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Esta llamada no necesita ninguna autenticación. Se puede hacer desde una
línea de comandos, por ejemplo con curl http://your_instance.tld/plugins/livechat/router/api/restart_prosody?debugger=true
.
Incluso puede configurar su servidor de depuración para iniciar esta
solicitud automáticamente.
Prosody se reiniciará, conectándose al depurador.
Entorno de desarrollo rápido con Docker
Hay un tutorial, en francés, en el foro de Peertube que explica cómo construir rápidamente un entorno de desarrollo utilizando Docker.
Se creó un repositorio sobre ello, consulte pt-plugin-dev.
Nota: por una razón desconocida, Prosody no puede resolver la dirección DNS
de los contenedores cuando se utiliza la biblioteca lua-unbound. Hay un
hack en el plugin para resolverlo: simplemente crea un archivo
/data/plugins/data/peertube-plugin-livechat/no_lua_unbound
en tus
docker-volumes, luego reinicia los contenedores.
Reconstruir e instalar rápidamente el plugin
Cuando hace un cambio, no debe siempre reconstruir el proyecto completo, y
reinstalar el plugin en su entorno de desarrollo. Puede solo construir la
parte modificada( ejemplo, si solo has modificado los ficheros del cliente:
npm run build:client
). Verifica el fichero package.json
para los
scripts de construcción disponibles.
Cuando el plugin ya esta instalado en su instancia de desarrollo, y no ha cambiado cualquier dependencia, puede instalar rápidamente su trabajo siguiendo estas etapas:
- reconstruir las partes necesarias del plugin, (cliente, estilos, …),
- sobrescribir el contenido de
data/plugins/node_modules/peertube-plugin-livechat/dist/
de su instancia de desarrollo con el contenido del directoriodist
, - change recursively
plugins/node_modules/peertube-plugin-livechat/dist/
files owner to yourpeertube
user, - restart your instance.
Pruebas de rendimiento
El repositorio livechat-perf-test contiene algunas herramientas para realizar pruebas de rendimiento. Se puede utilizar para evaluar mejoras de código, o encontrar cuellos de botella.