DOCUMENTACIÓN DE PRESENCIA DEL LADO DEL CLIENTE
CAMPO TÉCNICO Esta descripción se refiere en general a mensajería instantánea y, en particular, a manera de ejemplo, pero no de limitación, para facilitar capacidades de documentos de presencia flexibles y expandidas. ANTECEDENTES La popularidad de la mensajería instantánea ha crecido significativamente en los últimos pocos años. La mensajería instantánea se usó originalmente con el fin de enviar a alguien un mensaje corto con poco esfuerzo relativamente y esencialmente en tiempo real. La habilidad para transmitir emociones, así como también texto, fue introducida también. La mensajería instantánea fue originalmente popular principalmente para uso personal y casual entre y con amigos. Sin embargo, recientemente su uso se ha extendido al mundo de los negocios para facilitar las comunicaciones casuales y/o en tiempo real. El crecimiento global de la mensajería instantánea se debe también, en parte, debido a sus aspectos que se extienden más allá de la mera mensajería. La mensajería instantánea ahora abarca usualmente la diseminación de notificaciones de estatus a los amigos. Por ejemplo, cuando un individuo entra al sistema, se disemina una notificación de estatus de en línea para los amigos interesados. Cuando un individuo sale del sistema, se disemina una notificación de estatus de fuera de línea para los amigos interesados. A los individuos que participan en un sistema de mensajería instantánea se les da también usualmente la oportunidad de seleccionar una imagen para representarlos gráficamente. Estas imágenes gráficas, notificaciones de estatus, emoticones, etc., aumentan discutiblemente la funcionalidad, profundidad y riqueza de la mensajería instantánea. Por lo tanto, es aparente que la aceptación y uso de los programas de mensajería instantánea crecerán posiblemente conforme se agreguen nuevos aspectos. Desafortunadamente, tradicionalmente ha sido un intento difícil y tardado agregar nuevos aspectos a los sistemas de mensajería instantánea. En consecuencia, existe una necesidad de esquemas, mecanismos, técnicas, etc. , que puedan facilitar la introducción de nuevos aspectos a la mensajería instantánea. BREVE DESCRIPCIÓN La documentación de presencia del lado del cliente se implementa en una arquitectura de mensajería instantánea. En una implementación descrita, los documentos de presencia respectivos se almacenan localmente en los dispositivos del cliente respectivo. En consecuencia, la información de presencia puede ser compartida y diseminada de acuerdo con un paradigma de igual a igual. En otra implementación descrita, los documentos de presencia pueden incluir información de presencia que es extensible de acuerdo con un esquema de documentos de presencia. En consecuencia, se pueden acomodar más fácilmente nuevos escenarios de mensajería instantánea. En todavía otra implementación descrita, los nuevos mensajes de notificación de información de presencia incluyen deltas que representan los cambios a los artículos de información de presencia. Los cambios pueden ser aplicados a los artículos de información de presencia con base en las deltas para producir un nuevo documento de presencia. Si un valor de verificación calculado sobre el nuevo documento de presencia falla para igualar con un valor de confirmación recibido, entonces un cliente de destino puede solicitar una copia completa del nuevo documento de presencia actual a partir del cliente que lo origina. En la presente se describen otras implementaciones de método, sistema, enfoque, aparato, dispositivo, medios, procedimiento, API , arreglo, etc. BREVE DESCRIPCIÓN DE LOS DIBUJOS Los mismos números se usan en todos los dibujos para hacer referencia a aspectos, características y componentes similares y/o correspondientes. La Figura 1 es un diagrama de bloques de una arquitectura convencional de mensajería instantánea. La Figura 2 es un ejemplo de diagrama de bloques de una arquitectura de mensajería instantánea que incorpora documentación de presencia del lado del cliente. La Figura 3 es un ejemplo de un documento de presencia extensible.
La Figura 4 es un diagrama de bloques que ilustra un mecanismo de ejemplo para actualizar la información de presencia en un cliente de amigo usando un nuevo mensaje de notificación de documento de presencia. La Figura 5 es un diagrama de bloques que incluye un ejemplo de un nuevo mensaje de notificación de documento de presencia. La Figura 6 es un diagrama de flujo que ilustra un ejemplo de un método para actualizar la información de presencia en un cliente de destino cuando el documento de presencia de un cliente de origen es mantenido en el cliente de origen. La Figura 7 ilustra un ejemplo de un entorno operativo de computación (o dispositivo en general) que es capaz de implementar (total o parcialmente) por lo menos un aspecto de la documentación de presencia del lado del cliente como se describe en la presente. DESCRIPCIÓN DETALLADA Introducción Los sistemas convencionales de mensajería instantánea comparten la información de presencia entre usuarios almacenando un documento de presencia para cada usuario en un servidor central. Cuando dos usuarios son contactos o amigos, sus programas de cliente hacen sonar el servidor central para ver el estatus de presencia mutuamente como está almacenado en sus documentos de presencia ubicados centralmente. Estos enfoques convencionales tienen limitaciones porque el documento de presencia más bien está limitado en alcance porque está ubicado de manera remota. Además, el enfoque con base en el servidor resulta en que la información de presencia se actualice relativamente de manera lenta. Ciertas ¡mplementaciones descritas en la presente, por otra parte, crean una presencia de igual a igual que comparten la arq uitectura en la cual están almacenados localmente los documentos de presencia y compartidos de ig ual a igual. El almacenamiento de documentos localmente permite nuevos escenarios de reporte de presencia, tal como reportar que música se está tocando actualmente en un dispositivo de computación personal o la ubicación física del dispositivo/persona, especialmente con documentos de presencia extensibles. Estos documentos de presencia incrementados pueden ser compartidos a través de la(s) red(es) en una manera de igual a igual, lo cual permite q ue la información de presencia sea actualizada más rápidamente. Para reducir el ancho de banda, una implementación descrita proporciona una metodología en la cual las diferencias en campos de documento de presencia, desde la última vez que fue compartido un documento de presencia, se diseminan más bien de un documento entero de presencia actualizado. Fundamento La Figura 1 es un diagrama de bloques de una arquitectura 1 00 de mensajería instantánea convencional. Como se ilustra, la arquitectura 1 00 está dividida en un lado 1 1 1 de servidor y un lado 1 1 3 de cliente mediante una o más redes 1 09. El lado siendo 13 de cliente incluye múltiples clientes 1 01 . Específicamente, los "n" clientes se muestran : cliente #1 1 01 ( 1 ), cliente #2 1 01 (2)... cliente #n 101 (n). Sin embargo, teóricamente pueden ser servidos cualquier número de clientes 101 dentro de la arquitectura 100 de la mensajería instantánea. Se incluyen también múltiples servidores 105 y 107 como parte de la arquitectura 100 de mensajería instantánea y están interconectados vía algún tipo de red de área local (LAN) 1 15. Los servidores están bifurcados en servidores 105 de presencia y servidores 107 de conexión. Específicamente, se muestran el servidor 105(A) de presencia, el servidor 105(B) de conexión y el servidor 107(B) de conexión. Generalmente, los servidores 107 de conexión manejan conexiones de entrada y de salida a y desde el lado 1 1 1 de servidor con respecto a la red 109. Los servidores 105 de presencia mantienen y hacen disponible la información de presencia. Los servidores 105 de presencia son accedidos a través de los servidores 107 de conexión. Aunque solamente se muestran dos de cada uno de los servidores 105 de presencia y los servidores 107 de conexión, la arquitectura 100 de mensajería instantánea puede incluir cualquier número de cualquiera de tales servidores. Además, el lado 1 1 1 de servidor puede estar configurado de manera diferente; por ejemplo, el lado 1 1 1 de servidor no necesita ser bifurcado en servidores de presencia y servidores de conexión. En operación, cada cliente 101 se asocia con un servidor 105 de presencia, y cada servidor 105 de presencia se asocia con múltiples clientes 101 . La información de presencia para un cliente 101 está ubicada en el servidor 105 de presencia asociado. Como se ilustra, el cliente #1 101 (1 ) se asocia con el servidor 105(A) de presencia. En consecuencia, la información de presencia del cliente #1 101 (1 ) está ubicada en el servidor 105(A) de presencia en la forma de un documento 103(1 ) de presencia correspondiente. Aunque no se muestra explícitamente, otros clientes 101 (2)...101 (n) tienen documentos 103 de presencia correspondientes que se almacenan en el servidor 105(A) o el servidor 105(B) de presencia. En una implementación descrita, el documento 103(1 ) de presencia incluye la información de presencia para el cliente #1 101 (1 ) correspondiente. Tal información de presencia incluye tradicionalmente lo siguiente: información de estatus (por ejemplo, en línea, fuera de línea, no disponible, etc.), dirección de correo electrónico, alias, e información de contacto. Aspectos adicionales de la operación del arquitectura 100 de mensajería instantánea se describen adicionalmente en el contexto del siguiente escenario de ejemplo. El cliente #1 101 (1 ) y el cliente #2 101 (2) son amigos. En consecuencia, el cliente #2 101 (2) es notificado de cambios a la información de presencia del documento 103 (1 ) de presencia por la arquitectura 100 de mensajería instantánea. Los servidores 107 de conexión se asignan típicamente a clientes 101 usando un algoritmo de balance de carga. En este escenario de ejemplo, se supone que el cliente #1 101 (1 ) se conecta a la infraestructura del lado de servidor de la arquitectura 100 de mensajería instantánea a través del servidor 107 (A) de conexión y ese cliente #2 101 (2) se conecta a través del servidor 107 (B) de conexión. Aunque no se ilustra específicamente, el lado 1 1 1 de servidor mantiene usualmente cuatro listas para cada cliente 101 para facilitar la implementación de los aspectos de la arquitectura 100 de mensajería instantánea. Estas cuatro listas se almacenan típicamente en los servidores 105 de presencia. Las cuatro listas son: (1 ) una lista de avance, (2) una lista de paso, (3) una lista de bloqueo, y (4) una lista de reversa dinámica (DRL). Estas cuatro listas pueden ser consideradas como parte de un perfil de presencia global del cliente 101. Estas listas se describen más adelante en términos del cliente #1 101 (1 ). Se debe entender que aunque los términos "amigos" y "contactos" se usan en la presente de manera intercambiable con clientes, los términos "amigos", "contactos" y/o "clientes" son intercambiables también con un usuario corriente de un dispositivo de cliente. La lista de avance incluye aquellos clientes 101 que son amigos del cliente #1 101 (1 ) y ese cliente #1 101 (1 ) está interesado normalmente en ser actualizado. La lista de paso incluye aquellos amigos que han sido autorizados para recibir la información de presencia y actualizaciones de los mismos que corresponden al cliente #1 101 (1 ). La lista de bloqueo incluye aquellos amigos que están excluidos específicamente para recibir la información de presencia o actualizaciones de los mismos del cliente #1 101 (1 ). La DRL incluye aquellos clientes 101 que están monitoreando normalmente al cliente #1 101 (1 ) a través de la arquitectura 100 de la mensajería instantánea. En este escenario de ejemplo, se supone que el cliente #1 101 (1 ) ya está en línea y que el cliente #2 101 (2) ha recibido notificación previamente de este estatus en línea porque el cliente #2 101 (2) se ha suscrito para recibir la información de presencia correspondiente al cliente #1 101 (1 ). En una primera etapa, el cliente #1 101 (1 ) sale de la línea. En una segunda etapa, este estatus fuera de línea se comunica del cliente #1 101 (1 ) al servidor 107 (A) de conexión (por ejemplo, usando un programa de cliente de mensajería instantánea (no mostrado por separado) en el cliente #1 101 (1 )). El servidor 107(A) de conexión determina que el cliente #1 101 (1 ) está asociado con el servidor 105 (A) de presencia (por ejemplo, vía un algoritmo de numeración o similar). En la etapa tres, el servidor 107(A) de conexión envía una notificación al servidor 105(A) de presencia del estatus fuera de línea del cliente #1 101 (1 ). El servidor 105(A) de presencia determina cuáles clientes 101 necesitan ser notificados de este cambio de estatus mediante consulta a la DRL correspondiente al cliente #1 101 (1 ). En este escenario de ejemplo, por lo menos el cliente #2 101 (2) está en la DRL correspondiente al cliente #1 101 (1 ). Así, el servidor 105(A) de presencia envía un mensaje de estatus actualizado que indica que el cliente #1 101 (1 ) ha salido de línea al cliente #2 101 (2) vía el servidor 107(B) de conexión. Un programa de cliente de mensajería instantánea en el cliente #2 101 (2) recibe el mensaje de estatus actualizado y presenta una indicación de que el cliente #1 101 (1 ) ha salido de línea. La arquitectura 100 de mensajería instantánea de la Figura 1 es capaz de implementar efectivamente aspectos básicos de mensajería instantánea. Sin embargo, la arquitectura 100 de mensajería instantánea tiene un número de desventajas e inconvenientes. Primero, la cantidad de información de presencia que puede ser mantenida y diseminada está restringida. Debido a las restricciones de almacenamiento intrínsecas en el lado 1 1 1 de servidor, la cantidad de información de presencia por cliente que puede ser mantenida está limitada efectivamente. Segundo, la actualización de software, protocolos, esquemas, etc. , en el lado 1 1 1 de servidor es relativamente más difícil, tardada, riesgosa y costosa. En consecuencia, la incorporación de nuevos aspectos en el lado 1 1 1 de servidor es emprendida usualmente mucho menos frecuentemente en comparación con el lado 1 13 del cliente. Esto retarda significativamente la habilidad para innovar la arquitectura 100 de mensajería instantánea. Tercero, el enrutamiento de mensajes actualizados de notificación a través de uno o más servidores en el lado 1 1 1 de servidor consume tiempo de transmisión y procesamiento. La latencia global adicional resulta en actualizaciones relativamente más lentas de la información de presencia de uno en los dispositivos de los amigos de uno. Documentación de Presencia del Lado del Cliente La incorporación de información de presencia en los dispositivos de los clientes permite que se almacene una mayor cantidad de información de presencia para cada cliente, facilita la innovación mediante por lo menos desacoplar parcialmente las mejorías para una arquitectura de mensajería instantánea de cambios a la infraestructura del lado del servidor, y acelera la diseminación de actualizaciones de documento de presencia permitiendo que el lado de servidor sea derivado o evitado por lo menos parcialmente. La Figura 2 es un ejemplo de diagrama de bloques de una arquitectura 200 de mensajería instantánea que incorpora documentación de presencia del lado del cliente. En una implementación descrita, la arquitectura 200 de mensajería instantánea está separada en un lado 220 de servidor y un lado 222 de cliente. Una o más redes 206 separan efectivamente la arquitectura 200 de mensajería instantánea en un lado 222 de cliente y un lado 220 de servidor. La red 206 puede abarcar una I nternet, una red telefónica pública conmutada (PSTN), una red de área local (LAN), una red de área amplia (WAN) , una red inalámbrica o alámbrica, algunas combinaciones de las mismas y así sucesivamente. El lado 222 de cliente incluye múltiples clientes 202. Como se ilustra, "n" clientes son capaces de comunicarse con el lado 220 de servidor. Estos "n" clientes incluyen el cliente #1 (C 1 ) 202(1 ) , el cliente #2 (C2) 202(2) ... el cliente #n (Cn) 202(n) . Sin embargo, cualquier número de clientes 202 pueden ser teóricamente operativos dentro de la arquitectura 200 de mensajería instantánea.
El lado 220 del servidor incluye por lo menos un servidor 204. Especialmente en una arquitectura 200 de mensajería instantánea que incorpora documentación de presencia del lado del cliente, el lado 220 del servidor se puede realizar en una miríada de configuraciones. Por ejemplo, el por lo menos un servidor 204 puede abarcar alternativamente uno o más servidores de conexión y uno o más servidores de presencia. Generalmente, el por lo menos un servidor 204 puede abarcar un sólo servidor, múltiples servidores conectados a una o más LANs, múltiples servidores distribuidos en la red 206, alguna combinación de los mismos y así sucesivamente. Los clientes 202 y el servidor 204 son capaces de comunicarse entre ellos vía la red 206. El servidor 204 almacena información 214 del cliente durante por lo menos una porción de clientes 202 (1 ...n). Como se ilustra, el servidor 204 almacena información 214 (1 ) del cliente #1 . Sin embargo, en la arquitectura 200 de mensajería instantánea la información 214 (1 ) del cliente #1 no necesita incluir un documento de presencia. En su lugar, la información 214 (1 ) del cliente #1 incluye una identificación del documento de presencia del cliente #1 (PD-C1 ) 224. La identificación de PD-C1 224 puede ser, por ejemplo, un nombre del PD-C1 , una referencia al PD-C1 , un señalador al PD-C1 , una ubicación del PD-C1 , un asa a un objeto que identifica el PD-C1 , alguna combinación de los mismos y así sucesivamente. Así, la identificación de PD-C1 identifica el PD-C1 208, el cual está ubicado en el cliente #1 (C) 202 (1 ) en la implementación de la documentación de presencia del lado del cliente de la arquitectura 200 de mensajería instantánea. La información 214 (1 ) del cliente #1 puede incluir también otra información relativa al cliente #1 , tal como cualquiera o todas las cuatro listas antes descritas en la presente (por ejemplo, la DRL). En una implementación descrita, el cliente #1 202 (1 ) incluye un mensaje instantáneo o el programa 212 de cliente de mensajería y un documento de presencia relativo para el cliente #1 (PD-C1 ) 208. El PD-C1 208 incluye información del documento (PD) de presencia que es extensible 210. Incorporando información 210 de PD extensible se crea un PD-C1 extensible 208. Debido a que PD-C1 208 es extensible, tipos nuevos, diferentes y/o variables de información de presencia puede ser introducidos, expandidos, aumentados y/o alterados más fácilmente en la arquitectura 200 de mensajería instantánea. Un esquema extensible de ejemplo para PD-C1 208 se describe adicionalmente en la presente más adelante con referencia en particular a la Figura 3. Una implementación de arquitectura 200 de mensajería instantánea se describe adicionalmente en la presente usando el siguiente escenario de ejemplo. El cliente #2 202 (2) incluye también un cliente 212 de mensaje instantáneo (no ilustrado explícitamente) y ha agregado el cliente #1 202 (1 ) a su lista de amigos 216 (por ejemplo, la lista de avance del cliente #2). El cliente #2 202 (2) se ha suscrito igualmente para recibir la información de PD del cliente #1 202 (1 ) siendo agregado a la DRL correspondiente al cliente #1 202 (1 ). Como se describe adicionalmente en la presente más adelante, la DRL puede estar ubicada en el servidor 204 y/o el cliente #1 202 (1 ) . En consecuencia, el cliente #2 202 (2) lejano es provisto con la información de PD del cliente #1 21 8 y actualiza al mismo. Como se indicó antes, esta información de PD es extensible en una implementación descrita. La Figura 3 es un ejemplo de un documento de presencia extensible para el cliente #1 (PD-C1 ) 208. El PD-C1 208 incluye información de documento de presencia que es extensible 21 0. En una implementación descrita, la información de PD 21 0 extensible incluye múltiples lengüetas 302 respectivas que están asociadas con campos 304 múltiples de información de presencia respectivos. Como se ilustra, la lengüeta 302 (1 ) está asociada con el campo 304 (1 ) de información de presencia, la lengüeta 302 (2) está asociada con el campo 304 (2) de información de presencia ... la lengüeta 302 (m) está asociada con el campo 304 (m) de información de presencia. Debido a que las lengüetas 302 respectivas indican el significado de la información de presencia en los campos 304 respectivos, la información de presencia puede extenderse para incluir nuevos tipos de información de presencia. Un esquema, por ejemplo, puede ser usado para definir y/o explicar las lengüetas 302 disponibles o incluidas y sus significados correspond ientes. U n esquema de ejemplo para documentos de presencia extensibles es : <presencia_doc> <presencia_artículo_1 attr1 =foo>valor</presencia_ artículo_1 > <presencia_ artículo_2attr2=bar> algún otro valor</ presencia_ artículo_2> </presencia_doc>. Así, para una categoría musical, se le puede dar a un atributo del artista el valor del nombre del intérprete, y se le puede dar a un atributo de la canción el valor del título de la canción. Un formato de ejemplo para un documento de presencia extensible es un lenguaje de beneficio extensible (XML), pero se pueden emplear otros formatos alternativamente. Ejemplos de información de presencia que se pueden incluir como parte de un documento de presencia extensible incluyen, pero no están limitados a: información de estatus predeterminada (por ejemplo, en línea, fuera de línea, lejos, ocupado, en el teléfono, etc.), sitio de red actual que se está viendo, música actual que se está escuchando, otros amigos de contacto que se les está enviando mensajes instantáneos actualmente, una ubicación física actual, un mensaje de estatus personal, un programa de software que se está ejecutando (por ejemplo, un juego, un procesador de palabras, etc.), una reunión a la que se está asistiendo actualmente, información de dirección sobre cómo conectarse con un usuario en un modo de igual a igual, una ubicación de blog de usuario, si se está conduciendo o no actualmente una sesión de cámara de red o conversación por audio, un estatus de panorama actual, una información de dirección de usuario para propósitos de contacto en vivo, una escucha de punto final de red para conexiones de igual a igual para protocolo de inicio de sesión (SIP), cualquier otra cosa que alguien podría querer compartir sobre sí mismo y/o actividades en línea de uno con otros usuarios, alguna combinación de los mismos y así sucesivamente. La Figura 4 es un diagrama de bloque que ilustra un mecanismo
400 de ejemplo para información de presencia de actualización en un cliente de amigo usando un nuevo mensaje 402 de notificación de documento de presencia. El escenario de ejemplo antes introducido con referencia a la Figura 2 se continúa para el mecanismo 400. Inicialmente, la información de PD para el amigo C1 218, el cual es un amigo de contacto del cliente #2 202 (2), se conoce en el cliente #2 202 (2). Un programa 212 de cliente de mensaje instantáneo (no mostrado explícitamente) del cliente #2 202 (2) puede desplegar información de PD del amigo C1 218 a un usuario del cliente #2 202 (2). Para una implementación descrita, el mecanismo 400 se explica en términos de 4 (1 -4) fases que están indicadas en la Figura 4 con números circulados y flechas asociadas. En una primera fase, la información de PD (por ejemplo, información 210 de PD de PD-C1 208) sufre un cambio. Este cambio podría ser una adición de nueva información o una alteración o eliminación de información existente. En otras palabras, y a manera de ejemplo solamente, el cliente #1 202 (1 ) puede empezar a escuchar música o puede cambiar a una nueva fuente de canciones/música. Como parte de la primera fase, se envía un nuevo mensaje 402 de notificación (información) de PD del cliente #1 202 (1 ) al servidor 204. En una segunda fase, el servidor 204 accede la DRL para el cliente #1 202 (1 ) y extrae aquellos clientes 202 que están monitoreando actualmente al cliente #1 202 (1 ). En un escenario de ejemplo, estos clientes 202 incluyen al cliente #2 202 (2). El servidor 204, por lo tanto, envía un nuevo mensaje 402 de notificación de PD a los clientes 202 en la DRL correspondiente al cliente #1 202 (1 ), incluyendo el cliente #2 202 (2). Una formulación de ejemplo para un nuevo mensaje 402 de notificación de PD se describe adicionalmente en la presente más adelante con referencia en particular a la Figura 5. Adicionalmente, una implementación alternativa descrita en la presente más adelante con referencia en particular a la Figura 5 involucra (por lo menos una copia de) la DRL para el cliente #1 202 (1 ) que se ubica en el cliente #1 202 (1 ) y siendo usada por el cliente #1 202 (1 ) para reducir o eliminar la participación del servidor 204 en ciertas acciones del sistema de mensajería instantánea. En una tercera fase, el cliente #2 202 (2) solicita una actualización de información del documento de presencia para C1 218 del cliente #1 202 (1 ) usando un nuevo mensaje 404 de solicitud de PD. El programa 212 del cliente de mensajes instantáneos en el cliente #1 101 (1 ) recibe un nuevo mensaje 404 de solicitud de PD del cliente #2 202 (2). En respuesta a la recepción del nuevo mensaje 404 de solicitud de PD, en una cuarta fase el programa 212 de cliente de mensajería instantánea envía un nuevo mensaje 406 (información) de PD desde el cliente #1 101 (1 ) para el cliente #2 202 (2). El nuevo mensaje 406 de PD incluyen por lo menos aquella parte de la información de PD 210 que ha sido cambiada y tanto como la totalidad de PD-C1 208. Después de recibir un nuevo mensaje 406 de PD, el cliente #2 202 (2) puede actualizar la información de PD para el amigo C1 218 y despliega opcionalmente la información 218 de PD actualizada. Como se ilustra en la Figura 4, un nuevo mensaje 404 de solicitud de PD y un nuevo mensaje 406 de PD se intercambian puramente de igual a igual sin enrutar a través del servidor 204. Sin embargo, cualquiera o ambos de estos mensajes 404 y 406 pueden ser enrutados alternativamente a través de uno o más servidores tal como el servidor 204. Los mensajes 402, 404 y 406 pueden referirse a un documento de presencia entero (por ejemplo, todos los PD-C1 208). Alternativamente, uno o más de estos mensajes 402, 404, y 406 se pueden referir a solamente una porción de PD-C1 208. Por ejemplo, un programa de cliente de mensajería instantánea del cliente #2 202 (2) podría ser capaz de analizar el nuevo mensaje 402 de notificación de PD para determinar si toda o solamente parte de la información 210 de PD se requiere para actualizar completamente la información de PD del amigo C1 218. Un ejemplo de esta implementación de ahorro de banda ancha se describe adicionalmente en la presente más adelante con referencia en particular a las Figuras 5 y 6. La Figura 5 es un diagrama de bloques que incluye un ejemplo de un nuevo mensaje 402* de notificación de documento de presencia.
El nuevo mensaje 402* de notificación de PD es un ejemplo específico del nuevo mensaje 402 de notificación de PD en general (de la Figura 4). Como se ilustra, el nuevo mensaje 402* de notificación de PD incluye una identificación del cliente #1 502, una identificación de PD-C1 504, y una o más (por ejemplo, "k") deltas 506 (1 -k) de PD. Estas tres porciones 502, 504, y 506 de ejemplo del nuevo mensaje 402* de modificación de PD se describen más adelante. En la Figura 5 global, en una primera fase, por un cambio a la información de presencia de PD-C1 208 en el cliente #1 202 (1 ), se trasmite el nuevo mensaje 402* de notificación de PD desde el cliente #1 202 (1 ) al servidor 204. En una segunda fase, después de consultar una DRL para el cliente #1 202 (1 ), se transmite un nuevo mensaje 402* de notificación de PD desde el servidor 204 a aquellos clientes que se han suscrito a la información de presencia del cliente #1 202 (1 ), como se indica por sus estadías enlistadas en la DRL. En la Figura 5, los dos clientes 202 que reciben el nuevo mensaje 402* de notificación de PD son el cliente #2 202 (2) y el cliente #3 202 (3). Para una primera porción de ejemplo del nuevo mensaje 402* de notificación de PD, la identificación 502 del cliente #1 indica la identidad del cliente #1 202 (1 ) originador. Generalmente, una versión del nuevo mensaje 402* de notificación de PD que es transmitido desde el cliente #1 202 (1 ) al servidor 204 puede diferir de una versión de nuevo mensaje 402* de notificación de PD que es transmitido desde el servidor 204 a uno o más clientes 202 (2) y 202 (3) de divulgación o destino. Por ejemplo, la identificación 502 del cliente #1 puede ser omitida de la versión del nuevo mensaje 402* de notificación de PD que es transmitido desde el cliente #1 202 (1 ) al servidor 204 porque el cliente originador es implícitamente conocido o determinable por el servidor 204. Para una segunda porción de ejemplo del nuevo mensaje 402* de notificación de PD, la identificación de PD-C1 504 identifica a PD-C1 208. La identificación de PD-C1 504 proporciona suficiente información para permitir que los clientes 202 amigos interesados adquieran el PD-C1 208 directa o indirectamente. Por ejemplo, la identificación de PD-C1 504 puede ser idéntica a la identificación de PD-C1 224, la cual está almacenada en el servidor 204 y puede abarcar una referencia a PD-C1 208. Así, puede permitir que el cliente 202 de divulgación recupere directamente el PD-C1 208 del cliente #1 202 (1 ). Alternativamente, puede otorgar poderes meramente a los clientes 202 de divulgación para solicitar un tercer dispositivo (por ejemplo, servidor 204, otro servidor, otro cliente 202, una entidad diferente, etc.) para proporcionar el PD-C1 208. A manera de ejemplo solamente, la identificación de PD-C1 504 puede comprender un nombre de tienda de objeto, y el PD-C1 208 puede almacenarse en una tienda de objetos del cliente #1 202 (1 ). Las tiendas de objetos se describen en la Solicitud de Patente de E. U. co-pendiente que se titula "Tienda de Objetos de Mensajería Instantánea", Solicitud No. 10/61 1 ,599, presentada el primero de julio de 2003. Esta Solicitud de Patente de E. U . No. 10/61 1 ,599 tiene el mismo cesionario que la solicitud de Patente del momento.
La solicitud de Patente de E. U . No . 1 0/61 1 ,599 se incorpora por referencia en su totalidad en la presente. Sin embargo, en la presente se ofrece una breve descripción de una modalidad de la tecnología de tienda de objetos para mensajería instantánea. Las tecnologías de tienda de objetos habilitan a los dispositivo respectivos para almacenar información en sus tiendas de objetos respectivas. Además, las tecnologías de tiendas de objetos habilitan a un dispositivo para ubicar y recuperar información que está almacenada en otra tienda de objetos de otro dispositivo. Cuando se almacena información en una tienda de objetos, la tienda de objetos proporciona un nombre de la tienda de objetos que permite a cualq u ier dispositivo configurado apropiadamente ubicar la información a partir del nombre de la tienda de objetos. En consecuencia , el nombre de la tienda de objetos de información , tal como u n documento de presencia, puede ser pasado alrededor para permitir el acceso a la información mediante y desde otros dispositivos. En una implementación descrita de la solicitud de Patente No. 1 0/61 1 ,599 antes mencionada, cada nombre de tienda de objetos comprende una cuerda y es hasta de u n kilobyte de longitud . El nombre de la tienda de objetos incluye, por ejemplo, un valor numerado que cambia para cada entidad de información , un nombre del arch ivo q ue tiene la información en una memoria del dispositivo del cliente, un nombre de usuario del d ispositivo del cliente y el tipo de información almacenada . U na situación de actualización de información de presencia de ejemplo en el contexto de la tecnología de tiendas de objetos es como sigue: primero, una canción que está siendo tocada en un dispositivo de origen, cambia. Segundo, la nueva canción se escribe en un archivo de documento de presencia (por ejemplo, que esta formateado en un lenguaje de margen de ganancia extensible (XML)). Tercero, el archivo de documento de presencia cambiado se guarda en la tienda de objetos. Cuarto, la tienda de objetos proporciona un nuevo nombre de tienda de objetos para este documento almacenado. Quinto, el dispositivo de origen notifica al servidor central del nuevo nombre de tienda de objetos del documento de presencia. Sexto, el servidor envía el nuevo nombre de tienda de objetos del documento de presencia a los dispositivos de destino que se han suscrito para ser amigos del dispositivo de origen. Séptimo, los dispositivos de destino reciben el nuevo nombre de tienda de objetos del documento de presencia. Octavo, los dispositivos de destino aseveran que el documento de presencia ha cambiado con base en el nuevo nombre de tienda de objetos del documento de presencia. Noveno, los clientes de destino pueden usar el nuevo nombre de tienda de objetos del documento de presencia para solicitar una copia del nuevo documento de presencia a partir del dispositivo de origen. Con referencia otra vez a la Figura 5, para una tercera porción de ejemplo de nuevo mensaje 402* de notificación de PD, las deltas 506 (1 -k) de PD comprenden deltas "k" o diferencias de información de presencia de PD-C1 208. En otras palabras, en lugar de transmitir automáticamente la totalidad de PD-C1 208 a clientes 202(2) y 202(3) amigos interesados, el cliente #1 202 (1 ) transmite los cambios para artículo(s) de información de presencia individual(es). Así, si han cambiado tres artículos de información de presencia, una delta 506 (1 ) de PD, una delta 506 (2) de PD, y una delta 506 (3) de PD están incluidas en el nuevo mensaje 402* de notificación de PD. Como se indicó antes, el ancho de banda consumido por el sistema de mensajería instantánea puede ser reducido si las diferencias de información de presencia son enviadas a clientes 202 de divulgación en lugar de enviar automáticamente el PD-C1 208 entero por cada cambio de información de presencia. Cuando un cliente 202 amigo interesado, tal como el cliente #2 202 (2), recibe un nuevo mensaje 402* de notificación de PD, el cliente #2 202 (2) instituye los cambios de información de presencia indicados por las deltas 506 (1 -k) de PD. En este sentido, el nuevo mensaje 402 (y 402*) de notificación de PD comprende de manera más general un nuevo mensaje de notificación de presencia de información (Pl). Después, el cliente #2 202 (2) puede calcular un nuevo valor de verificación con base en las nuevas versiones de la información de presencia del cliente #1 202 (1 ). Este valor de verificación se compara con un valor de confirmación (no mostrado explícitamente en la Figura 5) que se incluye como parte del nuevo mensaje 402* de notificación de PD. Si los dos valores son equivalentes, el nuevo mensaje 402* de notificación de PD ha sido manejado apropiadamente. Si, por otra parte, el nuevo valor de verificación no es equivalente al valor de confirmación recibido, entonces el cliente #2 202 (2) solicita el PD-C1 208 completo del cliente #1 202 (1 ). Este procedimiento se describe adicionalmente más adelante con referencia en particular a la Figura 6. Como una implementación alternativa de ejemplo, el servidor 204 puede ser omitido completa o parcialmente de la arquitectura de mensajería instantánea como sigue. Una o más de las cuatro listas antes descritas pueden ser almacenadas en los clientes 202 en lugar de en el servidor 204. Por ejemplo, una DRL para el cliente #1 202 (1 ) puede ser almacenada en el cliente #1 202 (1 ). Así, cuando el cliente #2 202 (2) se suscribe al sistema de mensajería instantánea para monitorear normalmente la información de presencia del cliente #1 202 (1 ), el cliente #1 202 (1 ) agrega al cliente #2 202 (2) a la DRL ubicada en el cliente #1 202 (1 ). Cuando cambia un artículo de la información de presencia, el cliente #1 202 (1 ) puede acceder la DRL almacenada localmente y enviar un nuevo mensaje de notificación de Pl directamente al cliente #2 202 (2) sin usar al servidor 204 como un intermediario. La Figura 6 es un diagrama 600 de flujo que ilustra un ejemplo de un método para actualizar la información de presencia en un cliente de destino cuando el documento de presencia de un cliente de origen es mantenido en el cliente de origen. El diagrama 600 de flujo incluye catorce (14) bloques. Aunque las acciones del diagrama 600 de flujo pueden ser efectuadas en otros entornos y con una variedad de combinaciones de hardware y software, las Figuras 2 a 5 se usan en particular para ilustrar ciertos aspectos y ejemplos del método. A manera de ejemplo solamente, las cuatro (4) acciones 602 a 608 del diagrama 600 de flujo pueden ser efectuadas mediante un cliente 212 del programa de mensajería instantánea en un cliente 202 (O) de origen (por ejemplo, el cliente #1 202 (1 )), y las diez (10) acciones 610 a 628 pueden ser realizadas por un cliente 212 del programa de mensajería instantánea en un cliente 202 (D) de destino/divulgación (por ejemplo el cliente #2 202 (2)). En el bloque 602, se detecta si hay un cambio en la información de presencia. Por ejemplo, el cliente 202 (O) de origen puede detectar si/cuando ocurre un cambio en su información de presencia. La detección continúa hasta que se detecta un cambio. Después de que se detecta (en el bloque 602) un cambio, en el bloque 604 se formula un nuevo mensaje de notificación de información de presencia (Pl). Por ejemplo, el cliente 202 (O) de origen puede formular un nuevo mensaje de notificación de Pl similar al nuevo mensaje 402* de notificación de PD. Por ejemplo, el nuevo mensaje de notificación de Pl puede incluir una identificación del cliente 202 (O) de origen, una identificación del PD del cliente 202 (O) de origen (por ejemplo, una referencia al documento de presencia), por lo menos una delta de Pl y un valor de confirmación. El valor de confirmación puede ser, por ejemplo, un valor numerado determinado que responde al nuevo PD. En el bloque 606, el nuevo mensaje de notificación de Pl es enviado a clientes amigos. Por ejemplo, el nuevo mensaje de notificación de PD puede ser enviado desde el cliente 202 (O) de origen a aquellos clientes amigos que están enlistados en la DRL del cliente 202 (O) de origen . En este ejemplo, aquellos clientes amigos incluyen al cliente 202 (D) de destino. El nuevo mensaje de notificación de Pl puede ser enviado desde el cliente 202 (O) de origen al cliente 202 (D) de destino a través de la red 206 ya sea vía el servidor 204 o directamente (es decir, directamente derivando al servidor 204 usando una DRL almacenada localmente) . En el bloque 61 0, se recibe el nuevo mensaje de notificación de Pl . Por ejemplo, el nuevo mensaje de notificación de Pl puede ser recibido en el cliente 202 (D) de destino. En el bloque 612, se verifica si el nuevo P l ya existe. Por ejemplo, el cliente 202 (D) de destino puede comparar el valor de confirmación recibido (i) con un valor de verificación existente correspondiente al PD para el cliente 202 (O) de origen como ya almacenado en el cliente 202 (D) de destino y/o (ii) con un valor de confirmación recibido previamente. Si por alguna razón el Pl ya ha sido actualizado, entonces el diagrama de flujo termina en el bloque 624. De otra manera, el nuevo P l ya no existe, y el método continúa en el bloque 614. En el bloque 614, se verifica si existe u na vieja versión del PD . Por ejemplo, se puede verificar si una versión previa del PD para el cliente 202 (O) de origen ya existe en el cliente 202 (D) de destino. Si no, entonces el método continúa en el bloque 628, el cual se describe adicionalmente en la presente más adelante. Si , por otra parte, no existe una versión previa del PD en el cliente 202 (D) de destino, entonces el método continúa en el bloque 61 6. En el bloq ue 61 6, la información de presencia es actualizada usando las deltas recibidas. Por ejemplo, el cliente 202 (D) de destino puede actualizar la Pl en el PD correspondiente al cliente 202 (O) de origen con base en la por lo menos una delta de Pl recibida con el nuevo mensaje de notificación de Pl. Por ejemplo, el valor previo de Pl puede ser reemplazado por el valor delta recibido. Los campos 304 de Pl diferentes puede ser identificados mediante lengüetas 302 asociadas. En el bloque 618, se calcula un nuevo valor de verificación. Por ejemplo, el cliente 202 (D) de destino puede calcular un nuevo valor de verificación que responde al nuevo PD actualizado con las deltas de Pl. El valor de verificación puede ser calculado, por ejemplo, usando un algoritmo de numeración, tal como una numeración criptográfica. Ejemplos de números criptográficos incluyen SHA-1 , MD5 y así sucesivamente. Otra operación o procedimiento de verificación de ejemplo puede utilizar deltas que abarcan la información de cambio real y un número de versión. Con tal implementación de número de delta/versión, si un número de versión actual de un cliente lejano para el amigo es uno menor que uno recibido en el nuevo mensaje de PD, el cliente lejano puede aplicar el (los) cambio(s) para igualar el PD para el número de versión más reciente. Si, sin embargo, el número de versión del cliente lejano difiere en más de uno, es aparente que el cliente lejano perdió una o más actualizaciones del amigo y que el cliente de mensajería instantánea lejano necesita obtener una nueva versión completa del PD.
En el bloque 620, se determina si el valor de confirmación recibido es equivalente al valor de verificación calculado. Por ejemplo, se puede determinar si el valor de confirmación recibido en el nuevo mensaje de notificación de Pl es equivalente (por ejemplo, igual) al valor de verificación calculado que responde al nuevo PD actualizado con las deltas de Pl . Si no (por ejemplo porque un cliente lejano estuvo fuera de línea durante una o más actualizaciones previas de tipo delta de un cliente amigo), entonces el método continúa en el bloque 628, el cual se describe adicionalmente en la presente más adelante. Si, por otra parte, el valor de confirmación recibido se determina que es equivalente al valor de verificación calculado, entonces el método continúa en el bloque 622. En el bloque 622, se almacena el nuevo PD actualizado. Por ejemplo, el PD actualizado que corresponde al cliente 202 (O) de origen puede ser almacenado en el cliente 202 (D) de destino. La Pl actualizada puede ser desplegada también o de otro modo comunicada a un usuario del cliente 202 (D) de destino. En otras palabras, desde una perspectiva más general, el PD actualizado puede ser utilizado almacenándolo, comunicando la Pl a un usuario, realizando de otra manera una acción relacionada con la mensajería instantánea, y así sucesivamente. En el bloque 624, termina el método del diagrama 600 de flujo. La(s) acción(es) del bloque 628 se realiza(n) cuando el cliente 202 (D) de destino no tiene una versión vieja del PD del cliente 202 (O) de origen (como se asevera en el bloque 614) o cuando una nueva versión actualizada del PD del cliente 202 (O) de origen no confirma ser preciso (por ejemplo, mediante una comparación de valores numéricos en el bloque 620). En el bloque 628, se recupera una copia del PD completo a partir del cliente de origen. Por ejemplo, el cliente 202 (D) de destino puede solicitar del cliente 202 (O) de origen vía un nuevo mensaje 404 de solicitud de PD un PD completo del cliente 202 (O) de origen. Esta solicitud puede ser efectuada usando la identificación del PD del cliente 202 (O) de origen (y/o la identificación del cliente 202 (O) de origen). En el bloque 608, se proporciona una copia del PD completo por solicitud. Por ejemplo, el cliente 202 (O) de origen puede proporcionar un PD-C1 208 al cliente 202 (D) de destino en un nuevo mensaje 406 de PD. Después de recibir una copia del PD completo desde el cliente de origen (con la recuperación del bloque 628), en el bloque 626 se almacena el PD real completo en el cliente de destino. Alternativamente, y de manera más general, el PD completo real se utiliza en el cliente 202 (D) de destino. El método del diagrama 600 de flujo termina en el bloque 624. Los dispositivos, acciones, aspectos, características, funciones, procedimientos, módulos, estructuras de información, programas, componentes, etc. , de las Figuras 1 a 6 se ilustran en diagramas que están divididos en bloques múltiples. Sin embargo, el orden las interconexiones, las interrelaciones, la distribución, etc., en las cuales se describen y/o muestran las Figuras 1 a 6 no se pretende que se interpreten como una limitación , y se puede modificar, combinar, rearreglar, aumentar, omitir, etc., cualquier número de los bloques, en cualquier manera para implementar uno o más sistemas, métodos, dispositivos, procedimientos, medios, aparatos, APIs, esquemas, arreglos, etc. , para documentación de presencia del lado del cliente. Además, aunque la descripción en la presente incluye referencias a implementaciones específicas (incluyendo un dispositivo general de la Figura 7), las implementaciones ilustradas y/o descritas pueden ser implementadas en cualquier hardware, software, firmware o combinación de los mismos y usar cualquier formulación(es) de documento de presencia adecuada(s), esquema(s) de documento de presencia, protocolo(s) de transmisión, formato(s) de mensaje y/o algoritmo(s) de verificación y así sucesivamente. ENTORNO DE OPERACIÓN DE EJEMPLO PARA COMPUTADORA U
OTRO DISPOSITIVO La Figura 7 ¡lustra un entorno 700 de operación de computación
(o dispositivo en general) de ejemplo que es capaz de (total o parcialmente) implementar por lo menos un sistema, dispositivo, aparato, componente, arreglo, protocolo, enfoque, método, procedimiento, medios, inferíase de programación de aplicación (API), esquemas, alguna combinación de los mismos, etc., para documentación de presencia del lado del cliente como se describe en la presente. El entorno 700 de operación puede ser utilizado en la computadora y arquitecturas de red antes descritas. El entorno 700 de operación de ejemplo es solamente un ejemplo de un entorno y no se pretende sugerir alguna limitación en cuanto al alcance de uso o funcionalidad de las arquitecturas del dispositivo aplicable (incluyendo computadora, nodo de red , dispositivo de entretenimiento, aparato móvil , dispositivo electrónico en general, etc.). Tampoco el entorno 700 de operación (o los dispositivos del mismo) debe ser interpretado como teniendo alguna dependencia o requerimiento con relación a cualq uiera o a cualquier combinación de componentes como se ilustra en la Fig ura 7. Adicionalmente, las implementaciones para documentación de presencia del lado del cliente pueden ser realizadas con numerosos otros entornos o configuraciones de dispositivos (incluyendo sistema de computación) de propósito especial o propósito general. Ejemplos de dispositivos, sistemas, entornos y/o configuraciones bien conocidos que pueden ser adecuados para uso incluyen , pero no están limitados a, computadoras personales, computadoras de servidor, clientes delgados, clientes gruesos, asistentes digitales personales (PDAs) o teléfonos móviles, relojes, dispositivos manuales o de laptop, sistemas de multiprocesador, sistemas con base en microprocesadores, cajas de fijación superior, electrónicos de consumo programables, máquinas de videojuegos, consolas de juego, unidades de juego portátiles o manuales, PCs de red , equipo de video para conferencias, minicomputadoras, computadoras centrales, nodos de red , entornos de computación distribuida o de procesamiento múltiple que incluyen cualq uiera de los sistemas o dispositivos anteriores, alg una combinación de los mismos y así sucesivamente. Las implementaciones para documentación de presencia del lado del cliente pueden ser descritas en el contexto general de instrucciones ejecutables por procesador. Generalmente, las instrucciones ejecutables por procesador incluyen rutinas, programas, protocolos, objetos, funciones, interfases, componentes, estructuras de datos, etc. , que realizan y/o permiten tareas particulares y/o implementan tipos de información abstracta en particular. Las realizaciones para la documentación de presencia del lado del cliente, como se describe en ciertas implementaciones en la presente, pueden ser practicadas también en entornos de procesamiento distribuido donde se realizan tareas mediante dispositivos de procesamiento vinculados remotamente que están conectados a través de un vínculo y/o una red de comunicaciones. Especialmente, pero no exclusivamente, en un entorno de computación distribuida, las instrucciones ejecutables por procesador pueden ser ubicadas en medios de almacenamiento separados, ejecutadas por diferentes procesadores, y/o propagadas por los medios de transmisión. Los ejemplos del entorno 700 de operación incluyen un dispositivo de computación de propósito general en la forma de una computadora 702, la cual puede comprender cualquier dispositivo (por ejemplo, electrónico) con capacidades de computación/procesamiento. Los componentes de la computadora 702 pueden incluir, pero no están limitados a, uno o más procesadores o unidades 704 de procesamiento, una memoria 706 de sistema, y una barra colectora 708 de sistema que acopla varios componentes del sistema, incluyendo el procesador 704, a la memoria 706 del sistema.
Los procesadores 704 no están limitados por los materiales a partir de los cuales están formados o los mecanismos de procesamiento empleados en los mismos. Por ejemplo, los procesadores 704 pueden estar constituidos por semiconductor(es) y/o transistores (por ejemplo, circuitos electrónicos integrados (ICs)). En tal contexto, las instrucciones ejecutables por procesador pueden ser instrucciones electrónicamente ejecutables. Alternativamente, el mecanismo de o para los procesadores 704, y así de o para la computadora 702, pueden incluir, pero no están limitados a, computación de quantum, computación óptica, computación mecánica (por ejemplo, usando nanotecnología), y así sucesivamente. La barra colectora 708 del sistema representa una o más de cualquiera de muchos tipos de estructuras de barra colectora alámbrica o inalámbrica, incluyendo una barra colectora de memoria o controlador de memoria, una conexión de punto a punto, una tela de conmutación, una barra colectora periférica, un puerto para gráficas aceleradas y un procesador o barra colectora local que usa cualquiera de una variedad de arquitecturas de barra colectora. A manera de ejemplo, tales arquitecturas pueden incluir una barra colectora de Industry Standard Architecture (ISA), una barra colectora de Micro Channel Architecture (MCA), una barra colectora de Enhanced ISA (EISA), una barra colectora local de Video Electronics Standard Association (VESA), una barra colectora de Peripheral Components Interconnects (PCI) conocida también como barra colectora de Mezzanine, PCI express, alguna combinación de las mismas y así sucesivamente. La computadora 702 incluye típicamente una variedad de medios accesibles por procesador. Tales medios pueden ser cualquier medio disponible que sea accesible por la computadora 702 u otro dispositivo (por ejemplo, electrónico), e incluye medios tanto volátiles como no volátiles, medios removibles y no removibles, y medios de almacenamiento y transmisión. La memoria 706 del sistema incluye medios de almacenamiento accesibles por el procesador en la forma de memoria volátil, tales como la memoria de acceso aleatorio (RAM) 710, y/o memoria no volátil, tal como la memoria de lectura solamente (ROM) 712. Un sistema de entrada/salida (BIOS) 714, que contiene las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 702, tal como durante el arranque, se almacena típicamente en la ROM 712. La RAM 710 contiene típicamente módulos/instrucciones de datos y/o programas que son accesibles inmediatamente a y/o que son operados en el presente por una unidad 704 de procesamiento. La computadora 702 puede incluir también otros medios de almacenamiento removible/no removible y/o volátil/no volátil. A manera de ejemplo, la Figura 7 ilustra un impulsor de disco duro o arreglo 716 de impulsor de disco para leer de y escribir en un medio magnético (típicamente) no removible, no volátil (no mostrado por separado); un impulsor 718 de disco magnético para leer de y escribir en un disco 720 magnético (típicamente) removible, no volátil (por ejemplo, un "disco flexible"); y un impulsor 722 de disco óptico para leer de y/o escribir en un disco 724 (típicamente) removible, no volátil tal como un CD, DVD u otro medio óptico. El impulsor 716 de disco duro, el impulsor 718 de disco magnético, y el impulsor 722 de disco óptico están conectados cada uno a la barra colectora 708 del sistema mediante una o más interfases 726 del medio de almacenamiento. Alternativamente, el impulsor 716 de disco duro, el impulsor 718 de disco magnético y el impulsor 722 de disco óptico pueden estar conectados a la barra colectora 708 del sistema mediante una o más otras interfases separadas o combinadas (no mostradas). Los impulsores de disco y sus medios accesibles por procesador asociados proporcionan almacenamiento no volátil de instrucciones ejecutables por procesador, tales como estructuras de datos, módulos de programa y otros datos para la computadora 702. Aunque la computadora 702 de ejemplo ilustra un disco duro 716, un disco 720 magnético removible y un disco 724 óptico removible, se debe apreciar que otros tipos de medios accesibles por procesador pueden almacenar instrucciones que son accesibles mediante un dispositivo, tales como cartuchos magnéticos u otros dispositivos magnéticos de almacenamiento, memoria instantánea, discos compactos (CDs) , discos versátiles digitales (DVDs) u otros almacenamientos ópticos, RAM, ROM , memorias de lectura solamente programables que se pueden borrar eléctricamente (EEPROM) y así sucesivamente. Tales medios pueden incluir también los llamados chips de IC de propósito especial o alambrado duro. En otras palabras, cualquier medio accesible por procesador puede ser utilizado para realizar el medio de almacenamiento del entorno 700 de operación de ejemplo. Cualquier número de módulos de programa (u otras unidades o conjuntos de instrucciones ejecutables por procesador) puede ser almacenado en el disco duro 716, el disco magnético 720, el disco óptico 724, ROM 712 y/o RAM 710, incluyendo a manera de ejemplo general, un sistema 728 operativo, uno o más programas 730 de aplicación, otros módulos 732 de programa, y datos 734 de programa. Estas instrucciones ejecutables por procesador pueden incluir, por ejemplo, uno o más de: un documento 208 de presencia que tiene información 210 de presencia extensible, un cliente 212 de mensajes instantáneos, mensajes 402/402*/404/406, un esquema que describe la información 210 de presencia extensible, alguna combinación de los mismos y así sucesivamente. Un usuario puede introducir comandos y/o información a la computadora 702 vía dispositivos de alimentación tales como un teclado 736 y un dispositivo apuntador 738 (por ejemplo, un "ratón"). Otros dispositivos 740 de introducción (no mostrados específicamente) pueden incluir un micrófono, una palanca para juegos, un cojín para juegos, una antena para satélite, un puerto serial, una cámara de video, un explorador (scanner), y/o los similares. Estos y otros dispositivos de alimentación se conectan a la unidad 704 de procesamiento vía las interfases 742 de entrada/salida que se acoplan con la barra colectora 708 del sistema. Sin embargo, los dispositivos de entrada y/o dispositivo de salida se pueden conectar alternativamente mediante otra interfase y estructuras de barra colectora, tales como un puerto paralelo, un puerto para juegos, un puerto de barra colectora serial universal (USB), un puerto de infrarrojo, una inferíase IEEE 1394 ("Firewire") , una interfase inalámbrica IEEE 802.1 1 , una interfase inalámbrica Bluetooth® y así sucesivamente. También se puede conectar una pantalla 744 de monitor/visión u otro tipo de dispositivo de exhibición a la barra colectora 708 del sistema vía una interfase, tal como un adaptador 746 para video. El adaptador 746 para video (u otro componente) puede ser o puede incluir una tarjeta para gráficas para procesar cálculos con muchas gráficas y para manejar requerimientos de despliegue de demanda. Típicamente, una tarjeta para gráficas incluye una unidad de procesamiento de gráficas (GPU), RAM para video (VRAM), etc. , para facilitar la exhibición expedita de gráficas y el desempeño de operaciones gráficas. Además del monitor 744, los dispositivos periféricos de salida pueden incluir componentes tales como altoparlantes (no mostrados) y una impresora 748, la cual puede estar conectada a la computadora 702 vía las interfases 742 de entrada/salida. La computadora 702 puede operar en un entorno en redes usando las conexiones lógicas con una o más computadoras lejanas, tal como un dispositivo 750 de computación lejano. A manera de ejemplo, el dispositivo 750 de computación lejano puede ser un dispositivo periférico, una computadora personal, una computadora portátil (por ejemplo computadora laptop, computadora de tableta, PDA, estación móvil, etc.), una computadora de mano o de tamaño de bolsillo, un reloj, un dispositivo para juegos, un servidor, un enrutador, una computadora de red , un dispositivo igual , otro nodo de red , u otro dispositivo del tipo como se enlista anteriormente y así sucesivamente. Sin embargo, el dispositivo 750 de computación lejano, se ilustra como una computadora portátil que puede incluir muchos o todos los elementos y aspectos descritos en la presente con respecto a la computadora 702. Las conexiones de lógica entre la computadora 702 y la computadora 750 lejana se representan como una red de área local (LAN) 752 y una red de área amplia general (WAN) 754. Tales entornos en red son lugares comunes en oficinas, redes de computadoras amplias de empresas, intranets, la Internet, redes de teléfonos fijos y móviles, redes inalámbricas ad hoc y de infraestructura, redes de malla, otras redes inalámbricas, redes para juegos, alguna combinación de las mismas y así sucesivamente. Tales redes y las conexiones de lógica y físicas de comunicaciones son ejemplos adicionales de medios de transmisión . Cuando se implementa en un entorno de red LAN , la computadora 702 se conecta usualmente a LAN 752 vía una interfase de red o adaptador 756. Cuando se implementa en un entorno de red WAN , la computadora 702 incluye típicamente un modem 758 u otro componente para establecer comunicaciones por la WAN 754. El modem 758 que puede ser interno o externo a la computadora 702 , puede conectarse a la barra colectora 708 del sistema vía interfases 742 de entrada/salida o cualquier otro mecanismo apropiado. Se debe apreciar que las conexiones de red ilustradas son ejemplos y que se pueden emplear otras maneras para establecer vínculos de comunicación entre las computadoras 702 y 750. En un entorno de red, tal como aquella ilustrada con el entorno 700 de operación, los módulos de programa u otras instrucciones que se representan con relación a la computadora 702, o porciones de los mismos, se pueden almacenar completa o parcialmente en un dispositivo de almacenamiento de medios remoto. A manera de ejemplo, el programa 760 de aplicación remota reside en un componente de la memoria de la computadora 750 remota, pero puede ser utilizable o de otra manera accesible vía la computadora 702. También, para propósitos de ilustración, los programas 730 de aplicación y otras instrucciones ejecutables por procesador tales como el sistema 728 operativo se ilustran en la presente como bloques discretos, pero se reconoce que tales programas, componentes y otras instrucciones residen en varios momentos en componentes de almacenamiento diferentes del dispositivo 702 de computación (y/o dispositivo 750 remoto de computación) y son ejecutados mediante procesador(es) 704 de la computadora 702 (y/o aquellos del dispositivo 750 remoto de computación). Aunque los sistemas, medios, dispositivos, métodos, procedimientos, aparatos, técnicas, esquemas, enfoques, procedimientos, arreglos y otras implementaciones se han descrito en un lenguaje específico para los aspectos y/o diagramas estructurales, lógicos, algorítmicos y funcionales, se entiende que la invención definida en las reivindicaciones adjuntas no está necesariamente limitada a los aspectos o diagramas específicos descritos. Más bien, los aspectos y diagramas específicos se describen como formas ejemplares para implementar la invención reivindicada.