[Sugar-devel] [ANNOUNCE] Groupthink 0.1 pre-alpha

Sebastian Silva sebastian at fuentelibre.org
Wed Jan 14 18:37:08 EST 2009


I love the API, great contribution Ben!

I also love the name, Groupthink, from WikiPedia:
"Groupthink is a type of thought exhibited by group members who try to
minimize conflict and reach consensus without critically testing,
analyzing, and evaluating ideas. Individual creativity, uniqueness,
and independent thinking are lost in the pursuit of group
cohesiveness, as are the advantages of reasonable balance in choice
and thought that might normally be obtained by making decisions as a
group.[1] During groupthink, members of the group avoid promoting
viewpoints outside the comfort zone of consensus thinking. A variety
of motives for this may exist such as a desire to avoid being seen as
foolish, or a desire to avoid embarrassing or angering other members
of the group. Groupthink may cause groups to make hasty, irrational
decisions, where individual doubts are set aside, for fear of
upsetting the groups balance. The term is frequently used
pejoratively, with hindsight."

*Grin*

Sebastian

2009/1/14 Benjamin M. Schwartz <bmschwar at fas.harvard.edu>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Groupthink [1] is a development toolkit for collaborative activities.
> It's designed to hide all the collaboration boilerplate and algorithms
> under a clean high-level abstraction, so that Activity developers can
> spend more time on what they really care about.
>
> Groupthink is deeply pre-alpha.  Any application is likely to find a
> multitude of blocker bugs.  If that is acceptable to you, then by all
> means start your experiments.  If you are interested, please ask questions
> or read the code.
>
> As an example of the power of Groupthink, I have created a collaborative
> version of Chris Ball's "Words" activity, a multilingual dictionary.  This
> required adding the groupthink library into the bundle.  It also required
> two patches, attached.  Together, these patches represent a total of 5
> lines changed.  The resulting activity has the main input field shared
> synchronously across all instances.  This activity will be released,
> pending further testing.
>
> Groupthink: Collab should be easy.
>
> - --Ben
>
> [1] http://dev.laptop.org/git?p=projects/dobject;a=summary
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.9 (GNU/Linux)
>
> iEYEARECAAYFAkltdAwACgkQUJT6e6HFtqQ80wCfa4f13gAvJQYcdkhdmefBPBuU
> rYEAoJne2buq5hhC29/4ZFCdVvegBsne
> =aS94
> -----END PGP SIGNATURE-----
>
> --- activity.py.orig    2009-01-12 22:51:15.000000000 -0500
> +++ activity.py 2009-01-12 23:31:59.000000000 -0500
> @@ -1,9 +1,11 @@
>  from sugar.activity import activity
>
> -class ViewSourceActivity(activity.Activity):
> +from groupthink.sugar_tools import GroupActivity
> +
> +class ViewSourceActivity(GroupActivity):
>     """Activity subclass which handles the 'view source' key."""
> -    def __init__(self, handle):
> -        super(ViewSourceActivity, self).__init__(handle)
> +    def __init__(self, handle, service_name):
> +        super(ViewSourceActivity, self).__init__(handle, service_name)
>         self.__source_object_id = None # XXX: persist this across invocations?
>         self.connect('key-press-event', self._key_press_cb)
>     def _key_press_cb(self, widget, event):
>
> --- pippy_app.py.orig   2009-01-13 23:37:25.000000000 -0500
> +++ pippy_app.py        2009-01-13 00:13:49.000000000 -0500
> @@ -28,6 +28,8 @@
>  from sugar.activity.activity import ActivityToolbox, \
>      get_bundle_path, get_bundle_name
>
> +import groupthink.gtk_tools
> +
>  SERVICE = "org.laptop.Words"
>  IFACE = SERVICE
>  PATH = "/org/laptop/Words"
> @@ -36,7 +38,7 @@
>     """Words Activity as specified in activity.info"""
>     def __init__(self, handle):
>         """Set up the Words activity."""
> -        super(WordsActivity, self).__init__(handle)
> +        super(WordsActivity, self).__init__(handle, SERVICE)
>         self._logger = logging.getLogger('words-activity')
>
>         from sugar.graphics.menuitem import MenuItem
> @@ -69,7 +71,8 @@
>         label2 = gtk.Label("Translation")
>
>         # Text entry box to enter word to be translated.
> -        self.totranslate = gtk.Entry(max=50)
> +        self.cloud.totranslate = groupthink.gtk_tools.RecentEntry(max=50)
> +        self.totranslate = self.cloud.totranslate
>         self.totranslate.connect("changed", self.totranslate_cb)
>         self.totranslate.modify_font(pango.FontDescription("Sans 14"))
>
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
>
>



-- 
Sebastian Silva
Laboratorios FuenteLibre
http://blog.sebastiansilva.com/


More information about the Sugar-devel mailing list