En primer lugar, aquí hay una idea de cómo el equipo de Gmail creó Inbox, un nuevo cliente de correo electrónico:
http://arstechnica.com/informati…
Ahora, sobre el uso de HTML en lugar de escribir clientes nativos … Hay un problema con este enfoque. Ganas portabilidad pero renuncias a una buena experiencia de usuario. Las aplicaciones web no se ven tan bien como las aplicaciones nativas, funcionan mal, las animaciones no se verán tan bien y se sentirán diferentes.
- ¿Cuánto tiempo lleva construir una aplicación para iOS o Android?
- Con el cierre de los servicios independientes de TestFlight, ¿qué sucederá con las pruebas beta empresariales?
- ¿Puedo lanzar una aplicación universal de iOS con la compatibilidad con iPad desactivada?
- ¿Cuáles son los requisitos previos para aprender a desarrollar aplicaciones iOS?
- ¿Qué quiere decir Apple cuando dice que iOS 8 incluirá soporte de calendario lunar?
Se han hecho algunos progresos y los dispositivos son más rápidos hoy en día, pero sigo pensando que no vale la pena. Intente descargar algunas aplicaciones de Android o iOS que se hicieron en HTML (que tienen animaciones y no son tan simples, porque la aplicación de una red social será compleja) y vea por usted mismo si le gustan. Entonces es su elección: portabilidad o UX. O sigue el camino de Google y gana ambos.
Independientemente de los clientes, aún necesitará una API. También respondí tu otra pregunta (creo que era tuya), sobre qué usar para la API, pero ahora que estás considerando clientes móviles, he cambiado un poco mis ideas.
Creo que debería crear un servidor API desacoplado del servidor del sitio web. Creo que ActionHero.js es un marco bastante bueno para js, o ir con un lenguaje fuertemente tipado: Java / Scala con Akka / Play o alguna otra biblioteca (Play parece una buena). Entonces ese será un servidor con solo la API. Vas a tratar con modelos de bases de datos, rutas, pruebas …
Entonces necesitarás un cliente web. Esto debería (preferiblemente) ser receptivo. Use un preprocesador HTML como Jade y uno CSS como SASS, LESS o Stylus para facilitarle la vida (lea un poco sobre la metodología BEM también). Entonces, deberías usar Angularjs con un cargador de módulos o un framework como Sails (no puedo recordar a otros buenos como este).
La diferencia entre los dos enfoques es que con angularjs todo se ejecuta en el navegador (plantillas, JavaScript, enrutamiento, modelos, todo está allí) mientras que Sails, por ejemplo, mantiene las vistas, los controladores y casi todo lo demás en el back-end. Solo sirve archivos html (con este enfoque aún necesitará algunos Javascript en el front-end: por ejemplo, manejar un clic de botón en el código).
De cualquier manera, tanto angularjs como Sails obtendrían los datos del servidor API.
Luego, los clientes móviles, también obtendrán los datos del servidor API. Es su elección si los escribe en html (puede usar su sitio web, si responde) o de forma nativa. Personalmente, prefiero un cliente nativo para cada plataforma. Sin embargo, como otros mencionaron, esto implica otros costos y consideraciones.
Pero bueno, eso es lo que estás haciendo, ¿verdad? Planificación e investigación? ¡Buena suerte!
Editar: me olvidé del escritorio. Si le faltan recursos, no necesariamente tiene que escribir clientes para el escritorio también. Facebook solo tiene uno para Windows AFAIK y Google más ninguno. Los usuarios solo pueden usar su navegador.
Pero si aún así lo desea, todo lo que puedo decir (no tengo mucha experiencia en este campo) es que va a utilizar el mismo servidor API. Luego, escribirá un cliente de Windows con Visual Studio y un Mac con xcode. O bien, puede usar una solución que transfiera su código en cada plataforma automáticamente. O simplemente envuelva su cliente web en node-webkit.
PD Mira lo que acabo de encontrar: http://xamarin.com