architecture - salary - Software que "Phones Home"; ¿bueno? ¿malo? ¿Mal? ¿Qué aviso da uno? ¿Cómo?
architecture software (13)
TELÉFONO DE CASA
Todo el mundo quiere de vez en cuando. ... ¿Qué pasa con el software cuando crece y se convierte en un producto maduro? ¿No debería ser un adulto y vivir tranquilamente en su nuevo hogar? O, ¿debería mostrar algún afecto de donde vino? ...
He escuchado a algunos decir que arrancarían de los platos cualquier porción que intente comunicarse sin que ellos lo digan. También he notado una gran cantidad de productos que ahora rutinariamente solicitan permiso para enviar información de uso estadístico. Y hay muchos niveles intermedios.
Estoy sentado en la cerca.
Hay una larga explicación de párrafos acerca de cómo me llegó esta pregunta, pero por nuestro bien, la escribí y luego la eliminé. Basta con decir que soy Chief Scientist, un oficial de la compañía y jefe de nuestros esfuerzos de desarrollo; esto es realmente un gran problema y estoy buscando información de la comunidad de programación ya que no recibo ningún comentario útil aquí ...
El argumento más importante para PHONE HOME es que algunos temen que haya intentos serios de engañar el (los) contrato (s) y si el software llamara ocasionalmente a su casa, ayudaría a detectar trampas (para las cuales hay sanciones).
Otros argumentos pro son que puede proporcionar estadísticas de uso y quizás detectar cuando las actualizaciones son apropiadas.
El mayor argumento en contra es que es ofensivo.
Tampoco tengo ni idea de cómo iba a diseñar esto. Claramente, todo lo que llama a casa todo el tiempo no va a volar. Hay media docena de productos principales y algunos funcionarán 24 X 7 X 365.24 y algunos subirán y bajarán como un frigorífico yo-yo, aunque algunos datos sobre todos ellos serían buenos. ¿Repositorio local?
Luego está la estrategia de conexión: un mensaje de correo, aunque sea conveniente, puede ser una mala decisión porque puede ser más molesto (tal vez). Entonces, una simple llamada TCP ssh puede no ser tan buena tampoco.
Entonces, ¿qué tal? Si eres profesional, por favor dime por qué. Si estás en contra, ¿por qué también? Ejemplos de "hacerlo bien?" Texto contractual que te gusta en algún lugar, u odias?
Luego, si decidimos hacerlo, ¿cómo deberíamos hacerlo? ¿Cómo lo harías? ¿Por qué?
Francamente, estoy profundamente desgarrado. Odio tales cosas en general, pero como funcionario de la compañía, tengo que reconocer mis propios sentimientos, potencialmente hay mucho dinero sobre la mesa y ofenderse puede no ser un buen argumento.
Gracias por tus pensamientos
¿Beneficia al usuario?
Los usuarios pueden obtener muchos beneficios del software que llama a casa. Con "llamadas manuales" (es decir, el usuario elige un comando que deja claro que el software ahora se conectará a su servidor de alguna manera), no hay nada malo y puede, por ejemplo, simplificar el proceso de actualización, descargar muestras o complementos, mostrar su actual boletín informativo, envíe diagnósticos precisos e información de bloqueos.
Las llamadas automáticas requieren el consentimiento de los usuarios, y no deberían ser necesarias para otra función que, obviamente, es técnicamente independiente de ellas. Un uso típico serían las notificaciones de actualización, pero también las estadísticas de uso, que comienzan en el tema de beneficiarte.
A la mayoría de nuestros usuarios les gustan nuestros productos y les agradan. En ese escenario, no creo que la mayoría se opondría a una característica que nos beneficie sin dañarla.
Llamar a casa no es ofensivo. Llamar a casa para ganar un dinero extra a costa de la privacidad de los usuarios.
Aplicaciones "phon [ing] home" es un término muy genérico, usado principalmente de una manera bastante histérica ("¡iPhone se dirige a casa!", "¡Los teléfonos de Microsoft Vista están en casa!")
Cualquier software que busque actualizaciones es "llamando a casa". Simplemente no me importa si hace esto.
Por el contrario, los crapware (adware / spyware / virus) que envían tanta información como sea posible son un problema.
Supongo que depende de ...
- ..qué datos se envían
- ..si el usuario conoce los datos que se envían
Sparkle (el marco de actualización de la aplicación OS X) tiene la capacidad de enviar información básica del sistema mientras se buscan actualizaciones.
Casi todas las aplicaciones que he visto usan Sparkle tiene una opción titulada "Enviar información anónima del sistema" junto a "Buscar actualizaciones". Más importante aún, tiene un botón "Mostrar qué información se envía". Los datos enviados son cosas como el tipo de CPU (Intel o PPC), el modelo Mac (Mabook, Macbook Pro, etc.), el número de CPU y la velocidad de la CPU.
Ese es un gran sistema: a la mayoría de la gente simplemente no le importa, y les da a los desarrolladores una visión general del tipo de sistemas en los que las personas usan su aplicación. Si está paranoico al respecto, puede deshabilitar la actualización de verificación, o si desea actualizaciones automáticas, dígale que no envíe información (aparte de su dirección IP, obviamente)
No estoy seguro de que haría esto si vendiera el software y, si lo hiciera, ciertamente le daría al usuario la opción de participar, pero puedo ver un valor real al tener ciertos tipos de errores (no comunes, pero más bien inesperados) informan directamente a una base de datos de errores. Es posible que deba filtrarlos para que los duplicados se descarten, o al menos marquen como tales, en función de alguna firma del mensaje.
Para mí, los aspectos importantes son:
- Opt-in / opt-out explícito.
- Asegúrese de que hay un beneficio directo para el usuario de llamar a casa (como actualizaciones).
- Diseñe activamente su aplicación para esperar y mejorar a través de dichas actualizaciones.
- Asegúrese de proporcionar actualizaciones periódicas.
- Para los usuarios que optan por no participar, proporcione un medio manual para que puedan llamar a su casa.
- Hazlo en silencio. Las actualizaciones de Logitech realmente me decepcionan, por lo general lanzan un gran diálogo una vez a la semana diciéndome que están a punto de buscar actualizaciones, y luego otro me dice que no hay (y que nunca hay).
- Asegúrese de que la aplicación siga funcionando correctamente incluso si no puede llamar a su casa.
Phone = home examples:
Algunas empresas tienen activación de productos que requieren llamadas telefónicas periódicas para continuar trabajando. Creo que esto suena a lo que estás hablando. La Activación de Windows es algo como esto, creo.
Algunas compañías usan un sistema de llamadas telefónicas de uso directo para rastrear qué funciones usa más, o cómo usa una interfaz de usuario, etc.
Todavía otras compañías tienen cosas como informes de fallos (Microsoft toma informes de fallos que las personas les envían súper-enserio, por ejemplo) y algunos (CCNetConfig lo último que he visto) incluso permiten archivar un error allí mismo.
Nada de eso es spyware o malware.
Pro, con el consentimiento de los usuarios (o simplemente agrégalo a tu contrato) ... Para mí, se trata principalmente del seguimiento de estadísticas y soy un nazi de datos ... pero es bueno poder mostrar los números al jefe ... Puede examinar cuántas personas lo han comprado frente a cuántos realmente lo usan; cómo lo usan, cuándo, las relaciones entre el tamaño del cliente y el monto monetario del contrato, etc. A los peces gordos les encantan sus gráficos circulares, y los desarrolladores realmente necesitan una buena idea sobre qué áreas necesitan mejoras.
Otra gran razón es que su aplicación puede enviar sus comentarios directamente al equipo de desarrollo, si hay una pequeña base de clientes. De lo contrario, envíe sus comentarios a un panel de personas filtro que crearán informes y los enviarán al personal de Dev. De cualquier manera, esta característica le permite saber exactamente lo que quieren los clientes, rápida y fácilmente, sin tener que crear grupos focales y asumir que la gente de negocios le está diciendo la verdad sobre las comunicaciones con los clientes.
No es que la gente de negocios mienta a la gente del software, ni ofusque el significado de algo ... :)
Realmente depende de si confías en tus clientes y cuánto valor obtienes del esfuerzo.
Algunas personas usarán tu código de forma inapropiada. No importa lo que hagas, si es valioso, alguien lo robará. Sin embargo, estas no son ventas perdidas y no creo que lo sean. Gastar $ 1M tratando de detener esto simplemente será de $ 1M sin ROI.
Hay clientes que pagarán algunos, pero no todos, de su uso. Por lo general , esto es un descuido. Una vez que encuentren su uso excesivo, pagarán por el soporte adicional. La capacidad de controlar el propio cumplimiento es valiosa tanto para el cliente (que quiere evitar los costos legales) como para usted (ya que resultará en la compra de las licencias adecuadas). Gastar $ 1M para permitir el auto cumplimiento redundará en un retorno de la inversión (aunque la cantidad de ROI dependerá de su aplicación, su clientela y cuánto usen en exceso por accidente). El problema aquí es determinar el ROI: será difícil de cuantificar.
Asegúrate de ver esto de manera realista. Ve por el dinero que puedes conseguir, no intentes perseguir a los piratas cuyo dinero no podrías obtener de todos modos. Eso es solo tirar el dinero que podría gastarse en mejorar el producto para los clientes reales que pagan, donde podría obtener algún tipo de ROI.
Usted mencionó en sus comentarios a otra persona que la principal preocupación es con los proveedores secundarios que desean crear sus propias licencias. Si ese es el caso, enfocaría cualquier solución de software para hacerlos honestos. El beneficio más importante que vería de esta solución es que no está afectando a los usuarios finales de esta manera, solo un revendedor en el medio. Y si el acuerdo es rentable para ellos, valdrá la pena hacer lo que sea necesario para garantizar que sus actividades se desarrollen con claridad.
Por ejemplo, crea el software de generación de claves y lo distribuye a los revendedores. Este software podría comunicar automáticamente a su empresa qué licencias se generaron y cualquier otro dato relacionado. Si el software no se puede comunicar a casa, entonces las claves no se generan.
Aquí hay algunas pautas.
Llame a su casa para verificar el cumplimiento de la licencia:
- Solo en el momento de la instalación.
- Ofrezca la opción de Internet o correo electrónico.
- Use un hash identificador unidireccional.
Llame a su casa para buscar actualizaciones:
- Solo con el permiso del usuario.
- Use un identificador hash unidireccional si es necesario.
Teléfono a casa para registrar los bloqueos:
- Solo con el permiso del usuario.
- Use un identificador hash unidireccional si es necesario.
- Permitir al usuario ver la información que se pasa.
Llame a su casa para pasar información estadística:
- Solo con el permiso del usuario.
- Use un identificador hash unidireccional si es necesario.
- Permitir al usuario ver la información que se pasa.
- Encripta la información que se pasa.
"Tampoco tengo ni idea de cómo iba a diseñar esto".
Una forma simple sería escribir una aplicación que se instala junto con cada una de sus aplicaciones generadoras de ingresos. Sabe cómo determinar qué versiones de su software se está ejecutando y se puede activar para que se ejecute periódicamente o se llame desde otras aplicaciones, etc.
Necesita un servidor que simplemente publique / proporcione un mapa (pares de datos) para un producto / plataforma y una versión. Luego, la lógica comercial de determinar si una nueva versión está disponible está en el cliente. Alternativamente, puede mantener esa lógica en el lado del servidor (mucho que decir de eso) y haga que la aplicación del lado del cliente envíe una solicitud solo con la información actual de la plataforma / plataforma y se generará una respuesta ya sea que se recomiende una nueva versión o parche .
eso está fuera de mi alcance: se necesita un diseño real, especialmente porque aparentemente hay software existente por ahí.
En cuanto a verificar el uso no autorizado y recopilar estadísticas, creo que esas son ideas terribles. Las empresas se queman con eso y muchos ganan malas reputaciones.
A menos que lo vendas como un contrato de servicio que vas a controlar el estado del software, etc. y el cliente lo solicita, lo dejaría.
Encuentra una mejor manera de proteger tu software.
Creo que fue Dvorak o alguien así lo que cubrió esta vez. Estoy totalmente de acuerdo con su posición. El consentimiento informado es la mejor manera de hacerlo.
El software de envoltura retráctil debe indicar claramente en el exterior de la caja qué puertos de red se requieren, y esto se debe ampliar para incluir los requisitos de la casa del teléfono y el tipo de información recopilada.
Otro software comercial es lo mismo. Haga una lista prominente durante la instalación y en la documentación escrita, en help / about, puertos requeridos y tipo de datos transmitidos.
Creo que esto debería ser exigido por ley al igual que las listas de ingredientes de alimentos (EE. UU.).
El consentimiento informado, cuando está informado significa que el tipo, la frecuencia y el contenido de la información que enviará se le dice al cliente que es verdaderamente la única opción razonable, de lo contrario, usted comienza a parecerse mucho a un autor de malware. La gente lo descubrirá y te detestará mucho si intentas llevarlo a cabo de manera furtiva. Sin embargo, probablemente pueda y deba presentarlo como un medio para mejorar el servicio, a todos les gusta el software que informa errores por sí mismo.
Esto significa que no puede confiar en que este sea su mecanismo de detección de trampas, pero, dado que hay mucho dinero sobre la mesa, es posible que pueda realizar algunas inspecciones aleatorias. Por ejemplo, puede registrar localmente los datos que de otra forma enviaría y buscarlos en las inspecciones. No creo que esté obligado a declarar que registrará información de uso localmente (IANAL, YMMV, WTF, BBQ)
Yo tendería a usar esto con moderación. Cualquier actividad informativa debe ser opt-in en lugar de opt-out (es decir, informes de fallos, estadísticas, etc.).
Para la protección de sus activos, creo que está bien. Muchos te dirán que no dejará de hacer trampas, porque la gente puede engañarlo, pero puede ser útil. Simplemente no recopile ninguna información al respecto que pueda (realistamente) considerarse una invasión de la privacidad, y no veo ningún problema con ella. También asegúrese de que todo lo que se está haciendo se afina y se prueba lo suficientemente bien para que no afecte negativamente la experiencia del usuario. es decir, si no se conecta al intentar llamar a casa, y el software ya no funciona como resultado, podría ser un gran problema.