<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fenix</title>
    <description>The latest articles on DEV Community by Fenix (@fenix).</description>
    <link>https://dev.to/fenix</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F586668%2Fabac8bb7-e7e3-4eba-a8c9-05c7aeb11a40.jpeg</url>
      <title>DEV Community: Fenix</title>
      <link>https://dev.to/fenix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fenix"/>
    <language>en</language>
    <item>
      <title>Proyecto 'Snikket' : Soberanía en forma de Chat, voz y video para todxs</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:41:30 +0000</pubDate>
      <link>https://dev.to/fenix/proyecto-snikket-soberania-en-forma-de-chat-voz-y-video-para-todxs-b1b</link>
      <guid>https://dev.to/fenix/proyecto-snikket-soberania-en-forma-de-chat-voz-y-video-para-todxs-b1b</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbkf6iq0p0fket6dgl47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbkf6iq0p0fket6dgl47.png" alt="Image description" width="279" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hace unas semanas, &lt;a href="https://blog.librebits.info/chat-voz-y-video-XMPP-autogestionado/" rel="noopener noreferrer"&gt;en un anterior blogpost, hablábamos de herramientas libres&lt;/a&gt; y abiertas para &lt;em&gt;Chat, voz y video&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;XMPP / Jabber : más allá del e-mail, volver a unir lo que nunca estuvo fragmentado, nuestras comunicaciones en tiempo real.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Continuamos así la serie de artículos entorno a esta madura herramienta de mensajería instantánea y la placentera sensación de autonomía y soberanía en las comunicaciones online. Ahora en pleno proceso de renovación y con un nuevo impulso. En parte gracias a Proyectos como &lt;em&gt;Snikket&lt;/em&gt; .&lt;/p&gt;

&lt;h2&gt;
  
  
  Participando de la fase Beta (test) del Proyecto Snikket
&lt;/h2&gt;

&lt;p&gt;En Febrero del año 2021 &lt;a href="https://video.fosdem.org/2021/D.rtc/products_vs_protocols.webm" rel="noopener noreferrer"&gt;Matt compartió las motivaciones del Proyecto Snikket en formato videoconferencia en los encuentros FOSDEM&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;« Products vs Protocols »&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Llevaba por título...&lt;/p&gt;

&lt;p&gt;Este apasionante proyecto comunitario llamado &lt;em&gt;Snikket&lt;/em&gt; (lanzada la fase Beta, de pruebas) en el que &lt;em&gt;Librebits&lt;/em&gt; está participando gestionando una de las 10 instancia/servidores disponibles. Por ahora adelantar que estamos queriendo poner en práctica el ‘State of the Art’ en comunicaciones XMPP. &lt;br&gt;
Nuestra primera experiencia, tras haber integrado ya anteriores soluciones con herramientas similares es que, efectivamente, se nota positivamente el énfasis en la llamada experiencia del usuario ( UX ): sencilla alta/suscripción al servicio,etc.. Haciéndolo todo mucho más fácil. De este modo, son herramientas que además de maduras, ya han logrado ser asequibles y manejables por el gran público, más allá de reductos de &lt;em&gt;geeks&lt;/em&gt;, por así decirlo.&lt;/p&gt;

&lt;p&gt;Quien quiera comprobarlo por si mismo/a , &lt;a href="https://librebits.snikket.chat/login" rel="noopener noreferrer"&gt;no tiene más que escribirnos para que le creemos una cuenta en nuestra instancia Snikket&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsnikket.org%2Fimages%2Fpixel_quite_black_portrait.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsnikket.org%2Fimages%2Fpixel_quite_black_portrait.png" title="Snikket" alt="Snikket" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seguiremos informando :-)&lt;/p&gt;

&lt;h2&gt;
  
  
  Si... ¿ Porqué Snikket (XMPP - Jabber) ?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Protocolos y arquitecturas abiertas
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" title="XMPP logo" alt="XMPPlogo" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Porque al contrario que la mayoría de protocolos de mensajería ( los usados por &lt;em&gt;Whatsapp&lt;/em&gt; , &lt;em&gt;Telegram&lt;/em&gt;, etc..), se define como estándar abierto y se basa en un enfoque de desarrollo y aplicación de arquitectura de sistemas abiertos, pudiéndo operar entre diferentes organizaciones y Servidores en la Web de forma sencilla. Es lo que conocemos como federación de un servicio en oposición a los llamados «walled gardens».&lt;br&gt;
¿Como el correo electrónico? ...pudiendo elegir Proveedor de Servicio/Servidor ( o montar el tuyo propio, como nosotrxs ya hacemos) de nuestra conveniencia.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nota: de hecho, la base de la tecnología de comunicaciones de &lt;em&gt;Whatsapp&lt;/em&gt; es XMPP. Lo cuentan mejor en &lt;a href="https://56k.es/fanta/xmpp-la-madre-de-whatsapp-la-alternativa-que-funciona" rel="noopener noreferrer"&gt;56k.es&lt;/a&gt;, de donde tomamos prestado el siguiente gráfico :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F56k.es%2Fwp-content%2Fuploads%2F2021%2F01%2Fxmpp_funxmpp-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F56k.es%2Fwp-content%2Fuploads%2F2021%2F01%2Fxmpp_funxmpp-1.png" title="XMPPvsWhatsapp" alt="XMPPvsWhatsapp" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bajo las apariencias de 'apertura' y respeto a la privacidad  últimamente ha proliferado el uso de &lt;em&gt;Telegram&lt;/em&gt; . Si investigamos más fondo, ... nos daremos cuenta de que &lt;em&gt;Telegram&lt;/em&gt; no es lo que pensábamos. No propociona la ansiada autonomía en nuestras redes libres. Pero eso lo cuentan mejor &lt;a href="https://elbinario.net/2015/03/07/telegram-no-es-libre-es-open-source/" rel="noopener noreferrer"&gt;lxs compañerxs de El Binario en este blogpost&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frje5to6dio2tt425vha3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frje5to6dio2tt425vha3.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿ Que es eso de la Soberanía tecnológica ?
&lt;/h3&gt;

&lt;p&gt;Hay  quien habla de Soberanía Alimentaria, en tanto en cuanto a la posibilidad de autoabastecerse y nutrirse sin necesidad de terceros.&lt;br&gt;
Así ejercemos nuestra soberanía tecnológica más allá de intereses de la grandes corporaciones online (las llamadas GAFAM) en las que, recordemos :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;si no pagas por un servicio&lt;br&gt;
¿tú eres el producto?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, y por último pero no por ello menos importante ... todas sus herramientas y aplicaciones se suelen publicar como software libre y de código fuente abierto, naturalmente, umh... por si acaso, como horizonte hacia el que caminar ¿ aspiramos a una sociedad (más) libre y autónoma ?.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Chat, voz y video XMPP autogestionado</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:38:16 +0000</pubDate>
      <link>https://dev.to/fenix/chat-voz-y-video-xmpp-autogestionado-1ppa</link>
      <guid>https://dev.to/fenix/chat-voz-y-video-xmpp-autogestionado-1ppa</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4awif7f0dotxjqmerif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4awif7f0dotxjqmerif.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  XMPP / Jabber : más allá del e-mail y de la mensajería de texto, nuestras comunicaciones en tiempo real.
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;¿ Porqué XMPP - Jabber ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" title="XMPP logo" alt="XMPPlogo" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como hemos compartido ya en artículos anteriores, porque al contrario que la mayoría de protocolos de mensajería ( los usados por &lt;em&gt;Whatsapp , Telegram, etc&lt;/em&gt;..), se define como estándar abierto y se basa en un enfoque de desarrollo y a aplicación de sistemas abiertos, pudiéndo operar entre organizaciones y Servidores en la Web de forma sencilla.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Mencionar que la popular herramienta de Videonferencia &lt;em&gt;Jitsi&lt;/em&gt; usa XMPP para la función chat.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  La XMPP Standards Foundation (XSF)
&lt;/h1&gt;

&lt;p&gt;Hace &lt;a href="https://xmpp.org/2017/08/easy-xmpp-the-challenges" rel="noopener noreferrer"&gt;unos meses, la XSF&lt;/a&gt; (que actúa como XMPP Standards Foundation ) hacia una llamada a la participación y a la acción para, colectivamente, superar &lt;a href="https://xmpp.org/2017/08/easy-xmpp-the-challenges/" rel="noopener noreferrer"&gt;las dificultades/mejoras de  UX, UI, complejidades varias para el usuario al suscribirse...&lt;/a&gt; , federar esfuerzos  recuperar la autonomía en nuestras comunicaciones de Mensajería Instantánea  Chat.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTA : actualización : el proyecto Snikket aspira a resolver las cuestiones de usabilidad UX / UI mencionadas . De hecho, hablamos &lt;a href="https://dev.to%20post_url%202021-06-01-Snikket-soberania-en-forma-de-chat-voz-y-video-para-todxs%20%20"&gt;de este prometedor proyecto en este otro blogpost dedicado &lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pues bien, la plataforma colaborativa y de sincronización / compartición de ficheros Nextcloud ahora ofrece la posibilidad de eso mismo: facilitar la experiencia del usuario (UX), lo que hasta ahora había sido nuestro el talón de Aquiles..., algo que epieza a quedar atrás &lt;a href="https://www.jsxc.org/managed.html" rel="noopener noreferrer"&gt;cliente chat - JSXC&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Mencionar a continuación, para a quien le pueda servir, algunos recursos entorno a esta tecnología :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Servidor Chat&lt;/li&gt;
&lt;li&gt;Clientes Chat 

&lt;ul&gt;
&lt;li&gt;para usar en el PC como aplicación&lt;/li&gt;
&lt;li&gt;para usar en tu navegador Web, cómodamente&lt;/li&gt;
&lt;li&gt;para el teléfono&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  'Hola Prosody XMPP'! - Server
&lt;/h2&gt;

&lt;p&gt;En nuestra experiencia, con un mínimo de conocimiento de gestión de servidores GNU + Linux resulta conveniente poner en marcha nuestro propio servidor Chat. De las soluciones disponibles optamos por la que nos parece la más sencilla,versátil  y popular: &lt;em&gt;Prosody&lt;/em&gt;  XMPP | Server' (hay quien usa p.ej.: &lt;em&gt;Ejabberd&lt;/em&gt; )&lt;/p&gt;

&lt;p&gt;Requiere de pocos recursos hardware (como si te apeteciera cocinarte tu propio selfhosting en una Rasberry/ Orange /Banana Pi  con batido de frutas supervitaminado)&lt;/p&gt;

&lt;p&gt;Sin más acá dos útiles recursosy guías para este viaje cibernético :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://prosody.im" rel="noopener noreferrer"&gt;Prosody XMPP Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://homebrewserver.club/configuring-a-modern-xmpp-server-es.html" rel="noopener noreferrer"&gt;Configurar un moderno servidor de mensajería instantánea XMPP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ahí tienes los entresijos claramente documentados, para que paso a paso puedas autogestionar tu servidor Chat, los DNS necesarios, certficados de cifrado SSL,  etc...&lt;/p&gt;

&lt;h2&gt;
  
  
  Clientes Chat XMPP
&lt;/h2&gt;

&lt;p&gt;Bien! Ahora, las aplicaciones cliente... para comunicarnos a través de nuestro nuevo servidor ya en marcha.&lt;/p&gt;

&lt;p&gt;Hay &lt;a href="https://wiki.ingobernable.net/doku.php?id=red-xmpp#nuestras_aplicaciones_cliente_xmpp" rel="noopener noreferrer"&gt; muchos disponibles&lt;/a&gt;, elegimos 3 tipos diferentes según su uso :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uno para el navegador Web (pudíendose embeber en otras aplicaciones como Drupal o Wordpress) - &lt;em&gt;Converse&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;para nuestro teléfono - &lt;em&gt;Conversations&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;el Bot, el simpático asistente que no podía faltar a la fiesta&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hola 'Conversations' - Cliente Chat App
&lt;/h3&gt;

&lt;p&gt;Ya en el zapatófono, &lt;a href="https://conversations.im" rel="noopener noreferrer"&gt;Conversations&lt;/a&gt;, muy amigable cliente para Android Linux ... .Con él no echaremos de menos otras aplicaciones que pudiéramos venir usando hasta ahora.&lt;/p&gt;

&lt;h3&gt;
  
  
  'Hola ConverseJS' !  - Cliente Chat JavaScript
&lt;/h3&gt;

&lt;p&gt;Bien! Ahora, los clientes... para comunicarnos a través de nu nuestro servidor&lt;br&gt;
Siempre según en nuestra experiencia, con un mínimo de conocimiento de gestión de servidores GNU + Linux resulta conveniente poner en marcha nuestro propio servidor Chat. De las soluciones disponibles optamos por la que nos parece la más sencilla,versátil  y popular: &lt;em&gt;Prosody&lt;/em&gt;  XMPP &lt;/p&gt;

&lt;h3&gt;
  
  
  'Hola Slixmpp' - Python chat bot
&lt;/h3&gt;

&lt;p&gt;Por si faltaba algo... en escena aparece el Bot. El simpático asistente dará la bienvenida a nuestros visitantes, servirá opciones de menú... y lo que se se pueda imaginar. &lt;a href="https://blog.louiz.org/slixmpp" rel="noopener noreferrer"&gt;Slixmpp se ha escrito en Python&lt;/a&gt;. He visto a algunos bailar ASCiiArt ,y hasta contar chistes.&lt;br&gt;
Es la base de algunos clientes tipo CLI o terminal/consola... que 'haberlos/haylos, como las meigas'.&lt;/p&gt;

&lt;h2&gt;
  
  
  Audio y Videoconferencia en XMPP / Jabber Audio ? Si.
&lt;/h2&gt;

&lt;p&gt;Agregar unas notas sobre las últimas funcionalidades incorporadas a estas poderosas herramientas de comunicación (ver guía en los Recursos, más abajo).&lt;br&gt;
En Librebits estamos usando Audio y Videoconferencia XMPP / Jabber para llamadas internacionales con nuestro clientes. En un primer prototipo, lo hacemos dentro de nuestra propia red privada virtual (VPN). La experiencia del usuario (UX), según ellos, es más que satistactoria : de calidad.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTA técnica: Para poder prescindir de la red VPN, nos faltaŕa incoporarar el servidor STUN (para gestión de los puertos de comunicaciones audiovisuales)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  XMPP / Jabber + Drupal
&lt;/h3&gt;

&lt;p&gt;En Librebits hemos integrado con éxito el &lt;a href="https://conversejs.org" rel="noopener noreferrer"&gt;cliente Converse&lt;/a&gt; dado que está escrito en JavaScript para funcionar desde tu navegador Web (pudiéndose embeber también Wordpress o tu JAMStack preferido, p.ej.) llamando sencillamente a un script.&lt;/p&gt;

&lt;h3&gt;
  
  
  XMPP / Jabber + Nextcloud
&lt;/h3&gt;

&lt;p&gt;Entre otras muchas iniciativas, nos ha llamado la atención JSXC. O dicho de otro modo, &lt;/p&gt;

&lt;p&gt;Sencillo cliente XMPP en JavaScript , que puede embeberse fácilmente en cualquier sitio Web, &lt;a href="https://github.com/jsxc/jsxc/wiki/Install-jsxc-(WordPress)" rel="noopener noreferrer"&gt;por ejemplo , en uno basado en Wordpress ... ¿ por qué no?&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Proyecto Snikket
&lt;/h3&gt;

&lt;p&gt;Hablaremos de este &lt;a href="https://snikket.org/" rel="noopener noreferrer"&gt;apasionante proyecto comunitario llamado Snikket&lt;/a&gt;  (en fase Beta, de pruebas) en el que Librebits está empezando a participar en detalle, más adelante. Por ahora adelantar que estamos queriendo poner en práctica el 'State of the Art' en comunicaciones XMPP.&lt;br&gt;
 Con énfasis en la llamada experiencia del usuario ( UX ): sencilla alta/suscripción al servicio,etc.. . Dado que, respetuoso con la privacidad, XMPP no usa un número de teléfono como identificativo sino que se basa en un abierto esquema de identifcativos similar al del los servicios de correo-e, por ej. &lt;em&gt;&lt;a href="mailto:nombre@librebits.info"&gt;nombre@librebits.info&lt;/a&gt;&lt;/em&gt; )&lt;br&gt;
 Vamos animarnos (lo posibilidad está abierta a cualquiera) a hacer hosting y ofrecer dichos servicios, en un futuro.&lt;/p&gt;

&lt;p&gt;Seguiremos informando de su evolución.&lt;/p&gt;

&lt;h2&gt;
  
  
  Epílogo
&lt;/h2&gt;

&lt;p&gt;Esperemos que resulten útiles la experiencia y recursos compartidos entorno a las comunicaciones XMPP / Jabber.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Decíamos ... más allá del e-mail, volver a unir lo que nunca estuvo fragmentado, nuestras comunicaciones en tiempo real&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Recursos :
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://prosody.im" rel="noopener noreferrer"&gt;Prosody server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://conversejs.org" rel="noopener noreferrer"&gt;ConverseJS&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://conversations.im" rel="noopener noreferrer"&gt;Conversations&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://homebrewserver.club/server-support-for-audio-video-calls.html" rel="noopener noreferrer"&gt;Audio y Videoconferencia en XMPP / Jabber&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Python Chat Bot :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.louiz.org/slixmpp" rel="noopener noreferrer"&gt;Slixmpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://sleekxmpp.com" rel="noopener noreferrer"&gt;Sleekxmpp&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Diagrama - Red XMPP con cliente &lt;em&gt;Converse&lt;/em&gt; JavaScript :&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="/assets/images/xmpp-arquitectura.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="/assets/images/xmpp-arquitectura.jpeg" title="Red XMPP" alt="XMPP"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Drupal CMS,Wordpress, PHP y federación</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:33:23 +0000</pubDate>
      <link>https://dev.to/fenix/drupal-cmswordpress-php-y-federacion-25pf</link>
      <guid>https://dev.to/fenix/drupal-cmswordpress-php-y-federacion-25pf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi7o50qkyt9x70t94dv0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi7o50qkyt9x70t94dv0.png" alt="Image description" width="800" height="770"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro.
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://fediverse.party" rel="noopener noreferrer"&gt;La federación&lt;/a&gt; se expande festivamente, como el universo. De ahí el nombre anglosajón : "federated+universe = fediverse ".&lt;br&gt;
 En la lengua de Cervantes lo solemos traducir como 'Fediverso' (Universo Federado) de redes. Por cierto, no es tan novedoso.&lt;br&gt;
De algún modo, el popular servicio de correo electrónico (e-mail) es una red descentralizada y federada. Bastan unos pocos protocolos de red/comunicaciones que sean 'claros y nítidos' para facilitar el entendimiento entre nodos/servidores/instancias de la red (de redes).&lt;/p&gt;

&lt;h1&gt;
  
  
  Drupal y el Fediverso
&lt;/h1&gt;

&lt;p&gt;En Librebits venimos trabajando desde hace años con  &lt;a href="https://www.drupal.org/" rel="noopener noreferrer"&gt;Drupal CMS&lt;/a&gt; (Content Management System). Que grata sorpresa, saber del siguiente 'maridaje' :&lt;/p&gt;

&lt;p&gt;&lt;a href="/assets/images/drupal9+ActivityPub.png" class="article-body-image-wrapper"&gt;&lt;img src="/assets/images/drupal9+ActivityPub.png" title="Drupal 9 CMS + Activitypub " alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El &lt;a href="https://www.drupal.org/project/activitypub" rel="noopener noreferrer"&gt;módulo software ActivityPub&lt;/a&gt; del gestor de contenidos escrito en lenguaje PHP .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Implementa el protocolo de federación de contenidos  ActivityPub  for your site. Se facilita así el acceso y seguimiento a contenido en instancias/nodos Mastodon (y Pleroma) así como otras  platformas federadas que soportan ActivityPub. Es posible interactuar/responder también ('Reply', 'Like', 'Announce') con más funcionalidades que están por llegar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Este módulo, nos cuentan desde la &lt;a href="https://www.drupal.org/project/activitypub" rel="noopener noreferrer"&gt;comunidad Drupal&lt;/a&gt;, ha sido testeado con las siguientes  platformas / servicios  federadas/os:/&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://joinmastodon.org/" rel="noopener noreferrer"&gt;Mastodon - Microblogging federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fediverse.party/en/pleroma" rel="noopener noreferrer"&gt;Pleroma - Microblogging federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fediverse.party/en/pixelfed" rel="noopener noreferrer"&gt;Pixelfed - Image Social sharing federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://write.as/" rel="noopener noreferrer"&gt;Write.as - Blogging Federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Wordpress y el Fediverso
&lt;/h1&gt;

&lt;p&gt;La popular herramienta de Blogging (luego evolucionada a CMS) Wordpress también disfruta de la ciberfiesta Fediversal.&lt;a href="https://wordpress.org/plugins/activitypub/" rel="noopener noreferrer"&gt;Como vemos acá&lt;/a&gt; la implementación del protocolo de federación crea los puentes para interactuar con servicios :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://joinmastodon.org/" rel="noopener noreferrer"&gt;Mastodon - Microblogging federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fediverse.party/en/pleroma" rel="noopener noreferrer"&gt;Pleroma - Microblogging federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://friendi.ca/" rel="noopener noreferrer"&gt;Friendica - red social descentralizada&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://hubzilla.org/" rel="noopener noreferrer"&gt;HubZilla&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fediverse.party/en/pixelfed" rel="noopener noreferrer"&gt;Pixelfed - Image Social sharing federado&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://socialhome.network/" rel="noopener noreferrer"&gt;SocialHome&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://misskey.io/" rel="noopener noreferrer"&gt;Misskey&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Señalando que el 'plugin' se encuentra en estado 'Beta' de desarrollo (aún por pulir).&lt;/p&gt;

&lt;p&gt;Anotado queda acá, a futuro, con los compañeros de la &lt;a href="https://communia.org/" rel="noopener noreferrer"&gt; cooperativa tecnológica 'Communia'&lt;/a&gt; hacer unas pruebas de federación de contenidos. &lt;/p&gt;

&lt;p&gt;El diagrama básicos para entender el funcionamiento de ActivityPub como protocolo de federación de contenidos y actividad en la Web ...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Factivitypub.rocks%2Fstatic%2Fimages%2FActivityPub-tutorial-image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Factivitypub.rocks%2Fstatic%2Fimages%2FActivityPub-tutorial-image.png" title="ActivityPub" alt="ActivityPub" width="761" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PD:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;saber &lt;a href="https://activitypub.rocks" rel="noopener noreferrer"&gt;más sobre ActivityPub como protocolo de federación de contenidos y actividad en la Web&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Drupal, composer y PHP</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:31:14 +0000</pubDate>
      <link>https://dev.to/fenix/drupal-composer-y-php-331h</link>
      <guid>https://dev.to/fenix/drupal-composer-y-php-331h</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7voa3fgixy4l6l6unic3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7voa3fgixy4l6l6unic3.jpeg" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;En el tránsito de su versión 7 a 8 la comunidad Drupal reescribió el 70% del código fuente. En ese titánico esfuerzo se adoptarón 'mejores prácticas' y se busco un cierta convergencia con la comunidad y las herramientas del lenguaje de programación PHP. En particular, la adopción de &lt;a href="https://symfony.com/" rel="noopener noreferrer"&gt;Symfony como framework&lt;/a&gt; subyacente y &lt;a href="https://twig.symfony.com/" rel="noopener noreferrer"&gt;Twig como motor de plantillas&lt;/a&gt; para el llamado 'frontend' (diseño, o 'Theme' en la jerga Drupal). Una de las derivadas es que la gestión de paquetes PHP se realiza mediante Composer. De ello hablaremos aquí hoy.&lt;/p&gt;

&lt;h1&gt;
  
  
  ¿Por qué Composer?
&lt;/h1&gt;

&lt;p&gt;Veamos porque no es suficiente con descargar los módulos Drupal como hacíamos antaño, y el porque de la necesidad de'otra herramienta'&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;los módulos contribuidos y temas (diseño) a menudo requieren de librerías de terceros instaladas via Composer.En la ausencia de Composer en el proyecto, necesitarías manejar estos de forma individual al descargar: cosa que es mejor evitar.&lt;/li&gt;
&lt;li&gt;algunos paquetes y módulos únicamente son compatibles con determinadas versiones de PHP y de Drupal. Es necesario identificar esos requisitos y gestionarlo.&lt;/li&gt;
&lt;li&gt;algunos  paquetes y módulos entran en conflicto con otros paquetes. Se requeriría que leyeras el fichero composer.json para gestionar ese aspecto.&lt;/li&gt;
&lt;li&gt;cuando actualizas  paquetes o una versión de PHP, necesitarías tener en cuenta y aplicar todo lo descrito anteriormente una y otra vez.&lt;/li&gt;
&lt;li&gt;por último, el uso de 'drush' ha sido 'deprecado' en favor de Composer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De ahí la clara necesidad del uso de un gestor de paquetes. Un buen punto de partida es la estupenda documentación en Drupal.org al respecto. Así pues instala Composer en tu computadora para&lt;br&gt;
que realize por tí todo ese minucioso trabajo.&lt;/p&gt;

&lt;p&gt;Hay disponible una plantilla Composer para proyectos Drupal, desda la que puedes clonar el proyecto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/drupal/recommended-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Es el punto de partida recomendado en este nuevo flujo de trabajo (workflow) en una instalación de Drupal 8.&lt;br&gt;
Asegurate antes de que dispones como base una versión de PHP compatible. Y ahora sí ejecuta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer create-project drupal/recommended-project:8.x-dev mi-dir --no-interaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;NOTA: para usar la recién liberada versión 9 del core  : 9.x-dev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ello copiará el drupal-project en un directorio de ejemplo mi-dir' , y descargará el núcleo (core) Drupal y algunos paquetes útiles. Este es el momento de acceder al directorio mencionado y ejecutar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd mi-dir
$ git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inicializando el repositorio de trabajo en local, para luego realizar el 'git commit' original del proyecto, si vas querer manejarlo con control de versiones y todas sus ventajas.&lt;/p&gt;

&lt;p&gt;Este puede ser un buen momento para echar un vistazo al fichero composer.json :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "drupal-composer/drupal-project",
    "description": "Project template for Drupal 8 projects with composer",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "authors": [
        {
            "name": "",
            "role": ""
        }
    ],
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],
    "require": {
        "php": "&amp;gt;=7.0.8",
        "composer/installers": "^1.2",
        "cweagans/composer-patches": "^1.6.5",
        "drupal/console": "^1.0.2",
        "drupal/core": "^8.8.0",
        "drupal/core-composer-scaffold": "^8.8.0",
        "drush/drush": "^9.7.1 | ^10.0.0",
        "vlucas/phpdotenv": "^4.0",
        "webflo/drupal-finder": "^1.0.0",
        "zaporylie/composer-drupal-optimizations": "^1.0"
    },
    "require-dev": {
        "drupal/core-dev": "^8.8.0"
    },
    "conflict": {
        "drupal/drupal": "*"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "sort-packages": true
    },
    "autoload": {
        "classmap": [
            "scripts/composer/ScriptHandler.php"
        ],
        "files": ["load.environment.php"]

    ... 
    ... 
       }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;contenido en el repositorio clonado.&lt;/p&gt;

&lt;p&gt;Observamos que se requiere&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    "require": {
        "php": "&amp;gt;=7.0.8",
..

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP versión 7 o superior, y el núcleo (core) Drupal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      "drupal/core": "^8.8.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este fichero sirve de "receta" para el proyecto, orquestando las versiones de los diferentes paquetes.&lt;/p&gt;

&lt;h1&gt;
  
  
  ¿ Como descargo módulos y themes Drupal?
&lt;/h1&gt;

&lt;p&gt;Superado el uso de 'drush dl' (habitual en Drupal 7) para obtener modulos contribuidos y Themes, hay que acostumbrarse al 'Composer workflow' y sacarle partido. &lt;br&gt;
La sintaxis para la selección requerida es diferente, y en la mayoría de casos conviene no realizar (git) commit de los ficheros descargados en tu repositorio. &lt;/p&gt;

&lt;p&gt;Para la mayoría de los casos basta con ejecutar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer require [vendor]/[packagename]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;para obtener el paquete deseado. La mayoría de  módulos contribuidos y Themes se alojan en un repositorio Composer dedicado, el cual es configurado por 'drupal-project' por defecto. Ello implica que podemos usar drupal como 'vendor' para descargar módulos Drupal y Themes que son mantenidos en drupal.org.&lt;/p&gt;

&lt;p&gt;Por ejemplo, si ahora quieres obtener el módulo Devel, puedes usar el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer require drupal/devel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para la mayoría de los casos, esto descargará la más reciente y estable versión del módulo Devel compatible con tu versiones de Drupal y  PHP en uso. &lt;br&gt;
Si usaste el repostoria 'drupal-project' mencionado, el módulo será descargado en la carpeta web/modules/contrib de forma estándar.&lt;/p&gt;

&lt;p&gt;Como vemos, esto nos proporciona un flujo de trabajo/workflow sólido desde el manejar nuestro proyecto. Para que el éxito del mismo tan sólo falta combinarlo con Git, el sistema de control de versiones software por excelencia.&lt;br&gt;
De eso (Drupal PHP + Composer + Git workflow )  hablaremos en futuros blogposts.&lt;/p&gt;

&lt;p&gt;Esperamos te resulten útiles estas prácticas tanto o más que a nosotros en Librebits.&lt;/p&gt;

&lt;p&gt;Have Fun | A disfrutar&lt;/p&gt;

&lt;p&gt;Fuentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lullabot   &lt;a href="https://www.lullabot.com/articles/drupal-8-composer-best-practices" rel="noopener noreferrer"&gt;https://www.lullabot.com/articles/drupal-8-composer-best-practices&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Drupal.org &lt;a href="https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies" rel="noopener noreferrer"&gt;https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Videostreaming, P2P y servidores federados</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:29:26 +0000</pubDate>
      <link>https://dev.to/fenix/videostreaming-p2p-y-servidores-federados-3e2n</link>
      <guid>https://dev.to/fenix/videostreaming-p2p-y-servidores-federados-3e2n</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;«la (re)evolución, no será televisada»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0eyvu0uggv8iju17vvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0eyvu0uggv8iju17vvt.png" alt="Image description" width="800" height="810"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como cuenta &lt;em&gt;Rikylinux (GNUxero)&lt;/em&gt;  &lt;a href="https://gnuxero.softlibre.com.ar/ya-tenemos-streaming-libre/" rel="noopener noreferrer"&gt;en su Blog&lt;/a&gt;: desde ya hace un tiempo &lt;em&gt;Framasoft&lt;/em&gt; viene contribuyendo en la creación de Software libre.&lt;br&gt;
Esta asociación de origen Francés y sin fines de lucro esta detrás de &lt;em&gt;Pertube&lt;/em&gt;. Ahora bien, ¿qué es &lt;em&gt;Peertube&lt;/em&gt; ? Según ellos mismos explican:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;PeerTube&lt;/em&gt; no es una plataforma, es un software.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cualquiera puede instalar este software en sus servidores y crear un «sitio web de PeerTube» (una instancia) donde los usuarios pueden ver y subir videos como alternativa a &lt;em&gt;YouTube&lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;A diferencia de servicios comerciales (privativos)   como  &lt;em&gt;YouTube&lt;/em&gt; , las instancias de PeerTube son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Libres: todo el mundo tiene derecho a utilizar el software &lt;em&gt;PeerTube&lt;/em&gt;, puede mirar «debajo del capó» para ver si el código está limpio, ¡incluso puede modificarlo a su gusto y compartirlo!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Federado: cada sitio de PeerTube puede sincronizarse con otro para mostrar sus vídeos sin alojarlos en el disco duro del servidor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Descentralizado: los vídeos utilizan transmisión de igual a igual (desde &lt;em&gt;PeerTube&lt;/em&gt; al usuario de Internet, pero también desde los usuarios de Internet a otros usuarios de Internet), para mejorar la fluidez.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por otro lado,  ... (allá en 2017) Eric en su blog escribió sobre &lt;em&gt;Peertube&lt;/em&gt; , a vueltas sobre ese (entonces) naciente proyecto de servicio de video online. Traemos acá algunos de esos apuntes:&lt;/p&gt;

&lt;p&gt;El autor original del proyecto, decía, conocido como  &lt;em&gt;Chocobozzz&lt;/em&gt; , describe PeerTube como:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Una plataforma de video streaming descentralizada usando directamente en el navegador P2P (BitTorrent) con WebTorrent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PeerTube implementó el protocolo de comunicaciones federadas &lt;em&gt;ActivityPub&lt;/em&gt; en su plataforma abriéndo así un mundo de posibilidades.&lt;br&gt;
Bienvenidos a la era de la federación (de videos, en este caso) de contenidos online .&lt;/p&gt;

&lt;p&gt;De forma explicativa, el como funcionan los componentes de la federación puede verse en este vídeo &lt;a href="https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d" rel="noopener noreferrer"&gt;, acá. Frama - Peertube (What is ?)&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«No podemos construir alternativas FOSS (Free and Open Source Software) a Youtube, Dailymotion, Vimeo con software centralizado. Una única organización no puede tener suficiente dinero para pagar el ancho de banda y el almacenamiento de video necesario en su  servidor.»&lt;/p&gt;

&lt;p&gt;«Así pues necesitamos de una red descentralizada (como &lt;em&gt;Diaspora&lt;/em&gt;, por ejemplo... o &lt;em&gt;Mastodon&lt;/em&gt;, &lt;em&gt;GNUSocial&lt;/em&gt;, &lt;em&gt;Pleroma&lt;/em&gt;... el Fediverso)». (&lt;a href="https://fediverse.party" rel="noopener noreferrer"&gt;https://fediverse.party&lt;/a&gt;). Pero tampoco sería suficiente, dado que si un video tuviera mucho éxito sobrecargando el servidor.&lt;/p&gt;

&lt;p&gt;«Es por este motivo que necesitamos usar el  protocol P2P (Peer-to-Peer - transmisión 'entre pares') para limitar la carga en  servidor y evitar fallos..» &lt;/p&gt;

&lt;p&gt;«Gracias a la tecnología  WebTorrent, podemos hacer P2P (ergo Bittorrent) en el navegador web actualmente.» — proyecto PeerTube Readme&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Framasoft&lt;/em&gt; viene anunciando desde hace tiempo que además que la aplicación iba a ofrecer la posibilidad de video  &lt;em&gt;streaming&lt;/em&gt; , de esa manera podemos transmitir en vivo. Esto a ocurrido con la versión 3 !&lt;br&gt;
Para mas información te invito &lt;a href="https://framablog.org/2021/01/07/peertube-v3-its-a-live-a-liiiiive/" rel="noopener noreferrer"&gt;a leer el Blog de Peertube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pues bien, (por ejemplo) en 2021 hace unos días, por ejemplo, hemos podido disfrutar de una sesión de (&lt;em&gt;live streaming&lt;/em&gt;) video en la que Rikylinux compartía su escritorio desde Argentina.&lt;/p&gt;

&lt;p&gt;En nuestros ámbito/círculos más cercanos, mencionar 2 innovadores proyectos ( nodos de video federado) en los que participamos : &lt;a href="https://fediverse.tv" rel="noopener noreferrer"&gt;FediverseTV&lt;/a&gt; (el pasado sábodo se presentó el equipo que hay detrás del poyecto)&lt;br&gt;
 y  &lt;a href="https://video.anartist.org" rel="noopener noreferrer"&gt;Anartist&lt;/a&gt;, a los que puedes unirte, sintonizando con su &lt;em&gt;ethos&lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;La televisión del futuro, ¿hecha presente? :-)&lt;/p&gt;

&lt;p&gt;Fuentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/we-distribute/peertube-decentralized-video-powered-by-activitypub-and-webtorrent-8aaa4c3749d7" rel="noopener noreferrer"&gt;Sean Tilley Blogpost en Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gnuxero.softlibre.com.ar/ya-tenemos-streaming-libre/" rel="noopener noreferrer"&gt;Rikylinux Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Frama &lt;a href="https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d" rel="noopener noreferrer"&gt;Blog - Peertube (What is ?)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Anuncio de &lt;a href="https://framablog.org/2021/01/07/peertube-v3-its-a-live-a-liiiiive/" rel="noopener noreferrer"&gt;Peertube v3 - Frama Blog&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Nextcloud, mantenimiento y Bash</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:26:29 +0000</pubDate>
      <link>https://dev.to/fenix/nextcloud-mantenimiento-y-bash-46h2</link>
      <guid>https://dev.to/fenix/nextcloud-mantenimiento-y-bash-46h2</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvm5o6f9kuq3rgebcu9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvm5o6f9kuq3rgebcu9t.png" alt="Image description" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;La solución &lt;a href="//nextcloud.com"&gt;Nextcloud&lt;/a&gt; es una potente herramienta - servidor de ficheros, agenda, contactos, trabajo colaborativo, videoconferencia ... (y mucho, muucho más ). Dadas las numerosas aplicaciones que puede ofrecer y de tan potente que es a veces resulta conveniente ir más allá de la interfaz Web (GUI) de administración en el navegador para, más allá del ratón, tomar las riendas al teclado. &lt;/p&gt;

&lt;p&gt;Ello permite explotar al máximo las posibilidades de tu servidor Nextcloud, así como ser más eficiente y productivo en su mantenimiento. En este blogpost daremos un paseo práctico introductorio por las posibilidades que ello nos ofrece. &lt;/p&gt;

&lt;p&gt;Para amantes de la terminal Bash ... ¿Y de la elegancia y comodidad en la ejecución?.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTA: a tener en cuenta que, dado que ejecutaremos la gestión desde el CLI como si fueramos el servidor Web, debemos usar el usuarix correspondiente al servidor (habitualmente Apache o Nginx )&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Ejecutar OCC: el CLI de Nextcloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  como usuarix  HTTP
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;occ&lt;/em&gt; es el  CLI de Nextcloud. La (auto)magia  de la terminal y Nextcloud.  Veamos la forma  necesaria de invocarla para poder usarla.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTA histórica : Nextcloud es un 'fork' / derivación de Owncloud (&amp;lt; &lt;em&gt;occ&lt;/em&gt; ) , realizado por los propios desarrolladores originales que quisieron fundar su propia empresa...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El usuario/grupo del servidor Web (HTTP) desde el que tenemos que ejecutar &lt;em&gt;occ&lt;/em&gt;  difiere según la distribución basada en el Linux Kernel correspondiente :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;HTTP user /  group | Debian/Ubuntu :  www-data.&lt;/p&gt;

&lt;p&gt;HTTP user / group | Fedora/CentOS :  apache.&lt;/p&gt;

&lt;p&gt;HTTP user /  group | Arch Linux          : http.&lt;/p&gt;

&lt;p&gt;HTTP user en openSUSE :  wwwrun /  HTTP group :  www.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La doble voltereta acá es ejecutar un comando bash como otro usuario del sistema, a la par que indicarle la ruta ($PATH) necesaria.&lt;br&gt;
Así pues, este nivel de detalle sería necesario para que la orden | Bash se ejecute correctamente y sin sorpresas :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo -u www-data /usr/bin/php  /var/www/nextcloud/occ 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;... donde indicamos tanto el usuario (Web server | Apache, en nuestro caso; podría ser Nginx, en el tuyo) como la ruta de PHP como la de &lt;em&gt;occ&lt;/em&gt; (el CLI Nextcloud propiamente dicho).&lt;/p&gt;

&lt;p&gt;O bien, sabiendo que &lt;em&gt;php&lt;/em&gt; está ya en la ruta ($PATH), bastaría con :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo -u www-data php  /var/www/nextcloud/occ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos facilitar la 'notación' creando un &lt;em&gt;alias&lt;/em&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias suwp='sudo -u www-data php'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;o mejor aún:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias suwpo='sudo -u www-data php /var/www/nextcloud/occ'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;de tal modo que bastaría con teclear&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;suwpo trashbin:cleanup --all-users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;en vez de&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;por ejemplo, si quisieramos 'vaciar la papelera' de archivos ya borrados. Resulta así ... ¿más cómodo no?&lt;/p&gt;

&lt;p&gt;... con tu servicio autoalojado Nextcloud soberano.&lt;/p&gt;

&lt;p&gt;Have Fun | A disfrutar :-)&lt;/p&gt;

&lt;p&gt;Fuente: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.nextcloud.com/server/18/admin_manual/configuration_server/occ_command.html" rel="noopener noreferrer"&gt;Documentación Nextcloud i&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.nextcloud.com/server/18/admin_manual/configuration_server/occ_command.html#command-line-installation-label" rel="noopener noreferrer"&gt;Documentación Nextcloud ii&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgit.adphi.net%2Fadphi%2Foccweb%2Fraw%2Fmaster%2Fappinfo%2Fscreenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgit.adphi.net%2Fadphi%2Foccweb%2Fraw%2Fmaster%2Fappinfo%2Fscreenshot.png" title="NextcloudCLI" alt="NextcloudCLI" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Chat XMPP, cifrado y GNU+ Linux</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:24:04 +0000</pubDate>
      <link>https://dev.to/fenix/chat-xmpp-cifrado-y-gnu-linux-58h3</link>
      <guid>https://dev.to/fenix/chat-xmpp-cifrado-y-gnu-linux-58h3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva4glbmoxongavu7qmnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva4glbmoxongavu7qmnd.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;A vueltas con el cifrado en nuestra mensajería instántanea, anotar en el bloc la receta para instalar lo necesario para que nuestro cliente chat de escritorio Pidgin pueda usar/disfrutar  de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;carbons (obtener copia de las conversaciones al cambiar de dispositivo de forma transparente en el uso - UX )&lt;br&gt;
&lt;a href="https://xmpp.org/extensions/xep-0280.html" rel="noopener noreferrer"&gt;XEP-0280&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OMEMO  (cifrado)&lt;br&gt;
&lt;a href="https://xmpp.org/extensions/xep-0384.html" rel="noopener noreferrer"&gt;XEP-0384&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;como aplicación cliente / chat en nuestro sistema operativo.&lt;/p&gt;

&lt;p&gt;En la familia Debian / Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; sudo apt install git cmake libpurple-dev libmxml-dev libxml2-dev libsqlite3-dev libgcrypt20-dev build-essential
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;como detallan en el repositorio Git &lt;a href="https://github.com/gkdr/lurch#linux" rel="noopener noreferrer"&gt;delProyecto&lt;/a&gt;  acá  (también cuentan como compilar el código fuente en cualquier distribución basada en el Linux Kernel).&lt;/p&gt;

&lt;p&gt;En openSUSE bastará con gestionar los paquetes necesarios a su vez :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo zypper install pidgin libpurple-plugin-lurch pidgin  libpurple-plugin-carbons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà. Con nuestra mensajería instántanea autónoma, federada y soberana ...&lt;/p&gt;

&lt;p&gt;Have Fun | A Disfrutar :-)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Chat, voz y video 4ALL</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:21:15 +0000</pubDate>
      <link>https://dev.to/fenix/chat-voz-y-video-4all-490d</link>
      <guid>https://dev.to/fenix/chat-voz-y-video-4all-490d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0r1a40othb4a8c7krjvp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0r1a40othb4a8c7krjvp.jpeg" alt="Image description" width="403" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  XMPP: el motor nuestras conversaciones chat.
&lt;/h1&gt;

&lt;p&gt;Iniciamos así una serie de artículos entorno a esta madura herramienta de mensajería instantánea y la placentera sensación de autonomía y soberanía en las comunicaciones online.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿ Porqué XMPP - Jabber ?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F9%2F95%2FXMPP_logo.svg%2F200px-XMPP_logo.svg.png" title="XMPP logo" alt="XMPPlogo" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Porque al contrario que la mayoría de protocolos de mensajería ( los usados por &lt;em&gt;Whatsapp&lt;/em&gt; , &lt;em&gt;Telegram&lt;/em&gt;, etc..), se define como estándar abierto y se basa en un enfoque de desarrollo y aplicación de arquitectura de sistemas abiertos, pudiéndo operar entre diferentes organizaciones y Servidores en la Web de forma sencilla. Es lo que conocemos como federación de un servicio en oposición a los llamados «walled gardens».&lt;br&gt;
¿Como el correo electrónico? ...pudiendo elegir Proveedor de Servicio/Servidor ( o montar el tuyo propio, como nosotrxs ya hacemos) de nuestra conveniencia.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nota: de hecho, la base de la tecnología de comunicaciones de &lt;em&gt;Whatsapp&lt;/em&gt; es XMPP. Lo cuentan mejor en &lt;a href="https://56k.es/fanta/xmpp-la-madre-de-whatsapp-la-alternativa-que-funciona" rel="noopener noreferrer"&gt;56k.es&lt;/a&gt;, de donde tomamos prestado el siguiente gráfico :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F56k.es%2Fwp-content%2Fuploads%2F2021%2F01%2Fxmpp_funxmpp-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F56k.es%2Fwp-content%2Fuploads%2F2021%2F01%2Fxmpp_funxmpp-1.png" title="XMPPvsWhatsapp" alt="XMPPvsWhatsapp" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bajo las apariencias de 'apertura' y respeto a la privacidad  últimamente ha proliferado el uso de &lt;em&gt;Telegram&lt;/em&gt; . Si investigamos más fondo, ... nos daremos cuenta de que &lt;em&gt;Telegram&lt;/em&gt; no es lo que pensábamos. No propociona la ansiada autonomía en nuestras redes libres. Pero eso lo cuentan mejor &lt;a href="https://elbinario.net/2015/03/07/telegram-no-es-libre-es-open-source/" rel="noopener noreferrer"&gt;lxs compañerxs de El Binario en este blogpost&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Voz y video XMPP
&lt;/h1&gt;

&lt;p&gt;Recientemente &lt;a href="https://blog.wirelessmoves.com/2020/05/xmpp-voice-and-video-calls-with-conversations-a-dream-come-true.html" rel="noopener noreferrer"&gt;se ha incorporado la funcionalidad de llamadas tanto de voz como de video&lt;/a&gt; (de lo que hablaremos también en más detalle) a &lt;a href="https://conversations.im" rel="noopener noreferrer"&gt;Conversations&lt;/a&gt; la aplicación para teléfono más popular.  En pocas palabras, &lt;em&gt;Jingle&lt;/em&gt; facilita establecer sesiones entre pares (P2P) y el uso del &lt;a href="https://xmpp.org/uses/webrtc.html" rel="noopener noreferrer"&gt;protocolo WebRTC para coordinar audi/video y mensajería de texto&lt;/a&gt;. El servidor XMPP requiere incorporar la funcionalidad llamada STUN / TURN para la correcta gestión de los puertos de las conexiones necesarias.&lt;/p&gt;

&lt;p&gt;Hace un tiempo, la XSF (que actúa como XMPP Standards Foundation ) hacia una llamada a la participación y a la acción para, colectivamente, superar las dificultades &lt;a href="https://xmpp.org/2017/08/easy-xmpp-the-challenges/" rel="noopener noreferrer"&gt;( UX, UI, complejidades varias para el usuario)&lt;/a&gt; , federar esfuerzos  recuperar la autonomía en nuestra mensajeríainstantánea - Chat. Parece que poco a poco se van superando los obstáculos, ¿y avanzamos a una creciente popularización del renovado/clásico Jabber / XMPP ?&lt;/p&gt;

&lt;p&gt;Como apunte, la popular plataforma de trabajo colaborativo (Groupware) y de sincronización / compartición de ficheros Nextcloud ahora ofrece la posibilidad de eso mismo: facilitar la experiencia del usuario (UX) en las comunicaciones instantáneas a la par que trabajamos cooperativamente online. Recientemente Nextcloud incorpora la posibilidad de federar sus comunicaciones entre distintos servidores, fluida y naturalmente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1m0di2mtse6pltse1nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1m0di2mtse6pltse1nq.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Soberanía tecnológica
&lt;/h2&gt;

&lt;p&gt;Así ejercemos nuestra soberanía tecnológica más allá de intereses de la grandes corporaciones online (las llamadas GAFAM) en las que, recordemos :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;si no pagas por un servicio&lt;br&gt;
¿tú eres el producto?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, y por último pero no por ello menos importante ... todas sus herramientas y aplicaciones se suelen publicar como software libre y de código fuente abierto, naturalmente.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ruby, Gems y Bundler</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:17:31 +0000</pubDate>
      <link>https://dev.to/fenix/ruby-gems-y-bundler-1lke</link>
      <guid>https://dev.to/fenix/ruby-gems-y-bundler-1lke</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlvoiwuvbswcw5r9euz1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlvoiwuvbswcw5r9euz1.jpeg" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;En el escenario del popular &lt;a href="https://jekyllrb.com" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt; ,  generador  (en los llamados JAMstack) 'Web estático' basado en Ruby:  se nos plantea en la práctica diaria la disyuntiva en su  ejecución - CLI . Recordar que Jekyll, no deja de ser una 'gema'  Ruby (gem).&lt;/p&gt;

&lt;h1&gt;
  
  
  Caso práctico
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jekyll build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle exec jekyll build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;¿?&lt;/p&gt;

&lt;h1&gt;
  
  
  Cuestión:  ¿que the diferencias  hay ? ¿ Pros and cons  de ejecutar  'jekyll build' vs 'bundle exec jekyll build' ?
&lt;/h1&gt;

&lt;p&gt;La única diferencia que habría entre&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;command option
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;y&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle exec command option
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;es que en el primer caso se estaría ejecutando un comando de forma 'global' disponible en tu computadora mientras que en el segundo se estaría invocando a &lt;em&gt;bundle&lt;/em&gt; quien leería el &lt;em&gt;Gemfile&lt;/em&gt; particular del proyecto en cuestión (en función del directorio de trabajo) y lo combina todo así  se haya declarado en la ejecución de la orden.&lt;/p&gt;

&lt;p&gt;De tal modo que si has actualizado la última versión de Jekyll (gem update jekyll) pero olvidaste actualizar el &lt;em&gt;Gemfile.lock&lt;/em&gt; usando &lt;em&gt;bundle update&lt;/em&gt; (que afecta a las gemas en uso en tu proyecto), el propio &lt;em&gt;bundle&lt;/em&gt; te alertará de que hay un desajuste en las versiones disponibles, disminuyendo el riesgo de que se pudiera ejecutar Jekyll con gemas de terceros que fueran incompatibles. Otro ejemplo, en el que el uso de &lt;em&gt;bundle&lt;/em&gt; es mandatorio, pero no relacionado con Jekyll directamente, es cuando se quiere testear una aplicación Ruby empaquetada como gema y ya instalada en la computadora, para evitar la necesidad de la repetición del proceso de desinstalación/instalación una y otra vez por cada ajuste/modificación, ejecutando &lt;em&gt;bundle exec&lt;/em&gt; en la carpeta del  proyecto en curso asegura que lo que se ejecuta es el proyecto modificado y no el aquel instalado en el ámbito de todo el sistema en la computadora.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bailando con diferentes versiones
&lt;/h2&gt;

&lt;p&gt;En otras palabras. &lt;em&gt;jekyll&lt;/em&gt; per se usa la gema del sistema (compartida por todxs lxs usuarixs).&lt;/p&gt;

&lt;p&gt;Digamos que actualizas  Jekyll 3.8 a  Jekyll 3.9, entonces todos los proyectos en el sistema con los que habitualmente usas Jekyll de forma 'global' operaran con la nueva versión. Algunos de los cambios introducidos podrían ser incompatibles. ¿Qué hacer si una parte de los proyectos usan la versión 'antigua' de Jekyll y tan sólo una parte puede trabajar de forma compatible con la nueva versión? Habría que ir actualizando gradualmente aquellos proyectos que muestran incompatibilidades hasta lograr hacerlos funcionar con la nueva versión.&lt;/p&gt;

&lt;p&gt;El uso de &lt;em&gt;bundle&lt;/em&gt; lo facilita, ya  que cada proyecto opera así con su propia versión de Jekyll.&lt;/p&gt;

&lt;p&gt;Puedes actualizar de la  v3.8 a la v 3.9 o revertir a la v3.7 en uno de los proyectos sin afectar a los otros.&lt;/p&gt;

&lt;p&gt;Puedes actualizar el proyecto a la v4.1 y despúes a posteriori a la v4.2 para luego revertir a la v4.1 sin  afectar a los demás proyectos existentes en el sistema.&lt;/p&gt;

&lt;p&gt;Se podría incurrir también en problemas de dependencias. Pongamos que uno de los proyectos usa &lt;em&gt;bundle&lt;/em&gt; para instalar un plugin pero no hace lo propio con Jekyll. Y el plugin requiere determinada versión de una gema  determinada. Pero el proyecto en cuestión desconoce la versión 'global' de Jekyll (en el sistema) y el hecho de que requiere una versión anterior de la gema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus :
&lt;/h2&gt;

&lt;p&gt;Es cómodo en este escenario el uso de  (Bash)  &lt;em&gt;alias&lt;/em&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias jek="bundle exec jekyll"

jek serve --trace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jekyll ya incorpora los &lt;em&gt;alias&lt;/em&gt; , de hecho :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jekyll b  # ie build
jekyll s  # ie serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Véase&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jekyll --help*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A quien gusta de uso de un Makefile. Funciona tanto en Mac como en GNU Linux como también en Windows instalando la utilidad GNU Make.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s serve:
  bundle exec jekyll serve --trace --livereload
make s
# serving jekyll site...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y acá una receta &lt;a href="https://github.com/MichaelCurrin/static-sites-generator-resources/blob/master/Jekyll/setup_and_run.md#b-project-with-a-gemfile" rel="noopener noreferrer"&gt;mucho más completa , a-la @MichaelCurrin&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fuentes :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Foro Jekyll :  &lt;a href="https://talk.jekyllrb.com/t/jekyll-build-vs-bundle-exec-jekyll-build/5503/6" rel="noopener noreferrer"&gt;@MichaelCurrin dixit en&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Python,APIs y CLIs</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:15:03 +0000</pubDate>
      <link>https://dev.to/fenix/pythonapis-y-clis-gaa</link>
      <guid>https://dev.to/fenix/pythonapis-y-clis-gaa</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F746xkagpjlr2gy17ikvn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F746xkagpjlr2gy17ikvn.jpg" alt="Image description" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Resulta que nuestro proveedor habitual de 'servicio de nombres en Internet'  y Hosting ofrece (como la mayoría, entre los de calidad) una herramienta de consola o terminal. Tipo línea de comandos ( CLI - Command Line Interface )&lt;/p&gt;

&lt;p&gt;Pues bien, anotamos acá las notas de instalación de dicho CLI, pues la &lt;a href="https://github.com/gandi/gandi.cli" rel="noopener noreferrer"&gt;documentación oficial contiene&lt;/a&gt; una errata (que nos ha hecho dar más de unas cuantas vueltas en ocasiones... ). Sirva esta nota técnica para recordatorio futuro.&lt;/p&gt;

&lt;p&gt;Una vez satisfechas las dependencias necesarias, en nuestro sistema operativo ( GNU + Linux ) :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 2.7/3.4/3.5/3.6/3.7&lt;/li&gt;
&lt;li&gt;openssl&lt;/li&gt;
&lt;li&gt;openssh&lt;/li&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Además de el entorno Python &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pip&lt;/li&gt;
&lt;li&gt;virtualenv&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simplemente realizamos :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ virtualenv /mi/directorio/gandi.cli
$ source /mi/directorio/gandi.cli/bin/activate
$ cd /mi/directorio/gandi.cli           // &amp;lt;-- esta es la errata \!/ pues la doc oficial omite este paso --
$ pip install gandi.cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ gandi 
Usage: gandi [OPTIONS] COMMAND [ARGS]...

  Gandi command line utility.

  All CLI commands have a documented help

  $ gandi &amp;lt;command&amp;gt; --help

Options:
  -v         Enable or disable verbose mode. Use multiple time for
             higher level of verbosity: -v, -vv

  --version  Display version.
  --help     Show this message and exit.

Commands:
  account info
  api
  certificate change-dcv
  certificate create
  certificate delete
  certificate export
  certificate follow
  certificate info
  certificate list
  certificate packages
  certificate plans
  certificate resend-dcv
  certificate update
  certstore create
  certstore delete
  certstore info
  certstore list
  config delete
  config edit
  config get
  config list
  config set
  contact create
  datacenters
  deploy
  disk attach
  disk create
  disk delete
  disk detach
  disk info
  disk list
  disk migrate
  disk rollback
  disk snapshot
  disk update
  dns create
  dns delete
  dns domain.list
  dns keys create
  dns keys delete
  dns keys info
  dns keys list
  dns keys recover
  dns list
  dns update
  dnssec create
  dnssec delete
  dnssec list
  docker
  domain create
  domain info
  domain list
  domain renew
  forward create
  forward delete
  forward list
  forward update
  help
  ip attach
  ip create
  ip delete
  ip detach
  ip info
  ip list
  ip update
  mail create
  mail delete
  mail info
  mail list
  mail purge
  mail update
  oper info
  oper list
  paas attach
  paas clone
  paas console
  paas create
  paas delete
  paas info
  paas list
  paas restart
  paas types
  paas update
  record create
  record delete
  record list
  record update
  setup
  snapshotprofile info
  snapshotprofile list
  sshkey create
  sshkey delete
  sshkey info
  sshkey list
  status
  vhost create
  vhost delete
  vhost info
  vhost list
  vhost update
  vlan create
  vlan delete
  vlan info
  vlan list
  vlan update
  vm console
  vm create
  vm delete
  vm images
  vm info
  vm kernels
  vm list
  vm migrate
  vm reboot
  vm ssh
  vm start
  vm stop
  vm update
 ...

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;nos permite ahora administrar cómodamente nuestros recursos (DNS, SSLs, HW --- máquinas privada virtuales, VPS y demás ) cómodadmente, como más nos gusta : desde la consola/terminal - Ba$h de nuestro sistema operativo a través de su API y el CLI hecho en Python.&lt;/p&gt;

&lt;p&gt;En Internet, más y más ... todo es una API ?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Debian, Devuan y forks GNU+Linux</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:12:16 +0000</pubDate>
      <link>https://dev.to/fenix/debian-devuan-y-forks-gnulinux-a0d</link>
      <guid>https://dev.to/fenix/debian-devuan-y-forks-gnulinux-a0d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvj5n2ap1m6lloc7h5j0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvj5n2ap1m6lloc7h5j0i.png" alt="Image description" width="528" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Antes de migrar de una a otra, técnicamente... ¿ que diferencia hay entre ambas distribuciones GNU+Linux (Debian vs Devuan) ? Ninguna. Una. Systemd . ( Acá nos cuentan como &lt;a href="https://blog.desdelinux.net/devuan-habemus-fork/" rel="noopener noreferrer"&gt;nace el fork &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En cada sistema GNU+Linux existe un proceso que el Kernel arranca en primera instancia, antes que todos los demás procesos. Es el proceso 'padre' de todos aquellos procesos que a su vez no tienen relación parental con otros procesos. Dicho proceso principal es conocido como pid1. Systemd es un pid1 recientemente desarrollado en las cocinas de la megacorporación Red Hat Linux y que progresivamente ha sido adoptado por una mayoría de distribuciones de software(basadas en el Kernel) Linux. No sin antes haber desatado encendidos debates tecnopolíticos.&lt;/p&gt;

&lt;p&gt;¿ Manos a la obra ?&lt;/p&gt;

&lt;h1&gt;
  
  
  Manos a la obra
&lt;/h1&gt;

&lt;p&gt;Vamos a describir la receta de como realizar la migración a Devuan ASCII desde Debian Jessie o Stretch.&lt;br&gt;
Actualmente la migración no es directa si&lt;a href="https://devuan.org/os/documentation/dev1fanboy/migrate-to-ascii" rel="noopener noreferrer"&gt;usas GNOME o network manager debido a algunos paquetes retenidos,&lt;br&gt;
y cada migración respectiva tiene sus matices propios&lt;/a&gt;, pero esta receta debería funcionar, más allá de las&lt;br&gt;
 peculiaridades de ambos casos.&lt;/p&gt;

&lt;p&gt;Si hacemos un listado de los procesos que están corriendo en este momento en el servidor (Debian 9), observamos que &lt;br&gt;
entre ellos se encuentra systemd.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian$ top
top - 14:39:12 up 25 days, 20:30,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 194 total,   1 running, 193 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  9.0 sy,  0.0 ni, 88.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   499072 total,    53452 free,   123600 used,   322020 buff/cache
KiB Swap:   370684 total,   339464 free,    31220 used.   323228 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                
27921 admin     20   0   44920   3452   2760 R  1.0  0.7   0:00.27 top                                                    
    1 root      20   0  204692   5756   4320 S  0.7  1.2   0:34.67 systemd                                                
  418 root      20   0   46484   3332   3020 S  0.3  0.7   0:07.79 systemd-logind                                         
  877 mysql     20   0  451316  47672   7292 S  0.3  9.6  37:04.65 mysqld                                                 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devuan usa sysvinit por defecto. Así que, instalemoslo :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get install sysvinit-core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se requiere un reinicio para realizar el cambio a sysvinit como proceso principal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora podemos eliminar systemd sin más.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get purge systemd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si ejecutamos de nuevo el comando para visualizar los procesos en ejecución en el servidor...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# top
Tasks: 191 total,   1 running, 190 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 98.3 id,  1.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   500096 total,   144792 free,   131692 used,   223612 buff/cache
KiB Swap:   370684 total,   370684 free,        0 used.   346304 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                
 2477 admin     20   0   44920   3484   2788 R  1.0  0.7   0:00.21 top                                                    
 2467 admin     20   0   69952   3704   2892 S  0.3  0.7   0:00.05 sshd                                                   
    1 root      20   0   15820   1852   1684 S  0.0  0.4   0:01.92 init                                                   
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;... podemos comprobar que sysvinit a sustituido a systemd como pid1.&lt;/p&gt;

&lt;p&gt;Editamos el fichero sources.list de tal modo que podamos cambiar a los repositorios &lt;br&gt;
de paquetes software  de Devuan. &lt;/p&gt;

&lt;p&gt;root@debian:~# editor /etc/apt/sources.list&lt;/p&gt;

&lt;p&gt;Añadimos lo servidores espejo (mirrors) con el nombre clave ascii y comentamos cualquier otra línea del fichero.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deb http://deb.devuan.org/merged ascii main
deb http://deb.devuan.org/merged ascii-updates main
deb http://deb.devuan.org/merged ascii-security main
deb http://deb.devuan.org/merged ascii-backports main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Actualizamos el índice de paquetes de tal modo que podamos instalar el archivo con el anillo de llaves (keyring)&lt;br&gt;
de Devuan .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instalamos el anillo de llaves (keyring) de Devuan para que con él  puedan ser autenticados los paquetes de ahora en adelante.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get install devuan-keyring --allow-unauthenticated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Actualizamos el índice de paquetes de nuevo para que sean autenticados con el anillo de llaves (keyring)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finalmente podemos migrar a Devuan.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@debian:~# apt-get dist-upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Tareas una vez realizada la migración
&lt;/h1&gt;

&lt;p&gt;Ahora, los componentes de systemd deberían ser eliminados del sistema.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@devuan:~# apt-get purge systemd-shim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si no usamos D-Bus o Xorg deberíamos poder eliminar libsystemd0.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@devuan:~# apt-get purge libsystemd0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Purgamos cualquier paquete huérfano que haya quedado de la instalación Debian anterior.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@devuan:~# apt-get autoremove --purge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este es un buen momento para limpiar paquetes que hayan quedado obsoletos de nuestro sistema Debian.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@devuan:~# apt-get autoclean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A disfrutar de Devuan GNU+Linux y la llamada &lt;strong&gt;initFreedom&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;PD : Extra 's &lt;/p&gt;

&lt;p&gt;&lt;a href="//https//blog.desdelinux.net/debian-devuan-rivalidad-complementariedad-dilema/"&gt;Debian vs Devuan ¿rivalidad/complementariedad/dilema?&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Learn #ruby + http ( and Rails) - I</title>
      <dc:creator>Fenix</dc:creator>
      <pubDate>Tue, 06 Apr 2021 10:27:46 +0000</pubDate>
      <link>https://dev.to/fenix/learn-ruby-http-and-rails-i-38p5</link>
      <guid>https://dev.to/fenix/learn-ruby-http-and-rails-i-38p5</guid>
      <description>&lt;p&gt;Learn #ruby ( and Rails)  &lt;a href="https://shopify.engineering/building-web-app-ruby-rails" rel="noopener noreferrer"&gt;with the Shopify Engineering team&lt;/a&gt; ,&lt;br&gt;
enjoy :-)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Code snippets available on gists !&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just sharing a couple of screenshots... milestones in my journey to.&lt;/p&gt;

&lt;h1&gt;
  
  
  sockets
&lt;/h1&gt;

&lt;h1&gt;
  
  
  dev
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ruby
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
