Line 5: |
Line 5: |
| == Sugar Digest == | | == Sugar Digest == |
| | | |
− | 1. Redwood City: Raul Gutierrez Segales, Bernie Innocenti and I have been busy hacking in a mini Sugar Camp this weekend. Our goal is to build an interface between the Sugar Journal and several on-line services. Specifically, Raul and I are working on an interface between the Journal and Facebook and Bernie is working on an interface between the Journal and Google Drive. | + | 1. It has been crazy busy. With the upcoming XO4 launch, Sugar with touch support will be making its début. The developer team has done a great job but we are lagging behind a bit on the activity level: Activities that use keyboard input need to be modified to use the on-screen keyboard; and now that tablet mode will be used more often, we need to better attend to the issue of screen rotation. |
| | | |
− | Here's is where we are at at the moment:
| + | In order to adapt to the on-screen keyboard, there are two adjustments that need to be made: (1) use either a GTK Entry or TextView instead of directly querying the keyboard; and (2) make sure that the Entry is visible when the keyboard is visible. To address both issues, I have been mostly using GTK Fixed in order to reposition the Entry appropriately. But also, I have been using a strategy of moving the Entry to the top of the activity. |
| | | |
− | * We have a control panel widget for managing your Facebook account. It saves a token in .gconf that can be used to make transactions with Facebook. (We plan to add a section to manage all of the users online accounts, probably in the manner of the GNOME online account manager. Suggests (and patches) welcome.)
| + | There are two issues with dealing with landscape vs portrait mode. One is to make sure that the work area of an activity accommodates the change in size and aspect ration. Perhaps the easiest way to do this is simply to define a square work are inside of a scrolling window. There are times when this strategy won't work, such as with Paint, but for the most part, it is a simple solution. |
| | | |
− | * We have a "Share on" extension to the Journal palette menu. Right now, the only option is to share on Facebook. Raul has written a class that manages a Facebook object consisting of the Journal preview image, the title, and the description. The preview image is uploaded as a photo object to the Sugar Journal album on Facebook. The title and description are added as a comment. (Question for the design team: can we bump up the resolution of the preview image?)
| + | The toolbars are another matter. It is often the case that not all of the elements fit when in portrait mode. The default behavior of Sugar, to make a list on a palette that displays on the edge of the screen is somewhat lacking, both in that many toolbar items are either not shown or inoperable in that form. And aesthetically, it is not very Sugar-like. I've been experimenting with some different approaches to generating palettes, and also moving some toolbar elements around (e.g., moving some buttons to secondary toolbars). Alas, none of these solutions are idea or completely generalizable. But I think there are harbingers of a solution. |
| | | |
− | * We are finishing up work on two extensions to the Journal detail-view toolbar for Journal entries with corresponding Facebook entries. The Refresh Button grabs comments from Facebook and adds them to the Object description. The Like Button grabs likes from Facebook.
| + | Another issue with touch is that Gtk2 ComboBoxes don't work. The problem has been fixed in the Gtk3 version of the Sugar tool-kit, but, not being a fan of Combo Boxes to begin with, I see it as an opportunity to minimize their use. For example, using bigger/smaller buttons is arguably an easier way to adjust font size using touch. |
| | | |
− | We've also explored using Facebook graph objects, which would open up a number of interesting options, but we have some infrastructure and authentication issues to sort through before we go too far down that path.
| + | Ultimately, we'll want to add more gesture support as well. Many activities could readily support panning and zooming. And a "long" press can replace the un-Sugar-like reliance of right-click that some activities are using. |
| | | |
− | We'll be uploading patches ([git://git.sugarlabs.org/+redwood-city/sugar/social-sugar.git sugar]) and ([git://git.sugarlabs.org/+redwood-city/sugar-artwork/social-sugar-artwork.git sugar-artwork]) pretty regularly throughout the weekend.
| + | I've packaged many of these ideas into some experimental (and production) versions of some activities (Please see [http://people.sugarlabs.org/~walter/Abacus-47.1.xo Abacus], [http://people.sugarlabs.org/~walter/Chart-9.1.xo Chart], [http://people.sugarlabs.org/~walter/Chat-78.1.xo Chat], [http://people.sugarlabs.org/~walter/Labyrinth-14.4.xo Labyrinth], [http://people.sugarlabs.org/~walter/Portfolio-41.2.xo Portfolio], [http://people.sugarlabs.org/~walter/Speak-44.6.xo Speak], and [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4027#version-173 TurtleBlocks]). Feedback most welcome. |
| | | |
− | <gallery>
| + | 2. It occurred to me that the Web Services framework that Raul and I developed a few weeks ago might make a nice home for a simple classroom service: handing in homework assignments and receiving back comments from the teacher and fellow students. Such a service could be dropped right into the same framework we built for Facebook, so in the Journal, there would be a Share with (or Copy to) Teacher and comments would appear in the Journal detail view (and be directly integrated in the Portfolio). Simple, but potentially quite useful. |
− | File:Fb-cpsection.png|Facebook Control Panel
| |
− | File:Fb-share-on-fb.png|Share on Facebook
| |
− | </gallery>
| |
| | | |
− | ----
| + | === Tech Talk === |
| | | |
− | Kim Toufectis commented on this post about online services:
| + | 3. Adam Holt reported on [http://lists.laptop.org/pipermail/server-devel/2013-February/006258.html the School Server Hack Sprint] held in Toronto (See [8]). |
| | | |
− | :Appreciative of the ideals upon which Sugar Labs and OLPC formed, it’s deeply troubling to envision a commercial entity like FaceBook integrated into the Control Panel.
| + | 4. Daniel Narvaez has been making great progress on "[http://lists.sugarlabs.org/archive/sugar-devel/2013-February/041847.html Agora]", his attempt to achieve the goals of the Sugar Learning Platform using the web technologies (See [9]). |
− | | |
− | :For a system in which a proprietary browser (Opera) or plugin (Adobe Flash) are controversial even as optional add-ons, can we really be headed for integrating a private corporation into the heart of the OS? This is very difficult to understand…
| |
− | | |
− | My response:
| |
− | | |
− | First, I will dodge the issue. The web-services intervention into the Sugar code base is not specific to any service provider, rather it is designed as a plug-in architecture. It is not too much of an exaggeration to say it is little more than the addition of four lines of code that add new destinations to the “Copy to” button in the Journal menu:
| |
− | <pre>
| |
− | + from jarabe.web import online_accounts_manager as oam
| |
− | + for account in oam.OnlineAccountsManager.configured_accounts():
| |
− | + menu = account.get_share_menu(metadata)
| |
− | + self.append(menu)
| |
− | </pre>
| |
− | | |
− | Raul and I added a new module to Sugar extensions that provides a general framework for managing and accessing online accounts in a way that is service-provider agnostic for the online accounts manager imported from jarabe.web.
| |
− | | |
− | We are also working on a patch to the Journal detail view that will display comments made to shared entries. This is a generalization of a mechanism I built for the Sugar Portfolio activity, which displays comments made on Journal entries when your portfolio is shared using the existing Sugar collaboration framework.
| |
− | | |
− | Regarding the Facebook icon on the control panel shown in the sketch I posted, this is misleading. This is just a place holder. As I mentioned in my blog, we are working on a panel that can be used to manage all of a user’s online accounts, in a manner similar to GOA. (We may just use GOA with a Sugar wrapper, depending upon what
| |
− | dependencies it introduces.)
| |
− | | |
− | So far, I think it is fair to say we are not “integrating a private corporation into the heart of the OS”.
| |
− | | |
− | End of dodge.
| |
− | | |
− | There are several issues raised by our proposal (none of this code has yet been reviewed and accepted):
| |
− | | |
− | * Should Sugar facilitate integration with online services?
| |
− | * If so, should we do it in such a way that is service-provider agnostic?
| |
− | * Why specifically are we working on a Facebook plugin?
| |
− | | |
− | In regard to the first question, one could argue that the Sugar collaboration framework is capable of internalizing whatever services a user may want, and hence there is no reason to open the door to external services. Further, one could argue that the Sugar Browse activity provides sufficient access to online services that there is no need to provide any additional interfaces.
| |
− | | |
− | Personally, I don’t think it is realistic or pragmatic to try to contain our users or to replicate every service that might be of interest within our own framework. We don’t have the resources to do that, but even if we did, such an approach is not, in my opinion, aligned with the goals of the project. I want children to use Sugar as
| |
− | a “free as in freedom” and safe place to learn, however, I don’t want to confine them to that space: they should be launched out of Sugar into the broader world of computing and the web, hopefully shaped by their experiences with Constructionism and with free software. Indeed, one of the most rewarding experiences of the project is to watch
| |
− | children who grew up with Sugar submitting patches to reshape it into a something new and better. Just as we provide a mechanism to inter-operate between Sugar (an environment for exploration) and the GNOME desktop (an environment for productivity), I envision children learning to move fluidly between the garden of internal web services provided by our collaboration model and external services.
| |
− | | |
− | As far as being agnostic as to which services our framework *can* support, I think that from the technical perspective, this is a requirement. We cannot be in the business of censoring on behalf of our users. We leave decisions as to what to learn up to the local communities in which Sugar is deployed. Where we have a deliberate
| |
− | influence is on how it is learned. We try to strike a much-needed balance between consuming and creating, between critiquing and reflecting, and this is reflected in the affordances we provide: the Journal, view source, sharing, etc.
| |
− | | |
− | That said, we all make decisions of commission and omission. For example, on the one hand, I filled a ticket with YouTube regarding enabling the uploading of .ogv files. On the other hand, when I post videos, I use Dailymotion, because it supports .ogv. And yet I admit to still watching the occasional YouTube video. And as you alluded to
| |
− | in your question: we shipped Gnash instead of Adobe Flash.
| |
− | | |
− | Regarding social networking, I blogged this past spring about how the teachers using [[Archive/Current_Events/2012-06-23|Sugar in Amazonas Peru hang out on Facebook]]. Consequently, when we set up a common space for collaboration and support for those teachers, we set it up on [https://www.facebook.com/groups/370964266297045/ Facebook]. I’ve tried to get teachers to come to the Sugar channel on IRC, but few, if any, ever do so. (The default channel of the IRC client we bundle into Sugar takes them to #sugar on irc.freenode.net, but they never use that tool. They do manage to find Facebook on their own using Browse.) If I want to engage with them, I need to go to where they hang out. The engagement itself, independent of the service used to provide it, has been rewarding.
| |
− | | |
− | As to why Facebook as the place to start building services, there are several reasons. The first is simply that Raul wrote facebook-gobject, which he hosted on [https://github.com/rgs1/facebook-gobject git-hub], that allows you access Facebook’s Graph API via a set of GObject based objects for easy integration with GLib2-based code. The second is that Facebook has 1-billion users with whom we’d like to interact and impact.
| |
− | | |
− | There are certainly caveats: First, Facebook is not for children. My intention is to provide a mechanism for teachers, not children. Second, Facebook does not provide a place for file (project) sharing, just a place for talking about projects. We will need other services for that (dare I say, Google Drive). Third, there may well be other social networking sites that are aligned with the principles of Free Software. Help us identify those sites and write plugins for them. Which services are exposed in a control panel extension is not a decision we will make unilaterally, but in order to offer a service, someone needs to write the code. Raul and I are trying to lower the
| |
− | barrier to entry. Admittedly, by lowering the barrier for Facebook, we may be discouraging others from trying to compete in this space.
| |
− | | |
− | We have an obligation to take these issues seriously and to discuss them vigorously. They are not decisions that come easily or lightly. How we open the door to web services within Sugar is still to be decided.
| |
− | | |
− | ----
| |
− | | |
− | 2. I blogged about a cool [http://www.datapointed.net/visualizations/math/factorization/animated-diagrams/ visualization of prime factors] last week. Tony Forster and I [http://git.sugarlabs.org/turtleart/mainline/blobs/raw/master/samples/math-prime-factors.ta coded it up in Turtle Blocks]. Quite fun. It uses a simple iteration to calculate the prime factors and then a recursive algorithm to render the factors in a tree, e.g., 25=5x5. It cycles through the factors of 2 through 100, but it is easy enough to change the main loop to cycle through whatever range of numbers you'd like. It takes advantage of the on-the-fly box definition mechanism in Turtle Blocks and the ability to reference a box from the value in another box to manage the state as it changes in the recursion. Note that you can vary the playback speed by moving the mouse up or down on the screen.
| |
− | | |
− | <gallery>
| |
− | File:25%3D5x5.png|25=5x5
| |
− | File:Boxbox.png|Box<-Box<-Name
| |
− | </gallery>
| |
− | === In the community ===
| |
− | | |
− | 3. When visiting Facebook's campus in Menlo Park, we bumped into Chris Blizzard, formerly the Red Hat project manager for Sugar.
| |
| | | |
| === Sugar Labs === | | === Sugar Labs === |
| | | |
− | Visit [http://planet.sugarlabs.org our planet] for more updates about Sugar and Sugar deployments. | + | Visit our [http://planet.sugarlabs.org planet] for more updates about Sugar and Sugar deployments. |
| | | |
| == Community News archive == | | == Community News archive == |