¿MonoTouch ahora está prohibido en el iPhone?

Una publicación reciente de John Gruber señala que la siguiente jerga legal:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

Ha sido revisado de la siguiente manera:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (eg, Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Y hace la siguiente observación:

Mi lectura de este nuevo lenguaje es que los comstackdores cruzados, como el comstackdor Flash-to-iPhone en la próxima versión Flash Professional CS5 de Adobe, están prohibidos. Esto también prohíbe las aplicaciones comstackdas con MonoTouch, una herramienta que comstack aplicaciones C # y .NET para el iPhone.

¿Esto de hecho prohíbe el uso de Monotouch para el iPhone?

    Actualización –

    Esto cambió recientemente . MonoTouch ya no debe entrar en conflicto con el acuerdo. ¡Cualquier statement a continuación es puramente histórica!

    Sí, parece bastante claro en su contrato de licencia ahora que si la aplicación original está escrita en C #, estaría violando la licencia:

    … Las aplicaciones deben estar escritas originalmente en Objective-C, C, C ++ o JavaScript, tal como las ejecuta el motor WebKit de iPhone OS …

    Incluso lo martillan un poco más:

    Se prohíben las aplicaciones que enlazan a API documentadas a través de una capa intermedia de traducción o compatibilidad.

    Como un fastidio, MonoTouch y el convertidor Flash CS5 -> iPhone son geniales.

    Actualizar:

    Apple ha eliminado (casi) todos los requisitos técnicos para idiomas y bibliotecas para iOS, por lo que MonoTouch es, sin duda, una solución viable. Vea el anuncio de Apple .


    La mayoría de la gente aquí simplemente quiere tomar el documento de Apple por la palabra y decir “sí, está prohibido”. Bueno, aquí está mi punto de vista: en este momento, nadie tiene idea de si MonoTouch será o no prohibido, y explicaré por qué:

    El acuerdo de Apple versión 3 (no el último, el anterior) establece claramente que es ilegal utilizar cualquier otro marco para desarrollar aplicaciones distintas de las proporcionadas por Apple:

    3.3.2 Una Aplicación no puede instalar o ejecutar ningún otro código ejecutable por ningún medio, incluido, entre otros, mediante el uso de una architecture de complemento, llamando a otros marcos, otras API u otros. No se puede descargar ni usar ningún código interpretado en una Aplicación, a excepción de un código interpretado y ejecutado por las API documentadas de Apple y los intérpretes incorporados. http://adcdownload.apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf

    Aunque ese es el caso (y en realidad fue el caso desde 2.x, Apple no tiene problemas para aceptar aplicaciones que hacen exactamente eso. Por ejemplo, TODOS los juegos EA utilizan scripts Lua, y muchas personas usan bibliotecas externas que no son nativas del iPhone. Incluso cuando el iPhone tiene esas API nativas, Apple nunca tuvo problemas para aceptar aplicaciones con diferentes versiones, como SQLite.

    Mi punto es que decir “SÍ, serán prohibidos” en este momento es simplemente WAAY demasiado temprano. Lo único claro en este momento es que Apple podría usar eso para prohibir aplicaciones. Al igual que hoy aceptan las aplicaciones que están en contra de algunas de sus reglas, probablemente continuarán haciéndolo.

    También está el hecho de que hay cientos (¿o quizás algunos miles?) De aplicaciones en la tienda que actualmente ejecuta Mono, y Apple tendrá que aceptar actualizaciones para esas aplicaciones. Las aplicaciones principales con millones de ventas se crearon usando Mono (y Lua), y dudo que reembolsaran a cada usuario.

    Por último, las aplicaciones empresariales se implementan en iPhones sin la aprobación de Apple, y ese es un gran mercado en el que MonoTouch está presente (yo mismo desarrollo aplicaciones empresariales). No hay forma en este punto de que Apple pueda prohibir MonoTouch para esas aplicaciones, y eso probablemente sea suficiente para mantener a MonoTouch con vida durante mucho tiempo.

    Actualizar:

    Los nuevos cambios a las secciones 3.3.1, 3.3.2 y 3.3.9 han hecho que MonoTouch (y todos los otros comstackdores cruzados / idiomas / etc) sean perfectamente aceptables en el iPhone. Ver el anuncio de Apple


    Miguel no parece pensar eso. Ver el tweet y la respuesta de Miguel. No exageremos aquí y digamos que Monotouch está muerto, o deje de desarrollarse con Monotouch hasta que todas las partes involucradas hayan hecho algunas aclaraciones.

    Dicho esto, definitivamente comenzaría a presionar a Apple por políticas de desarrollo tan draconianas. Cosas como esta y el proceso nebuloso que es la política de aprobación de las aplicaciones iphone / ipad / touch deben infundir miedo en los corazones de los desarrolladores. ¿Cuál es el siguiente paso, su licencia que indica que la única plataforma publicitaria que puede usar es iAd? ¿No permite la distribución de aplicaciones gratuitas sin iAd? Poco a poco boost la participación de Apple en los ingresos de las ventas de aplicaciones? Como desarrolladores en un ecosistema cerrado, somos como ranas en una olla de agua caliente, y Apple lentamente está calentando el fuego. Ahora es el momento de explorar otras plataformas móviles, porque a medida que mejoran, lo principal que mantiene a las personas en la plataforma de Apple es la falta de aplicaciones en otras plataformas.

    Pasé meses de tardes trabajando en ideas para una aplicación de iPhone asesina en Objective C. Mi trabajo diario es C #. Descargué MonoTouch C # cuando se convirtió en una alternativa viable y acabo de pasar 3 meses convirtiendo mi código a MonoTouch C # específico para iPhone. Lo que me detuvo volviéndome loco al cambiar de C # / Objective C.

    ¡¿Qué debo hacer ahora tirarlo todo y comenzar de nuevo o rendirme ?!

    Lo siento mucho por los chicos de Mono. Esto es completamente incorrecto. Una cosa es detener a Adobe que no haya lanzado su producto y no tenga clientes, y que detenga a MonoTouch que sí lo tenga y que también tenga un producto aprobado en la AppStore.

    ¿Por qué alguien querría construir un negocio e invertir en Apple cuando se lo llevarán todo en un instante sin ser responsable ni cuestionable?

    Claramente, los desarrolladores y clientes de Apple que los cuidan a ellos y sus productos son una calle de un solo sentido.

    Espero que Apple sea derrotado por esta ridícula política. La arrogancia no es atractiva y generalmente es mala para los negocios. Esta es una de las razones por las que no he comenzado el desarrollo de iPhone.

    La mayoría de los proveedores de hardware y sistema operativo están contentos de tener herramientas adicionales y público para escribir en su plataforma. Apple está tomando la posición de que sus herramientas (muerte por el cerebro) son el único juego en la ciudad.

    El anuncio “Gran Hermano” de 1984 es cada vez más relevante …

    EDITAR

    La forma en que está escrito también parece implicar que si escribí un .net al objective C / traductor de apple, el código no es aceptable porque el código original no era objective c. Eso es ridículo (y no ejecutable).

    Unity también está basado en Mono y como es un producto comercial considerable, imagino que este es un problema que aún no hemos escuchado.

    Prohibir todas las aplicaciones que no están escritas en Obj-C / C ++ sería, en teoría, prohibir todos los juegos de Unity, de los cuales ya hay un gran número en la tienda de aplicaciones.

    Esta pregunta también se ha planteado en el sitio de Unity Answers, y su respuesta oficial es:

    “Acabamos de enterarnos del iPhone OS4.0 y los nuevos Términos de Servicio. Si bien creemos que cumplimos totalmente con estos, estamos haciendo todo lo posible para que Apple verifique esto. Tan pronto como sepamos con precisión, por supuesto, compartiremos esa información con todo el mundo. Esperen un momento mientras hacemos que esto suceda “.

    Sé interesante para ver lo que les dice Apple.

    La cuestión es que, sin duda, decir que una aplicación debe escribirse en cierto idioma es un nombre poco apropiado, ya que una vez comstackda la aplicación, siempre se trata de un binario nativo independientemente de cómo se haya creado. Mi suposición es que lo único que pueden buscar es algún tipo de firma en el binario para detectar con qué herramienta fue construida. Un enfoque defectuoso.

    EDITAR: Hay una interesante descripción de la situación en este blog: monotouch ahora muerto en el agua, lo que significa el nuevo acuerdo de Apple para desarrolladores de iphone

    El nuevo acuerdo de licencia es explícitamente claro al respecto. Entonces SÍ, será prohibido.

    Consejos, si realmente quieres desarrollar para iPhone, prueba XCode. Si ya está familiarizado con Java o C # o aún mejor C ++, aprender Objective-C no será tan difícil.

    iPhone / iPad es el nuevo y exitoso negocio de Apple, y harán todo lo posible para que este negocio siga creciendo, tal vez no prohiban ahora las aplicaciones de Monotouch, pero ¿quién sabe cuándo se mudará? Entonces, si realmente está interesado en el desarrollo de iPhone, en lugar de tener pesadillas, su trabajo podría ser rechazado. Simplemente cambie a XCode, al menos eso disminuirá el porcentaje de rechazo de su aplicación. Por lo tanto, mi consejo.

    Creo que algo a considerar seriamente es la motivación de Apple.

    Estoy de acuerdo con otros sentimientos publicados en línea de que Apple está tratando de evitar la comoditización de las aplicaciones, es decir, tener cada vez más aplicaciones escritas utilizando marcos que generan aplicaciones que pueden ejecutarse en múltiples dispositivos.

    Pero eso no es lo que Monotouch es. Monotouch se trata de usar los marcos de Apple para escribir aplicaciones, pero a través de Mono, no de Objective-C. Entonces, desde ese punto de vista, lo que Monotouch está haciendo no es algo que realmente debería molestar a Apple.

    Todavía sostengo que es mejor para los desarrolladores escribir en el idioma nativo de la plataforma que están utilizando, ya que las cosas son generalmente más suaves cuando no se introduce un sistema que puede tener desajuste de impedancia de abstracción: los marcos Cocoa fueron construidos para ser utilizados desde Objective-C, y tienen más sentido cuando estás acostumbrado a la filosofía de Objective-C. Pero espero que Apple no permita que se use MonoTouch.

    Todo lo que Apple está diciendo es que ahora todos deben usar los idiomas de los 80 para desarrollar su competencia superando las aplicaciones móviles de vanguardia.

    Tiene mucho sentido. Me parece una estrategia ganadora.

    También evita que utilice bibliotecas de terceros que no puede garantizar que se hayan desarrollado en C, C ++ o Objective C.

    Básicamente significa que no puedes comprar en API de juegos como Unity.

    Solo agregué mis 2 centavos. Parece que después de leer esta parte: (por ejemplo, se prohíben las aplicaciones que enlazan a las API documentadas a través de una capa o herramienta de traducción intermedia o compatibilidad), no hay nada que deba discutir. Los han expresado inequívocamente. No solo están prohibiendo MonoTouch y Unity3d, parece que también están prohibiendo Titanium Framework . Sin embargo, después de leer este artículo, me encontré realmente confundido. No estoy familiarizado con las leyes de los Estados Unidos, pero ¿es legal? Quiero decir, ¿no están rompiendo algunas leyes antimonopolio?

    Además de todo esto, no puedo entender su motivación. No solo perderán en parte el interés de los desarrolladores, sino que también perderán el respeto de los desarrolladores, creo.

    A partir de hoy, la Sección 3.3.1 de la licencia del progtwig para desarrolladores de Apple iOS ahora se ha revertido al texto anterior:

    3.3.1 Las aplicaciones solo pueden usar API documentadas de la manera prescrita por Apple y no deben usar ni invocar ninguna API privada.

    Apple ha publicado una statement oficial sobre los cambios de licencia.

    Esto indicaría que ahora está permitido usar MonoTouch.

    Uno de los objectives del equipo Mono es trasladar Silverlight al iPhone por medio de MonoTouch / Moonlight para el desarrollo multiplataforma. Eso es un poco como portar Flash al iPhone. También hay Monodroid en el camino para ayudarnos a portar aplicaciones y, ya sabes, Apple funciona cada vez que alguien dice “Android” 🙂 En mi humilde opinión, si Apple se dirige a Adobe con el nuevo acuerdo, también se dirigen a Novela. Probablemente estamos especulando y hay una NDA, pero muchos de nosotros invertimos mucho tiempo en esta plataforma, así que tenemos que aclarar la situación. No podemos esperar el próximo verano para discutir este asunto. Por ejemplo, un amigo me ha pedido que ayude a su empresa a crear prototipos de una aplicación MonoTouch para un cliente. ¿El nuevo acuerdo solo afecta la distribución de la App Store? ¿Qué hay de la distribución interna?

    Esta hoja de cálculo de Google Docs tiene una larga lista de aplicaciones que se verán afectadas por el nuevo acuerdo. Algunos notables que han sido # 1 en la tienda de aplicaciones para su categoría:

    • Monopolio
    • Magnate limonada
    • Bola skee
    • Los colonos
    • Zombieville

    Una de las inclusiones divertidas es Toy Story.

    o Se han aceptado muchas aplicaciones en los últimos días escritas con la ayuda de monotouch y unity, mientras que también lo estoy usando así como obj-c, desde el anuncio y el cambio en el acuerdo, así que GO FIGURE, … the good ol’WTF viene a la mente. Es una alcancía bipolar, parece.

    TAMBIÉN, el último Unity Game GiantMOTO, que está en HOT NEW GAMES – YESTERDAY, tiene en su pantalla de bienvenida onLoad en letras grandes, POWERED BY UNITY. Entonces, todas las conjeturas, suposiciones, etc. están realmente fuera de la puerta. Podría decir todo eso en la nueva versión, ciertamente NO se aplica. Y montouch es la única plataforma de desarrollo que EXHIBE COMPLETAMENTE la API de iPhone y se comstack COMPLETAMENTE en obj-c usando XCode.

    De lo que el acuerdo de licencia dice que las aplicaciones MonoTouch claramente no estarán permitidas en la AppStore.

    La pregunta más interesante es sin embargo, ¿contra qué marco / aplicaciones lo harán cumplir? También tendrán que escribir pruebas automáticas para verificar si las aplicaciones fueron escritas de forma nativa o no, porque las personas que aprueban las aplicaciones no tendrán el tiempo o las habilidades para hacerlo en cada aplicación. Estas aplicaciones no pondrán una pegatina allí ‘Usando MonoTouch / Flash’.

    La respuesta corta a todo lo que está en el acuerdo es .

    Apple básicamente se está disparando en el pie al limitar los progtwigs a algunos idiomas:

    • C – que no es realmente adecuado para el desarrollo de aplicaciones en estos días, debido a su naturaleza de bajo nivel. Es principalmente un lenguaje de progtwigción de sistemas hoy.
    • C ++: lo que hace que disparar tu teléfono sea más difícil, pero cuando sucede, es con un bazooka. Además de Qt, no hay ningún marco de aplicación completo para usar en C ++ (y Qt aún no es compatible con iPhone).
    • Objective-C: que fue inventado por Apple y, por supuesto, será compatible.
    • JavaScript ejecutándose en WebKit, básicamente una aplicación web.

    Están limitando deliberadamente las herramientas que puede usar para desarrollar para iPhone, lo que casi con seguridad los pondrá en problemas graves. Estoy seguro de que un buen segmento de la comunidad abandonará el desarrollo de iPhone y migrará a una plataforma diferente, como Windows Mobile, Symbian, Android o Maemo, que están totalmente abiertas. Puedes escribir tu aplicación en LOLCODE.

    Además de posiblemente hacer basura de iPhone para desarrolladores, también le da un buen beso a Adobe: Apple bloquea deliberadamente Flash desde el iPad, y ahora también lo bloquean desde el iPhone. El número es la característica más grande de Adobe Flash CS5 es la implementación de aplicaciones Flash para iPhone.

    tl; dr: Apple se está disparando en el pie con este movimiento.

    Ahora son meses después de la debacle del flash y es bastante obvio que Monotouch y Unity están muy bien.

    Según “Se prohíben las aplicaciones que enlazan a API documentadas a través de una capa o herramienta de traducción intermedia o compatibilidad”

    Monotouch comstack el código en un binario nativo, no hay “capa”. Se están refiriendo a algo como un tiempo de ejecución .NET, Java JVM o tiempo de ejecución de Flash.

    Las aplicaciones mono normalmente comstackrían a bytecode, que es y requeriría una comstackción JIT (justo a tiempo) para ejecutarlas, por lo que se requiere un framework .Net o Mono framework. Sin embargo, en el caso de iOS y Android, la aplicación Mono comstack al código nativo. Por lo tanto, a los ojos de Apple, no hay una tercera capa , Apple nunca prohibirá Mono. Entonces puede sentirse libre de desarrollar con MonoTouch y distribuir sus aplicaciones. Para asegurarte aún más, hay varias aplicaciones Mono (incluyendo juegos y aplicaciones) en la AppStore que han existido por mucho tiempo.