Entrevista: Pedro J. Molina. OpenAPIs: Diseño de APIs

Entrevistamos al Dr. e Ingeniero en Informática Pedro J. Molina que nos hablará de OpenAPIs: diseño de APIs.

¿Podrías presentarte brevemente? ¿A qué te dedicas y cuáles son tus aficiones?

Me llamo Pedro J. Molina (http://pjmolina.com). Desarrollo software desde los 14 años donde comencé a programar con un ATARI ST 512FM del que quedé maravillado. Desde ese momento despertó en mí la vocación por “domesticar” máquinas.

Llevo más de 20 años dedicado al desarrollo software desde diversos perfiles. He sido desarrollador, arquitecto de software, director de I+D, CTO. Actualmente he creado una compañia llamada Metadev (https://metadev.pro) (@metad3v) desde la que creo productos y proyectos a medida, especializado en desarrollos en nube, API y microservicios. También imparto formación a equipos de desarrollo.

Como aficiones personales me gusta la cocina y comer (soy un poco sibarita), la música (fiel fan de Jean Michel Jarre), todo lo que tiene que ver con ciencia, en especial física y astronomía.

Twitter: @pmolinam

¿De qué hablarás exactamente en tu charla? ¿Porqué ese tema?

Hablaré sobre el diseño de APIs y el estándar OpenAPI. El diseño de APIs públicas está acelerando la innovación en multitud de nuevos modelos de negocio. Que los clientes sean capaces de integrarse rápida y fácilmente con tu producto es algo que puede determinar el éxito o fracaso de un negocio. Las APIs sientan las bases para crear ecosistemas y los negocios digitales requieren de ecosistemas para sobrevivir y crecer.

¿Qué quieres conseguir al dar esta charla? ¿Qué esperas?

El objetivo es dar a conocer OpenAPI como estándar emergente en la industria para descubrir, documentar, utilizar y compartir APIs.

Espero que a través de las demos los asistentes puedan entender rápidamente los casos de aplicación y por tanto puedan llevarse para casa, en la mochila, como les puede ayudar en sus desarrollos del día a día mejorando la interoperabilidad.

¿Cuál es la historia de OpenAPI?

OpenAPI surge inicialmente como el estándar Swagger creado por Reverb Studio. Swagger es una especificación ligera (basada en formatos JSON y/o YAML) pero al tiempo, formal de un API: describe todos los servicios, sus signaturas, con los parámetros de entrada y salida de un modo suficientemente preciso para poder automatizar la conexión de servicios: es decir la creación de proxies y skeletons en diversas tecnologías.

Hace dos años la compañía Smart Bear (los creadores de SOAP-UI entre otros productos) compro Reverb y se comprometió a impulsar Swagger como estándar.

El año pasado, los grande fabricantes como Google, Microsoft, IBM, Atlassian, Paypal, entre otros, junto con fabricantes de productos API Management decidieron reunirse bajo el paraguas de la Linux Foundation para dar cobertura a este estándar de modo neutral entre fabricantes y nació la Open API Initiative (https://www.openapis.org/) como foro neutral que adoptó Swagger como especificación base.

Esto fue una muy buena noticia, ya que la Linux Foundation vela por la neutralidad (que no se beneficie a ningún fabricante en particular) y porque las especificaciones estén libres de patentes que puedan coartar la innovación.

Este año está ya cocinándose la versión 3.0 de OpenAPI que saldrá a mitad de año.

¿Porqué es tan importante?

La informática, comparada con otras ingenierías más asentadas, sigue en su infancia. Si nos comparamos con la ingeniería eléctrica, sabemos que los conectores de corriente están “más o menos” estandarizados, al menos por países: 220V/110V a 50Hz/60Hz y uno sabe que tipo de conector o clavija de alimentación espera encontrar. Incluso usamos un conjunto de adaptadores estandarizados cuando viaja a otro país.

Del mismo modo, en informática, para la interconexión de servicios necesitamos estándares que permitan conectar de modo sencillo. Hubo intentos previos de estandarización: RPC, CORBA, SOA, etc.

OpenAPI tiene como virtudes frente a sus predecesores: la sencillez y la interoperabilidad (disponible en todos los lenguajes) y viene a cubrir una necesidad clara en el espacio de internet donde necesitamos descubrir y consumir APIs muy variadas creadas por terceros.

¿Cuáles son los mayores retos para el estándar OpenAPI?

El principal reto en los próximos años será mantenerse como estándar sencillo para incrementar su adopción frente a la adición de nuevas funcionalidades. Esta lucha siempre es un delicado balance difícil de conseguir. Conforme crece la adopción del estándar más y más casos de uso aparecen y demandan nueva funcionalidad.

Existe también una línea de trabajo que para hacerlo converger con gRPC (un estándar interno de Google para describir APIs). Será muy bueno para la comunidad disponer de las capacidades y herramientas de ambas comunidades.

¿Porqué te gusta tanto?

OpenAPI me parece un estándar muy bueno para la interconexión de servicios. Ha venido en el momento justo a cubrir una necesidad imperiosa en internet: la documentación, descubrimiento de APIs y su consumo por parte de desarrolladores. Tiene muchas herramientas asociadas y un soporte estupendo en muchos lenguajes de programación: lo cual te da libertad para implementar los clientes (consumidores del API) y los servidores (el proveedor del API) en cualquier lenguaje.

¿Cuál es tu editor o entorno de programación favorito?

Trabajo mucho últimamente con TypeScript y en este sentido Visual Studio Code me tiene enamorado como editor minimalista, ligero y potente. El hecho de que esté basado en Electrón es un plus ya que puedo usarlo en Mac, Windows y Linux con la misma interfaz de usuario.

¿Y tu lenguaje de programación favorito?

C# siempre ha sido mi lenguaje de trabajo, con el que me encuentro más cómodo. Durante los últimos cuatro años me he reconvertido al mundo web y aquí encontré a TypeScript como una forma excelente de domar al “salvaje potro” de JavaScript. Qué le vamos a hacer: soy de tipado fuerte. Trato de exponerme a lenguajes nuevos con regularidad. Últimamente coqueteo con Go para ver si me seduce lo suficiente.

¿Qué proyecto de software libre que no sea muy conocido y consideres especialmente útil recomendarías?

Recomendaría probar: Baucis. (https://github.com/wprl/baucis) Baucis simplifica la creación de recursos RESTful sobre NodeJS, ExpressJS y MongoDB. Lo he usado mucho como base de arquitectura para numerosos backends y funciona como la seda. Tiene un diseño interno super-elegante basado en deco y recomiendo a cualquiera con curiosidad echarle un ojo.

¿Cuál es tu proyecto de software libre favorito?

Sin duda: StringTemplate (http://www.stringtemplate.org/) de Terrence Parr. Es el motor de plantillas para generación de código más elegante que he visto en lustros, literalmente. Y lo digo desde la experiencia de haber usado más de 15 motores de plantillas diferentes y haber escrito al menos 4 motores propios para diversos productos.

¿Desde cuando conoces el software libre y cuál fue tu primera experiencia con él?

En los años de universidad, el los 90, en los albores de internet empecé a leer sobre Linux. En el año 1995 decidí probarlo y compre un set de CD-ROMS que me enviaron desde Arizona. Era la distribución de InfoMagic y traía 5 CD-ROMS con diversas distribuciones de Linux (entre ellas la mítica Slackware). Eran años donde te recompilabas tu propio kernel de linux y cruzabas los dedos antes de hacer un reboot. Era muy divertido y era la excusa perfecta para aprender las tripas y los detalles más insospechados de Linux. Recuerdo que en aquella época y debido a esto los colegas me apodaron Molinux. 😉

¿Cuál es tu principal motivación cuando aportas al software libre?

El software libre ha sido un revulsivo para acelerar la innovación en software. Cada nuevo programa que creamos se apoya en miles de piezas que otros diseñaron antes. Considero que contribuir al software libre es éticamente la mejor manera de “devolver” un poquito a la comunidad todo lo que recibimos de ella.

¿Estuviste en la edición anterior de la conferencia OpenSouthCode?

Sí. Estuve en la primera edición impartiendo una charla sobre microservicios. Me encanta conocer gente que trabaja en lenguajes y comunidades diferentes ya que te da un punto de vista enriquecedor sobre lo que haces. En este sentido OpenSouthCode es un evento único por lo variado de la temática de charlas que puedes encontrar y la red y contactos que genera.

¡Muchísimas gracias Pedro por la entrevista! ¡Esperamos con sumo interés tu charla!  Nos vemos en tan solo unos días 😀

Leave a Reply

Your email address will not be published. Required fields are marked *