El factor-iOS estuvo inspirado en el famoso framework twelve-factor app, una metodología para escribir servicios web de alta calidad. El factor-iOS usa la misma estructura y principios similares, reescritos y aplicados a los procesos de desarrollo de aplicaciones iOS.

Contexto

A los largo de los últimos 10 años, el proceso de desarrollo iOS ha variado drasticamente:

  • desde soportar un único dispositivo hasta alcanzar un gran rango de iPhones y iPads disponibles en iOS y otras plataformas como tvOS y watchOS
  • desde incluir submódulos de git manualmente hasta la utilización de gestores de dependencias
  • desde aplicaciones iOS corriendo la mayoría de casos localmente on-device, hasta aplicaciones iOS totalmente dependientes de servicios back-end
  • desde tiempos de revisión para aplicaciones iOS de más de 2 semanas hasta revisiones en menos de un dia
  • desde instalaciones de aplicaciones en un dispositivo móvil utilizando iTunes hasta la distribución de aplicaciones a través del canal oficial TestFlight
  • desde los 5 screenshots por cada idioma en iTunes Connect hasta los 110 por idioma, además de la vista previa de aplicaciones
  • desde aplicaciones Objective-C/C++ planas hasta una mezcla de lenguajes incluyendo JavaScript
  • de publicaciones lentas cada que algo está listo, a despliegues semanales
  • de publicaciones completas hasta tests A/B, entregas graduales y detección automática de regresiones

Qué es el factor-iOS?

El factor-iOS es un proyecto experimental iniciado en mayo de 2018. Éste trata de proporcionar una colección de mejores prácticas para la construcción de aplicaciones iOS de alta calidad. Cáda temática está cubierta por un factor, el cual describe el estado ideal que cierta categoría dentro del proceso de desarrollo de una aplicación iOS podría llegar a tener.

Debido a ciertas limitaciones (como Xcode solo funcionando en macOS) no se pueden satisfacer todos los requisitos. Este proyecto intenta definir tanto objetivos, como también la mejor manera de resolver algunos de los retos que enfrentamos a diario.

El factor-iOS contiene un marco más amplio de los procesos de desarrollo y decisiones arquitectónicas en aplicaciones iOS y no cubre ningún reto de algún lenguaje en específico.

Éste es un proyecto viviente, mantenido por la comunidad de desarrolladores iOS. Puedes encontrar el código fuente completo en GitHub, así como actualizar las páginas existentes o agregar nuevos factores.


Los factores iOS

I. Dependencias

Declarar y aislar dependencias explícitamente.

II. Configuración

Mantener configuración por fuera del código, desplegar incluyendo configuración por defecto y permitir actualizaciones "Over-the-Air".

III. Simetría entre ambientes de desarrollo y producción

Mantener los ambientes de desarrollo, pruebas y producción tan similares como sea posible.

IV. Despliegue

Automatizar el despliegue de manera que pueda ser publicado desde cualquier ordenador.

V. Preferir local en vez de remoto

En lo posible, mantener la aplicación iOS lo suficientemente inteligente como para operar sin back-end.

VI. APIs retroactivamente compatibles

Nunca asumir que cada usuario actualiza a la versión más reciente.

VII. Versionamiento de la aplicación

Automatizar la versión y el número de compilación para mantener consistencia.

VIII. Rollbacks

Reverting a build that causes issues

IX. Persistencia de datos

Seguir los lineamientos de Apple al almacenar información.