El proyecto Pankosmia

Tabla de contenidos

Filosofía

Pankosmia comenzó con una conversación sobre el principio First the monkey. En resumen, si tu proyecto consiste en que un mono recite Shakespeare sobre un pedestal, no te concentres en el pedestal. En otras palabras, aborda primero lo difícil. Para nosotros, dos de las partes difíciles eran el soporte de Graphite y garantizar una experiencia offline-first, ya que no hacerlo podría poner a personas en peligro.

Algunos corolarios de “First the Monkey” para nosotros son:

  • centrarse en los problemas difíciles y no resueltos
  • la solución funcional pero tosca que podemos construir y entregar es mejor que la solución bonita que no podemos construir ni entregar, y que la interfaz bonita que podemos entregar pero que no hace lo correcto internamente
  • pulir cosas que ya sabemos pulir rara vez es urgente
  • los usuarios necesitan desarrolladores contentos porque los desarrolladores construyen los sistemas que los usuarios necesitan

Características del proyecto

  • código abierto (pero los productos de terceros pueden incluir clientes de código cerrado)
  • radicalmente offline-first
  • compatibilidad con fuentes habilitadas para Graphite
  • construido en torno a Scripture Burrito para todo el contenido
  • múltiples productos “white app” que pueden ser personalizados y mantenidos por diferentes organizaciones y desarrollados para satisfacer diferentes necesidades de los usuarios
  • múltiples clientes por producto, incluyendo clientes estándar para la funcionalidad principal

Arquitectura

Los productos se distribuyen como una aplicación Electronite, es decir, Electron con soporte añadido para fuentes habilitadas para Graphite. Un producto típicamente incluye:

  • un servidor HTTP localhost, escrito en Rust, que gestiona
    • el acceso a los burritos locales
    • las opciones de idioma y fuente
    • el acceso a los servidores burrito (cuando Internet está habilitado)
    • el estado compartido de la aplicación entre los clientes
  • múltiples clientes, servidos como HTML/CSS/Javascript compilado:
    • los clientes principales usan React y MUI, el uso de otros frameworks es posible
  • bibliotecas Node principales para simplificar la creación de nuevos clientes
  • una amplia cadena de herramientas de build en línea para múltiples sistemas operativos