En términos no técnicos, ¿hay cosas que los desarrolladores de terceros pueden hacer en Android que no pueden hacer en iOS porque Android es de código abierto?

Probablemente no.

Ser “código abierto” generalmente se refiere a algunas características: principalmente, la disponibilidad del código fuente, la capacidad de cambiar el código fuente y ejecutar la versión modificada, y la capacidad de compartir la versión original o modificada sin necesidad de permiso o de compensar a nadie más .

La mayoría de los lanzamientos de Android podrían contar como “código abierto”, aunque esto no incluiría cosas como Gmail o Maps o Voice Actions o Navigation o Android Market.

El problema es que el sistema operativo como “código abierto” no es directamente relevante para un desarrollador de aplicaciones. Tanto Android como iOS tienen interfaces de programación de aplicaciones bien documentadas, y esta es la información que un desarrollador necesita para escribir software que se ejecute en el sistema operativo. Si la API está bien documentada, y lo está, ver la implementación no necesariamente agrega mucha información. (A veces puede ser útil poder depurar y realizar un solo paso dentro de la implementación, pero esto es raro).

Que Android sea de “código abierto” significa que puede adaptarlo para que se ejecute en un nuevo dispositivo de su propia creación o en algunos teléfonos celulares “abiertos” existentes. No significa necesariamente que un dispositivo existente permitirá al usuario instalar una versión modificada del sistema operativo sin piratería. En la práctica, pocos usuarios pueden o desean instalar variantes del sistema operativo que no provienen de su operador de telefonía celular.

Android difiere de iOS en otras formas que importan más. La mayoría de los dispositivos Android (pero no todos) permiten al usuario cargar aplicaciones desde cualquier sitio web, sin requerir la aprobación de Google. Por el contrario, Apple debe aprobar todas las aplicaciones. Cuando se busca la aprobación de Google, Android Market es mucho menos curado y menos restrictivo que la App Store de Apple, cuyas decisiones caprichosas, restrictivas y lentas están bien documentadas.

Pero en lo que respecta al código abierto, no, probablemente no ha permitido a los desarrolladores externos hacer mucho que no podían hacer en iOS.

Claro, pero solo cuando “hacer más” significa no dejarse atrapar por los marcos del sistema. Considere un desarrollador de iOS haciendo algo avanzado con un UIScrollView. Subclases, asigna un delegado, escribe un montón de código, pero todavía no puede lograr que se comporte exactamente como quiere. Busca ayuda en Google, va a los foros de desarrolladores de Apple y mira algunas sesiones de la WWDC sin llegar a ningún lado. Se dice a sí mismo “¡Dios, si supiera los detalles íntimos de esta clase!” Pero, dado que iOS no es de código abierto, nunca sabrá los detalles íntimos. Le queda la opción de reducir el alcance de la funcionalidad o invertir mucho tiempo en escribir su propia clase personalizada ScrollView-ish. Pero con Android, podría seguir el consejo de Andy Rubin y clonar el repositorio git y decidir qué quiere hacer a continuación. Sin embargo, estos casos son bastante específicos y, a medida que el SDK de iOS madura, se reduce la cantidad de obstáculos como este que encontrará.

En todo caso, Android le permite “hacer más” porque tiene conexiones de sistema operativo en hardware o servicios que Apple no proporciona. Pero en el otro lado de la moneda, iOS le permite “hacer más” debido a grandes marcos como Core Animation. El código abierto realmente tiene poco que ver con eso.

La aplicación Tasker para Android es un excelente ejemplo de las ventajas de “Open Source”, así como de las muchas iteraciones que los fabricantes han creado (para bien o para mal). Si quieres algo parecido a Tasker en iPhone, requiere jailbreak, rompiendo así las paredes de iOS.

Las personas de arriba que dicen que no hay diferencia están simplemente equivocadas. De lo contrario, Android no habría ganado la cuota de mercado que tiene tan rápidamente.