Xamarin+Open Source=Love, Una historia que no acaba

Como parte del #mesXamarin #XamarinMonth/#MesXamarin, comparto un poco de mi historia con Xamarin y lo mucho que he recibido y aprendido de esta tecnología y su gran comunidad.

¡El tiempo vuela! Vamos cerrando Febrero 2019 (casi 15% del año consumido ya) y los años se pasan rápido. No hace nada que conocí Xamarin por primera vez, por allí de 2015, y a pesar de que no era algo fácil de acceder tuve la oportunidad de conocerlo a través de terceros y un poco de vista a lo lejos.

Por el tiempo en que supe de Xamarin, era bastante difícil poder aprenderlo y desarrollar porque había que pagar por ello. Era entendible dado la naturaleza de Xamarin como tal por sus orígen startup por parte de sus fundadores: Miguel de Icaza y Nat Friedman.

Xamarin Love

A Xamarin story: From Zero to Hero!

Mi experiencia por esos tiempos había sido mayormente en .NET en web y escritorio con WPF, por lo que el mundo de móvil siempre me resultó interesante y todo un mundo por descubrir. Para mí, el no conocer la Xamarin ni mobile nunca lo consideré un impedimiento para aprender. Comencé leyendo, aprendiendo, participando y aprovechando mi experiencia previa con XAML y aprendí Xamarin.Forms con sus diferencias obvias, y llegue incluso a resolver algunos problemas que gente que recién conocía XAML en Xamarin los tenía y los daban a conocer en Xamarin Forums, una plataforma de uso de Xamarin por ese tiempo.

Me di cuenta que no estaba solo, y que muchos como yo estaban teniendo problemas similares, así que me animé a participar más en la comunidad, tuve la oportunidad de dar el tema a conocer con colegas. No tardó en darse el interés de varias personas cercanas a mí y a lo interno en comunidad de mi país, y decidí crear un grupo de Meetup llamado Mobile CR Developers, el cual cumple 4 años ya y me ha dado la oportunidad de hablar sobre Xamarin y mobile en varias universidades y en las oficinas de Microsoft de Costa Rica. A la fecha suman mas 1200 personas inscritas y mas de 500 participantes entre charlas, talleres abiertos e invitaciones a universidades y empresad.

Meetup

Para mí, el no conocer la Xamarin ni mobile nunca lo consideré un impedimiento para aprender

Con el tiempo y manteniéndome en mis contribuciones, se dieron cosas bien interesantes:

Recognitions

Xamarin y los vientos de cambio.

Los tiempos cambian y pues bueno, ni Xamarin ni yo nos detuvimos. Con los cambios más recientes, Xamarin University se moverá a Microsoft Learn, por lo visto no habra mas Xamarin Evolve (el evento no, la idea persiste!) y la documentacion de Xamarin se ha ido moviendo a Microsoft Docs, lo cual es genial! Miguel sigue contribuyendo activamente después de unirse a Microsoft y ahora Nat Friedman es el CEO de GitHub después de ser adquirido por Microsoft también. ¿Curioso, no?

Yo por mi cuenta renuncié a mi empleador anterior y el último año me he dedicado a familia y proyectos que se venían dando en lo personal y profesional, con lo que ahora trabajo desde casa 100% en proyectos de Xamarin, .NET y otras tecnologías con clientes en Costa Rica y USA.

En menos de un parpapeo (prácticamente en menos de 2 años) se dio que Microsoft adquirió Xamarin, luego vino GitHub en 2018 y la historia se sigue construyendo, por dicha de todos, las cosas han cambiado para bien. Muchos estuvieron a favor y otros en contra de que todo pasara a Microsoft, y con el tiempo algunos se han ido hacia otras alternativas o nuevos emergentes en el tablero.

Por otro lado, muchos otros vinieron y se unieron a a contribuir unido, nuevos miembros a la comunidad, gente que ha encontrado en Xamarin una puerta abierta al mundo móvil con las herramientas que ya conocen como .NET, XAML y el ecosistema Microsoft. Muchos de los roles cambiarion pero la esencia de Xamarin se mantiene y la comunidad sigue en aumento!

Creo que es bastante para tan poco tiempo. Haciendo restrospectiva un poco en Xamarin, resalto siguiente:

1. Mejor soporte para el tooling de .NET e integración de las herramientas

Si bien han ido y venido mejoras en e desempeño de ejecución, se han ido incluyendo mejoras tanto en lo base como Xamarin.Android y Xamarin.iOS para hacer las apps más rápidas, ligeras y eficientes, cosa que en general llegó a sufrir Xamarin y que se fueron dando con el tiempo. En temas de .NET Standard dichosamente ha venido a solucionar muchos de los problemas que tocaba enfrentar para compartir código en el mundo .NET que se encontraba encrucijado entre PCLs y Shared Libraries.

DotNet Standard

2. Un Xamarin.Forms mas más comunitario y abierto.

Nos acercamos a Xamarin.Forms 4 y lo que viene para la versión futura ya está en el horizonte. Puntualmente en Xamarin.Forms ha ido cumpliendo su misión y ampliandose a nuevas tendencias y adiciones como la inclusión de capacidades denomidadas Visual y Material y controles como el FlexLayout que se ha esparcido notablemente.

Flex Layout

El tema del famoso Previewer ha sido uno de los grandes retos que sigue para este año para mejorar el despliegue y velocidad del desarrollo. El año recién empieza y me atrevo a decir que es algo que estará mucho mejor en poco tiempo y cerrando la brecha del HotReload como lo ha venido haciendo el Xamarin Live Player o que salte alguna nueva herramienta de la comunidad que venga a sorprendernos nuevamente como ya lo han hecho otras. 🙂

GitHub se mantienen como la principal herramienta de desarrollo para muchas de las tecnologías Open Source y Xamarin no se queda atrás. Algunos de los principales repos en GitHub los puedes encontrar y explorar en:

Todo es Open Source y abierto a contribuyentes! También y más recientemente, se ha ido extendiendo una costumbre bastante interesante que se venía dando en el mundo de la comunidad ASP.NET con sus Community Standups, los cuales están ahora dandose en el mundo móvil con Xamarin con el .Net Mobile Community Standups con formato en línea y otros formatos modernos como Xamarin Podcast

Podcast

3. Microsoft Docs nos hable posibilidades de aprendizaje en español!

Microsoft Docs, la nueva forma de documentación es muy fresca y abierta. De hecho, puedes contribuir y ayudar a otros enterder mejor Xamarin desde contenidos en ingles. necesita tu ayuda!). Para contribuir con Docs, basta con hacer Fork (o copia) del repositorio y enviar un PR con las sugerencias.

Cómo contribuir en Microsoft Docs? Por acá de ejemplo sobre Bindable Layouts, y me encantó poderlo revisar! Xamarin Docs - PR #58

MS Docs

4. Mejoras enfocadas en rendimiento primero, luego nuevos features.

Recientemente se han anunciado nuevas versiones, mejoras y nuevas caracteristicas que vienen para Xamarin.Forms que valen la pena. Como todo en la vida, no es perfecto y si encontramos cosas que necesiten atención es bueno reportarlo. Me pasó recientemente con un issue de Grouping en Forms acá. Tuve la oportunidad de reunirme con David Ortinau y Paul Di Pietro, PMs de Xamarin y siempre están dispuestos a escuchar 🙂.

5. Unificación de APIs, y hasta los Plugins!

Uno de los principales retos en comunidades abiertas y emergentes lo sufrimos en ocasiones los desarrolladores. Encontramos mil y un paquetes en la web que podemos usar. Dichosamente y en el caso de Xamarin, los esfuerzos se han unificado para bien y ha permitido que otros puedan participar. Tal es el caso del equipo detrás de Xamarin.Essentials liderado por James Montemagno que está ayudando enormemente a reducir la fricción entre tantos NuGet’s y Plugins. Recientemente está disponible para uso en producción y de manera oficial. Así que a aprovechar y disfrutarlo!

Essentials

¿Que estamos dando vuelta a la comunidad?

Si bien hemos recibido muchos regalos sin costo de Xamarin desde hace bastante tiempo y hay mucho amor en el aire, más en este mes, considero que es importante también contribuir de nuestro lado y dar algo de vuelta. En mi caso, sigo encontrando que la gran mayoría de colegas a los que entreno y nuevos alumnos que aprenden Xamarin tienen cierta base en C#, lo cual es bueno, y en otros casos no tanto o muy poca.

Puntualmente en el camino he encontrado también otros no lo saben del todo o lo han usado por años en otras tecnologías precursoras como WinForms o WebForms desde hace mucho tiempo (Asp.net Forms). Incluso en varias visitas a universidades que he realizado para charlas me encuentro que aún lo ven como parte de contenidos de cursos y carrera. Eso me parece que sigue siendo cool en cierta manera, pero siempre hay chance de moverse hacia adelante.

Mi aporte a la comunidad: Aprende Xamarin desde cero! En español.

Es por eso y con el ánimo de seguir aprendiendo que he decidido contribuir con algo de Xamarin de vuelta. He decido crear un repositorio abierto al público para aprender Xamarin con muy poco o nulo conocimiento en C#, con ejercicios prácticos. Puede que para muchos resultará muy básico e innecesario porque ya conocen C# y .NET pero mi enfoque es orientarlo a otros .NET-eros y que su referente sea otros lenguajes como Java, JavaScript, Swift o el mismo Visual Basic.

De las cosas más interesantes que he encontrado es la diversidad y nuevos talentos que vienen de otras tecnologías y que necesitan o quieren aprender y aportar. Así que si sabes bastante de C# y Xamarin y sabes de otros que no lo saben del todo, el repositorio puede resultar de gran ayuda. Recomiendalo!

Repo

Aprende Xamarin (auto-guiado, sin matriculas)

El curso del repositorio sigue enfoques prácticos y auto-guiados por lo que no requiere mucha guia de mi lado o que haya que esperar a que empiece la proxima ronda del curso. Puedes tomarlo hoy mismo y empezar a aprender. Algunos contenidos iran variando y mejorando con el tiempo a medida que ire sumando mas contenido.

Bonus Tip: Horas de mentoría 100% gratuitas:

Si sigues el repositorio y encontraste este post, contáctamente en CodeMentor o a mo correo personal y le podemos dar seguimiento a tu avance en el curso, reunirnos periódicamente y aprender de lo que aprendiste. SI resultara de interés podemos hacer una sesión abierta en línea mediante Hangouts (o similar) o cuadramos una meetup y convocamos más gente.

Algunos avances del repo que estaré publicando incluirán:

¿Quieres contribuir, aprender? ¡Hagámoslo juntos!

El repositorio es Open Source y libre de uso. Puedes hacerle Fork, extenderlo y hasta enviarme uj Pull Request si quieres colaborar en el tema y compartir conocimiento. Respetare la autoría y compartiré créditos de quien contribuya y quiera enseñar a otros.

Un saludo cordial y nos vemos en la próxima! 🙂