Un ingeniero de software de Dropbox explica el razonamiento detrás de la decisión de la compañía de no compartir más código entre iOS y Android.
Hasta hace poco, Dropbox compartía código entre sus aplicaciones de Android e iOS usando C ++ para escribir solo una vez en lugar de Java y Objective-C. Esta estrategia ha estado vigente desde 2013 cuando el equipo de Dropbox todavía era relativamente pequeño, pero necesitaba soportar una hoja de ruta rápida.
Dropbox, ahora es una empresa mucho más grande, ha cambiado a desarrollar sus aplicaciones de Android e iOS utilizando el idioma nativo respectivo de cada plataforma. En una publicación de blog, el ingeniero de software de Dropbox, Eyal Guthmann, ofrece una idea de las desventajas que la empresa encontró al compartir el código.
Guthmann dice que todos los problemas de Dropbox se derivan de un problema central: "Al escribir el código de manera no estándar, asumimos una sobrecarga de la que no habríamos tenido que preocuparnos si nos hubiéramos quedado con los valores predeterminados de la plataforma ampliamente utilizados. Esta sobrecarga terminó siendo más costosa que simplemente escribir el código dos veces ".
Al escribir código multiplataforma en C ++, Dropbox descubrió que tenía que construir muchos de sus propios marcos y bibliotecas.
Guthmann reconoce que es posible que la empresa haya hecho un mejor trabajo al aprovechar las bibliotecas de C ++ de código abierto, pero en su experiencia, la comunidad no es tan fuerte como en el desarrollo móvil. Además, Guthmann cree que las contribuciones de código abierto de Dropbox habrían llegado a más desarrolladores en los idiomas nativos de la plataforma.
“Estos costos son particularmente altos en C ++ (a diferencia de otros posibles lenguajes no nativos como Python o C #) porque carece de una biblioteca estándar única con todas las funciones. Dicho esto, C / C ++ son los únicos lenguajes con un compilador compatible con Google y Apple, por lo que el uso de un idioma diferente habría creado una gran cantidad de otros problemas con los que lidiar ”, escribió Guthmann.
La próxima sobrecarga que Guthmann destaca con el desarrollo multiplataforma es la falta de acceso a IDE específicos de la plataforma de Google y Apple. Android Studio y Xcode tienen muchas funciones y cada compañía invierte una tonelada de recursos para garantizar que tengan excelentes experiencias con la depuración mejorada de sus respectivos idiomas.
“Además de perder herramientas, también tuvimos que invertir tiempo en crear herramientas que admitieran el intercambio de código C ++. Lo que es más importante, necesitábamos un sistema de compilación personalizado que creara bibliotecas que contengan código C ++, así como envoltorios Java y Objective-C y que pudiera generar objetivos que fueran entendidos tanto por Xcodebuild como por Gradle. Este sistema fue un gran lastre para nuestros recursos, ya que necesitaba ser actualizado constantemente para soportar cambios en dos sistemas de compilación ”.
Guthmann señala cómo deben tenerse en cuenta las diferencias específicas de la plataforma, lo que significa que, de todos modos, rara vez se trata de "escribir el código una vez". Un ejemplo particular de esto es cómo cada plataforma maneja las aplicaciones que desean ejecutar tareas en segundo plano.
Mientras que la mayoría de las plataformas logran algo de paridad de características con sus rivales en el transcurso de su desarrollo, Guthmann señala cómo algunas cosas, como la interacción con el carrete de la cámara, solo han divergido con el tiempo.
Lo último que destaca Guthmann es la contratación y capacitación de desarrolladores para trabajar en una pila personalizada. Cuando Dropbox comenzó su estrategia móvil, la compañía comenzó el proyecto C ++ con desarrolladores experimentados mientras entrenaba a otros desarrolladores móviles en Dropbox sobre cómo contribuir a la base de código.
“Con el tiempo, estos desarrolladores pasaron a otros equipos y otras compañías. Los ingenieros que permanecieron no tenían suficiente experiencia para llenar la brecha de liderazgo técnico que se abrió, y se hizo cada vez más difícil contratar ingenieros superiores de reemplazo con experiencia relevante en C ++ que estuvieran interesados en el desarrollo móvil ”.
Puede encontrar la publicación de blog completa de Guthmann aquí, presenta algunas consideraciones interesantes que hacer antes de decidir usar un idioma para el desarrollo multiplataforma.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…