SocialFromTheStart

Summary

As the use of social networking sites become more prominent, we should bring as much of the social landscape down to the desktop. Utilizing existing desktop applications with social networks as much as possible. In doing this, we need to be careful not to "over do it" yet provide the functionality that users crave.

Release Note

Rationale

Many users want to be social, they want to stay in touch, view photos, organize events, share links, etc. Let's make that part of the daily workflow on the desktop without sending users out to a web browser.

User stories

  • Jane is a stay at home mom with 3 kids, her primary communications with her friends is with facebook
    • She shares photos with friends and families with facebook
    • She arranges play dates and other activities for her kids with other kids via facebook
    • Jane stays informed of her friends activites and gets ideas for things to do with her own kids
    • She keeps her friends and family informed by posting facebook status messages frequently
  • John is an open source enthusiast, always looking for the latest ways to broaden his experiences and experiment
    • John is an avid user of identi.ca, broadcasting what he is doing frequently
    • John looks to social networks like identi.ca to help stay informed of the latest technology
    • John doesn't have a lot of persistent data on his multiple computers, he frequently finds himself re-installing and experimenting with other software

Assumptions

Research

We recently did a study to determine what kinds of people use social networks and how they use them.

  • 9 people of mixed background observed
  • People migrate between social services in groups (e.g. MySpace->Facebook)

  • Three types of users of social networks:
    • Door: (majority)
      • Very private. Want to have controls on their service.
      • Use SNS as initial contact, but follow up out-of-band.
      • Don't want direct messages or to use SNS for entire conversation.
      • Would like updates from other people on desktop (e.g. tweets displayed via notify-osd)
      • Would not like their information to be sent without opting in
    • Mirror:
      • Record their lives. SNS is a personal scrapbook of important events.
      • Images important.
      • Broadcasting info is not primary goal of usage.
      • Interested in what others are doing and compare to themselves.
      • Would like F-Spot integration to publish.
    • Room:
      • Do activities (e.g. use applications in Facebook)
      • Interact with other people often.
      • Self identity is tied to communicating with other people and things.
      • Gossip.
      • Would like software center integration to see what others use.

Design

  • Integrate presence/status into the desktop
  • Improved account management interface
  • A discoverable way to add social network services

Implementation

  • cache messages in desktopcouch, this gives us instant access to messages on startup
  • store configuration data in desktopcouch
  • discover social networking sites you have logged into and streamline configuration for gwibber (depends on the firefox history/password sync plugin)
  • allow for DND (do not disturb), most likely just tap into the IM client for status. If you set it to offline or DND gwibber shouldn't provide updates (configurable)
  • spacial/temporal intersection notifications.
    • "your favorite band x will be in city y when you are." (e.g. from Last FM)
    • "John Doe shared a photo"
    • "Jane Doe shared a link"
  • collect links shared on all of your social networks and allow browsing them
  • add screensaver based on a collection from your social contacts
  • software center could provide a method to share something you have installed

UI Changes

  • New account configuration dialog
  • create re-usable gtk widget to embed in other apps
  • create simple dialog that apps can pop open with pre-populated text to post
  • the design team will provide some mockups for us to consider

Code Changes

gwibber

  • bug fixes
  • more robust exception handling
    • move dbus connection handling up to a single method and wrap that with exception handling
    • prevent any modules from hanging the daemon
  • simplify the dbus interfaces for external applications to use
  • provide a python library for the external applications to use
  • store gwibber messages in desktopcouch
  • create couchdb views for streams
  • move configuration storage from gconf to desktopcouch
  • fix the default settings to be default with a per-user override, currently gwibber sets all defaults as local config values
  • add exception handling for dbus connections/calls
  • add exception handling for message handling
  • add exception handling for errors/tracebacks from plugins
  • add exception handling for account failures
  • simplify scheduler by moving it out of process using intervals and times
  • clean up the facebook auth experience

f-spot

  • add browse friends photos stream provided by gwibber
    • work with flickr and facebook (investigate adding picasaweb)

gnome-screensaver-social

  • query gwibber for a feed of photos to use for a screensaver

Migration

  • migrate user settings from existing gconf storage to desktopcouch

Test/Demo Plan

Unresolved issues

BoF agenda and discussion

https://blueprints.edge.launchpad.net/ubuntu/+spec/desktop-lucid-social-from-the-start

Questions

  • How can we expand the use of social services on the desktop?
    • - existing opportunies? - new ideas?
  • First run experience?
    • - How do users discover the social capabilies of the ubuntu desktop? - How do users configure their accounts?
  • New gwibber features?
    • - twitter lists?

Research

  • - 9 people of mixed background observed

    - People migrate between social services in groups (e.g. MySpace->Facebook) - Three types of users of social networks:

    • - Door: (majority)
      • - Very private. Want to have controls on their service. - Use SNS as initial contact, but follow up out-of-band. - Don't want direct messages or to use SNS for entire conversation. - Would like updates from other people on desktop (e.g. tweets displayed via notify-osd) - Would not like their information to be sent without opting in
      - Mirror:
      • - Record their lives. SNS is a personal scrapbook of important events. - Images important. - Broadcasting info is not primary goal of usage. - Interested in what others are doing and compare to themselves. - Would like F-Spot integration to publish.
      - Room:
      • - Do activities (e.g. use applications in Facebook) - Interact with other people often. - Self identity is tied to communicating with other people and things. - Gossip. - Would like software center integration to see what others use.

Proposals/Ideas

  • - Stick with gwibber
    • - Good relationship with upstream - Mojito too hard to integrate into gwibber at this current time
    - Tweets from Software Center - Evolution contacts integrated with microblog people - FSpot shared albums automatically sent to Gwibber - History - Screensaver accessing their photos/friends photos - Collect links from social services - Be careful not to add features by default that only a minority will use - this
    • will reduce the overall experience - Consider making plugins and allow people to customise their experience
    - Add GTK+ widgets for tweets like empathy does for IM - We want to link information from objects to tweets so don't have to manually
    • type information (e.g. installed package X and like it - if can do from application center then X can be automatically filled in)

Off topic

  • - Gwibber stability (in other session)

Sample code to send tweet from any application

via dbus

import dbus
bus = dbus.SessionBus()
db_mb_obj = bus.get_object("com.Gwibber", "/com/gwibber/Microblog")
microblog = dbus.Interface(db_mb_obj, "com.Gwibber")

args = ["This is a test message"]

microblog.operation({
  "args": args,
  "opname": "send",
  })

with the python API

import gwibber.utils
foo = gwibber.utils.GwibberPublic()
foo.post("This is a test message")

tweet deck multi-column UI

POR Regarding Broadcasting

  • Banning auto-tweeting on the desktop
  • pimp out the gwibber UI

Gwibber Actions:

  • add a convenience function like "micro_blog_all"
  • add a widget that standardizes microblogging user interface
  • add a dialog that wraps that widget
  • already have the ability to get twitter feeds, should add more
  • spacial/temporal intersection notifications. "your favorite band x will be
    • in city y when you are." (e.g. from Last FM)
  • Avatar aggregator + gwibber
  • Auto-background from gwibber sources
  • back ground of tag cloud from things that users are mentioning
  • want to have a query that means we could get a more complete photo stream
    • Manuel to add tagging of photos with contacts picker, etc...
    • segal to create a script to make backgrounds out of picutres from the photostream
    • segal to make a screensaver out of feeds, photos, streams
    • Ken/Rodney to move gwibber account setup into desktop


CategorySpec

DesktopTeam/Specs/Lucid/SocialFromTheStart (last edited 2009-11-27 05:55:05 by ken-vandine)