Hub de Libros
Un artículo de Rafa G. Blanes
Desde hace unas semanas ya lancé oficialmente un proyecto en el que he trabajado con mucha ilusión y que en algunos aspectos ha sido todo un reto técnico. Toca aquí más hablar de estas cuestiones técnicas que del proyecto en sí. Pero antes, un poco de historia personal...
En 2014 publiqué mi primer libro (El Libro Negro del Programador) y desde entonces no he parado de tener siempre un proyecto literario en marcha, de tipo técnico, novela o relatos cortos. ¿El resultado? Seis libros, cuatro relacionados con el desarrollo de software profesional y dos novelas (éstas bajo el seudónimo de G. Blanes), perto también conocer con detalle todo lo relacionado con la publicación independiente (o indie) y hasta considerar mi trabajo como escritor como un área más de mi profesión.
Para los que aún no lo sepan, ya no hace falta que una editorial "de toda la vida" te elija para que puedas publicar tu libro, y mucho menos venderlo en cualquier parte del mundo. Internet ha permitido explorar miles de nuevos modelos de negocio y el mundo editorial no puede quedarse al margen de ello. Esto es, en cierto modo, se ha democratizado la posibilidad de publicar (ya no se necesita el permiso de nadie para hacerlo).
Me sorprende (y digo esto a modo de reflexión personal), esa extraña áurea que rodea la imagen de un "escritor", y que algunos se sientan bendecidos y pontificados por una mano mágica que los diferencia del resto de los mortales, algo que no ocurre en otras profesiones. Es cierto que siempre habrá buenos pintores y malos, buenos programadores y peores, y por lo tanto, también excelentes escritores que ganan El Nobel y muchos otros aficionados. Sin embargo, hay espacio para todo el mundo que tenga inquietudes creativas, en cualquier área. No en vano, cuántos artistas consagrados hoy en día fueron rechazados en su época, como pareciendo que hace falta morir para que valoren tu trabajo...
Autores cuyas obras nunca habrían visto la luz por no encajar quizá en los intereses comerciales o de nicho de las editoriales tradicionales, pueden ahora dar a conocer su trabajo gracias a la tecnología. Otros, ya consagrados, se pasan a la publicación independiente porque genera más libertad y mayores royalties, qué duda cabe.
No hablo solo de autores de "literatura", sino de cualquier tipo y género: de desarrollo personal, técnicos, etc. Es más, me atrevo a decir que en nuestra profesión, se echa en falta más y mejor literatura técnica en castellano, quizá porque muchos desarrolladores no exploran ese camino.
No me gusta la expresión publicación independiente, que es tanto como decir, si existiera alguna similitud con otras actividades, escultor independiente, pintor independiente o hasta programador independiente. Suena raro, ¿verdad? ¿Acaso hay que etiquetar de algún modo el hecho de que tú seas el responsable de tu publicación a diferencia de que exista cierta entidad que te "da permiso" para dar a conocer tu trabajo?
Si bien hace diez años quien no conseguía que le publicaran terminaba "autopublicándose", y el término "independiente" se asociaba más a aquellos materiales que no encajaban en las tendencias más clásicas y comerciales de las editoriales, hoy día todo esto ha cambiado radicalmente.
Es más, hoy día la tendencia comienza a ser ésta, incluso autores que vienen "del otro lado", como Matilde Asensi y Raimón Samsó, pasan parte o todo su trabajo a este modelo. ¿Por qué? Por la misma razón por la que Airbnb le permite a los dueños de apartamentos rentabilizarlos mejor o aquel proveedor de suministros decide abrir una tienda en Amazon y llegar a más clientes: porque la tecnología lo permite a un coste mínimo y de escala y porque así tienes el control total de tu activo (sean productos o servicios).
¿Y qué pasa con la labor insustituible que es necesaria para generar un libro de calidad? Estoy hablando de revisar, corregir, diseñar la portada, maquetar el contenido, la promoción, el markenting, etc. Todo eso, qué duda cabe, un trabajo duro que hacen las editoriales, ahora se puede subcontratar, si quieres, a quien quieras y cuando quieras. De esto hablaremos un poco más adelante.
Esto es, publicar de forma independiente consiste básicamente en que tú haces tu trabajo de escribir, pero también te encargas de obtener la portada, maquetar tu libro, revisarlo hasta la saciedad y publicarlo directamente en plataformas como Amazon, Google Play, Kobo, etc. O bien le encargas a otros profesionales ese trabajo por un precio razonable. En cualquier caso, tú tienes la libertad y el control (y los derechos de autor) sobre tu obra, y que sean los lectores únicamente los que tengan la capacidad de juzgarla.
Porque esto es lo que yo pienso y creo: Igual que leer es un Derecho, opino que Escribir también lo es (como dirían Julia Cameron en su libro El Camino del Escritor o Natalie Goldberg), de modo que nadie te puede impedir hacerlo, tanto si consigues rentabilizarlo como si no, de ahí que haya creado Hub de Libros como Plataforma Editorial de Publicación Abierta.
Leí recientemente que más de un ochenta por cierto de la población estadounidense ha deseado en algún momento de su vida escribir un libro. La mayoría no lo hace.
La diferencia es que ahora es posible a menos que te lo propongas.
¿Y qué pasa con la calidad? Sí, así también cualquiera puede publicar un bodrio (que no va a ser leido por casi nadie, por cierto) o bien una auténtica joya. Pero también puedes mejorar tu texto en cualquier momento (como hago yo cada vez regularmente sobre mis libros), cambiarles el precio, etc.
En cualquier caso, la última palabra la tienen los lectores, solo ellos van a indicar la valoración sobre tu trabajo.
Pues bien, detrás de toda esta historia y de cierta inquietud personal al afirmar que Escribir es un Derecho que tenemos, está Hub de Libros y la Plataforma Editorial de Publicación Abierta. Es un site donde los lectores pueden encontrar nuevos contenidos pero, sobre todo, nuevos autores y los escritores pueden crearse su propio perfil y publicitar sus trabajos.
He creado Hub de Libros para que los autores que quieran publicar, lo puedan hacer sin los problemas técnicos que yo tuve en su momento y que fui superando con mucho esfuerzo, prueba y error.
También creo en la economía gig, en la que cada vez más y más profesionales pueden ofrecer sus servicios a cualquier cliente de cualquier parte del mundo, como se hace a través de Fiverr y muchos otros portales. Para ello Hub de Libros dispone de una serie de gigs o servicios que cualquiera puede contratar relacionados con todo lo necesario en el proceso de creación de un libro.
Hub de Libros también es un reto técnico, y me propongo hablar de todas las estrategias que he empleado en él y que permiten que sea una plataforma diseñada para crecer y ser evolucionada fácilmente mediante Mantra Framework, otro proyecto propio en NodeJS en el que comencé a trabajar hace ya dos años en base a mi experiencia de haber lanzado proyectos muy escalables (que soportan un gran número de usuarios y manejan un volumen de datos muy alto), para lo cual hacen falta estrategias de diseño y arquitectura que nada tienen que ver con una aplicación de tamaño pequeño o mediano.
Es cierto que existen otros frameworks muy maduros y con una buena acogida, como NestJS, pero ciertas consideraciones técnicas a largo plazo me llevaron a concretar el desarrollo de Hub de Libros en un framework propio fácilmente evolucionable. En los siguientes puntos entendrás por qué.
Estas son varias de las claves técnicas sobre las que se asienta a nivel de software Hub de Libros:
- Es un sistema basado en componentes altamente desacoplados, esto es, cada uno vive en su mundo y dependen "poco" o nada del resto.
- Actualmente, la funcionalidad está repartida entre 72 componentes diferentes.
- Cada componente gestiona sus propios recursos: su propio repositorio de datos, publica su API de cara a ser usada por otros componentes, define sus propias vistas, bloques, "tareas", emite o implementa eventos lanzados por otros componentes, etc., a través del framework.
- La creación y gestión de formularios es una tarea pesada, por tanto, en Hub de Libros no hay ningún formulario diseñado a bajo nivel, todos están "definidos" mediante objetos json y que otro componente (de nombre... "forms") se encarga de renderizar como formulario html. Esto permite crear formularios (con la validación de sus elementos) prácticamente en minutos.
- Es un sistema basado en la ejecución de "procesos de negocio", por tanto, la mayoría de las interacciones con el usuario están basadas en flujos de trabajo implementados del mismo modo que los formularios: un json que describe los pasos hasta terminar la acción. Esto lo implementa el componente "workflows".
- No hay acceso directo a una base de datos, todo se hace a través de un ORM propio y muy optimizado que se denomina RedEntities y que planeo publicar y compartir en GitHub próximamente.
- En el mismo sistema, se indica por configuración dónde reside el respositorio de datos de cada componente, de modo que actualmente, Hub de Libros utiliza seis bases de datos diferentes con distintos propósitos, aumentando el rendimiento de la web y todos los procesos de background que corren continuamente.
- La implementación de cada componente es sencilla y rápida; el peso del sistema está en el framework donde se ejecuta (Mantra Framework).
- Nunca se hace una tarea pesada provocada por la acción interactiva de un usuario (por ejemplo, enviar un correo como respuesta a un "clic" de un usuario, o el cálculo de los autores y libros recomendados). Todas esas acciones se realizan en background mediante "tareas", de modo que la navegación por el site es rápida y eficiente.
- Los componentes viven en su mundo implementando funcionalidades muy concretas (de ahí que haya 72 por el momento), pero existen otros componentes cuyo propósito es orquestar la funcionalidad de otros a más alto nivel. Por poner un ejemplo, la vista de un autor y sus libros, descripción, etc., es generada por la funcionalidad de diez componentes diferentes, atomizando esta funcionalidad hasta tal extremo que permite después ser cambiada con muchísima facilidad.
- Existe un site de usuario final y otro de administración, de ese modo, el diseño de uno y otro es más sencillo y fácil de mantener. El portal de adminstrador tiene tanta o más funcionalidad que incluso el que ven los usuarios.
- El framework te aisla de todo lo relacionado con la seguridad, quitando mucho peso a la implementación de los componentes.
- Existen los "prerequests" y los "accessconditions", como propiedades de acceso a la vistas de los componentes, garantizando la seguridad y ahorrando muchas líneas de código en checks. De esta estrategia muy técnica, hablaré en otro momento.
- Puesto que se utilizan un gran número de archivos (portadas, perfiles, documentos, etc.), he integrado files-repo para la gestión inteligente, segura y unificada de los mismos.
- También se utilizan muchas imágenes, de ahí que creé Smart Web Resources (aún no lo he documentado bien en el repositorio de GitHub) para sus manipulación al vuelo con la misma tecnología que ya desarrollé e integré en su día en Picly.
- Las actualizaciones del sistema son rápidas, incrementales y sencillas, porque sigo la metodología Lean de emprendimiento.
- Todo está diseñado para que el crecimiento del proyecto sea fácil, puesto que un proyecto así sabes cómo comienza pero no cómo evolucionará a medio y largo plazo.
- La arquitectura basada en componentes y a través de Mantra Framework, permite escalar el proyecto para soportar miles de usuarios y volumenes de datos altos, usando actualmente tres máquinas virtuales.
- Y mucho más que iré describiendo próximamente.
Esto es, la implementación de Hub de Libros sigue cierto "paradigma" de desarrollo diferente y buenas prácticas de arquitectura de software que permiten hacer crecer o cambiar el sistema fácilmente, siendo a la vez muy mantenible.
Por otra parte, un proyecto no es solo una cuestión técnica a desarrollar, requiere de un proceso y metodología de trabajo, más aún cuando tienes muchas otras responsabilidades personales y profesionales.
Creo en el poder de la microtarea, también en el del Kaizen y de pertenecer al club de las 5AM, pero de todo eso escribiré en otro momento para no asustar a nadie... ;-)
Confío en que Hub de Libros ayude a mucha gente a encontrar a nuevos autores y a éstos a publicar su obra, porque esa es en esencia la misión de un emprendedor: ayudar a los demás a través de sus proyectos.