<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>El Tramo | Google Summer Of Code</title>
  <subtitle>Remko Tronçon's Homepage</subtitle>
  <link href="http://el-tramo.be/blog/tag/google-summer-of-code/feed/" rel="self" type="application/rss+xml"/>
  <link href="http://el-tramo.be/"/>
  <updated>2012-05-19T12:29:42+02:00</updated>
  <id>http://el-tramo.be/</id>
  <author>
    <name>Remko Tronçon</name>
    <uri>http://el-tramo.be/about/</uri>
  </author>
  
  <entry>
    <title>Google Summer of Code 2012</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/swift-gsoc-2012"/>
    <updated>2012-04-25T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/swift-gsoc-2012</id>
    <content type="html">&lt;p&gt;It&amp;rsquo;s that time of year again: Google &lt;a href=&quot;http://google-opensource.blogspot.com/2012/04/students-announced-for-google-summer-of.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+GoogleOpenSourceBlog+%28Google+Open+Source+Blog%29&quot;&gt;announced&lt;/a&gt; which students they are going to sponsor for contributing to open source projects. This year, we have the pleasure of welcoming 3 students at &lt;a href=&quot;http://swift.im&quot;&gt;Swift&lt;/a&gt;, who will be working on some very exciting projects.&lt;/p&gt;

&lt;!-- more --&gt;


&lt;p&gt;This summer, you&amp;rsquo;ll see the following new faces hanging around the Swift room:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cătălin Badea will finally bring us the long awaited &amp;ldquo;Conversation History&amp;rdquo; support, using the
newly minted &lt;a href=&quot;http://xmpp.org/extensions/xep-0313.html&quot;&gt;Message Archive Management XEP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mateusz Piękos will be adding shared whiteboarding functionality&lt;/li&gt;
&lt;li&gt;Yoann Blein is going to implement screen sharing using &lt;a href=&quot;http://xmpp.org/about-xmpp/technology-overview/jingle/&quot;&gt;Jingle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Since Kevin and I could only mentor Cătălin and Mateusz, and we &lt;em&gt;really&lt;/em&gt; wanted to have Yoann join us as well, we decided to bring in some extra help this year. Tobias, who not only has participated in GSoC 4 times as a student, but also is a top Swift contributor, and authored practically all of the Swift Jingle code during GSoC last year, will be mentoring Yoann in the screen sharing project.&lt;/p&gt;

&lt;p&gt;As you can see: great times ahead!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Experimental File Transfer support hits Swift </title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/swift-experimental-ft"/>
    <updated>2011-09-25T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/swift-experimental-ft</id>
    <content type="html">&lt;p&gt;It&amp;rsquo;s been a busy summer for &lt;a href=&quot;http://ayena.de&quot;&gt;Tobias Markmann&lt;/a&gt;, one of the &lt;a href=&quot;http://xmpp.org/2011/04/xsf-welcomes-google-summer-of-code-2011-students/&quot;&gt;XMPP Standards Foundation’s 2011 Google Summer of Code students&lt;/a&gt;. He has been working on implementing File Transfer support for &lt;a href=&quot;http://swift.im&quot;&gt;Swift&lt;/a&gt;, using the fresh Jingle XMPP protocols. I&amp;rsquo;m happy to announce that we integrated &lt;a href=&quot;http://swift.im/git/swift/commit/?id=4f62e5ec4b42929fe3c1a68667e63cb1b7a35509&quot;&gt;Tobias’s work&lt;/a&gt; as an experimental feature into the main Swift branch, where it will be further developed and brushed off before being enabled in our nightly builds and releases.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;For those interested in the nitty gritty protocol details: file transfers are negotiated through the Jingle File Transfer protocol (&lt;a href=&quot;http://xmpp.org/extensions/xep-0234.html&quot;&gt;XEP-0234&lt;/a&gt;), using SOCKS5 (&lt;a href=&quot;http://xmpp.org/extensions/xep-0260.html&quot;&gt;XEP-0260&lt;/a&gt;) as the main transport, and In-Band Bytestreams (&lt;a href=&quot;http://xmpp.org/extensions/xep-0261.html&quot;&gt;XEP-0261&lt;/a&gt;) as fallback. To improve connectivity, we use both the &lt;a href=&quot;http://files.dns-sd.org/draft-cheshire-nat-pmp.txt&quot;&gt;NAT Port Mapping Protocol&lt;/a&gt; and the &lt;a href=&quot;http://www.upnp.org/&quot;&gt;UPnP Internet Gateway Device protocols&lt;/a&gt; to allow connections through most firewalls, and &lt;a href=&quot;http://xmpp.org/extensions/xep-0065.html#mediated&quot;&gt;SOCKS5 relaying proxies&lt;/a&gt; in case all else fails.&lt;/p&gt;

&lt;p&gt;The new feature has been tested for interoperability against (slightly modified) development versions of both &lt;a href=&quot;http://pidgin.im&quot;&gt;Pidgin&lt;/a&gt; and &lt;a href=&quot;http://gajim.org&quot;&gt;Gajim&lt;/a&gt;, which, together with the Pidgin-based &lt;a href=&quot;http://adium.im&quot;&gt;Adium&lt;/a&gt;, cover a large XMPP user base. After both clients update their protocols to track the newly published Draft specification versions, all 3 should be able to exchange files seamlessly.&lt;/p&gt;

&lt;p&gt;What still remains to be done is lots of testing (both internal testing, user testing, reliability testing, and interop testing), bugfixing, and some refactoring here and there to clean up some of the code (which already is in very good shape). Our end goal is to reach a rock solid implementation, with a near guarantee that file exchange will always work (which experience teaches us is far from trivial).&lt;/p&gt;

&lt;p&gt;To conclude, we’ld like to thank Tobias for contributing this great new feature to Swift, for providing valuable protocol feedback to the XSF, and for laying the foundation to other exciting Jingle-based features (including voice/video conferencing).&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Summer of Swift Code 2011</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/swift-gsoc-2011"/>
    <updated>2011-04-26T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/swift-gsoc-2011</id>
    <content type="html">&lt;p&gt;Yesterday, Google &lt;a href=&quot;http://google-opensource.blogspot.com/2011/04/students-announced-for-2011-google.html&quot;&gt;announced&lt;/a&gt; the 1116 students that were accepted for this year&amp;rsquo;s edition of the Google Summer of Code, &lt;a href=&quot;http://xmpp.org/2011/04/xsf-welcomes-google-summer-of-code-2011-students/&quot;&gt;5&lt;/a&gt; of which will be working with the XMPP Standards Foundation. We&amp;rsquo;re very happy to welcome both  Tobias Markmann and Vlad Voicu, who will be working full-time on Swift this summer, implementing file transfer support and conversation history respectively.&lt;/p&gt;

&lt;p&gt;We have to mention that these weren&amp;rsquo;t the only proposals we received. Most of the proposals we received this year were of good quality: we suspect that the teaser tasks we put up for potential students made it possible for both the students and us to get an idea up front of what should be expected. However, based on experience from previous years, we decided we should only accept 2 students, to ensure that we could give our full attention to making all projects successful (including fast integration into a Swift release). We&amp;rsquo;re convinced that both Vlad and Tobias will live up to their expectations, and implement some of the most requested Swift features today!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Mimicking Jaiku with Psi</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-jaiku"/>
    <updated>2008-05-02T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psi-jaiku</id>
    <content type="html">&lt;p&gt;The day before yesterday, &lt;a href=&quot;http://stpeter.im&quot;&gt;Peter Saint-Andre&lt;/a&gt; sent out a couple of &lt;a href=&quot;http://jaiku.com&quot;&gt;Jaiku&lt;/a&gt; invites to all Jabber Google Summer of Code students and their mentors, including me. Never having looked at microblogging before, I toyed around with it a bit, and it quickly reminded me that I still had something on my Psi wish-list for a while now: a flat, live log of all Jabber events in your network. Since I had a long weekend, I quickly coded up a prototype, and hooked it into Psi.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;The result looks a bit like this:&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://el-tramo.be/files/blog/psi-jaiku.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;If you know Jaiku, you&amp;rsquo;ll probably notice that this looks very similar to the Jaiku web interface. Besides status messages, there are all kinds of (extended) presence events from your contacts, such as the currently playing tune or his/her current mood. Groupchat (&lt;em&gt;`channel'&lt;/em&gt; in Jaiku) and directed messages are interleaved with the events, and get a hyperlink which, when clicked, opens up the corresponding groupchat or chat dialog. This type of event log allows you to have a good overview of everything that is happening in your Jabber network. And if your log gets cluttered with groupchat events, you can always disable groupchat events (or any other type of event) at the top of the dialog, with a more compact log as a result. Finally, just as with the Jaiku Jabber bot, you can quickly reply to the last event from a certain user at the bottom of the dialog. &lt;/p&gt;

&lt;p&gt;When will this prototype be production-ready, you ask? Well, I&amp;rsquo;m actually not planning to invest any more time in it in the near future. The reason is that &lt;a href=&quot;http://alek.silverstone.name/&quot;&gt;Aleksey Palazchenko&lt;/a&gt; (aka AlekSi) will create a brand new history system for Psi for his Google Summer of Code project. I'm pretty sure his new history system will enable us to get a global live history of events, together with filtering based on type. And if we still need some extra functionality, we could always create a plugin.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Improving Psi's roster</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-roster-improvements"/>
    <updated>2008-05-01T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psi-roster-improvements</id>
    <content type="html">&lt;p&gt;For a while now, Psi users have been requesting several changes and additions to the roster (or `&lt;em&gt;contact list&lt;/em&gt;&amp;lsquo;). These requests include grouping contacts into meta-contacts, nested roster groups, and displaying user avatars in the roster. We have been postponing all these changes to the roster as much as possible, because none of us wanted to touch the roster code, for reasons I&amp;rsquo;ll explain below. This year, Psi is fortunate enough to have &lt;a href=&quot;http://gislan.utumno.pl&quot;&gt;Adam Czachorowski&lt;/a&gt; (aka Gislan), a student from the &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Google Summer of Code&lt;/a&gt;, to work on roster improvements.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;So far, the major cause of all Psi developers staying clear from doing substantial roster changes is probably the fact that all roster-related classes are very &lt;strong&gt;tightly coupled&lt;/strong&gt; to each other. This has several consequences: &lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;It's hard to get a good &lt;strong&gt;understanding&lt;/strong&gt; of which piece of code does what, since there is no separation of logic between the different classes, and none of them work without the other one.&lt;/li&gt;
    &lt;li&gt;The code is very &lt;strong&gt;fragile&lt;/strong&gt;: if you change one tiny piece, you might break something completely different. Moreover, it's hard to tell what you broke, since the functionality is spread out across the different classes.&lt;/li&gt;
    &lt;li&gt;The code is &lt;strong&gt;untestable&lt;/strong&gt;: Since there is no decent separation of the roster logic (i.e. the structure of the roster) and the roster user interface (i.e. how it is shown), it has been impossible so far to create some form of automated tests for the roster code. Because of the tight coupling between the various classes, it is impossible to test each part of the roster functionality in isolation, making unit testing impossible. Given that the roster is the most central part of the Psi user interface, it is actually unacceptable that we have no form of testing whether it (still) functions correctly.&lt;/li&gt;
    &lt;li&gt;There can be &lt;strong&gt;no reuse&lt;/strong&gt; of any of the roster code in other parts of the UI (such as the list of participants in the MUC dialog), or even for other IM clients that are based on the back-end of Psi.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Because of these fundamental issues, a complete makeover of the roster code is in order. More specifically, we want to have a clear separation of anything that has to do with UI, and the actual logic of the roster. Additionally, we want the (untestable) UI layer to be as thin as possible, pushing as much down to the logic layer as we can. Finally, we want to achieve a full coverage of the logic layer using only unit tests.&lt;/p&gt;

&lt;p&gt;What Gislan will exactly do in his Google Summer of Code project still has to be worked out in detail. He will be responsible for a major part (if not all) of the roster rewrite, and get some new functionality in there as well (since that will be a breeze with the new code). You can follow his progress on &lt;a href=&quot;http://gislan.utumno.pl&quot;&gt;his blog&lt;/a&gt;, and get more detailed technical information on the &lt;a href=&quot;http://psi-im.org/wiki/index.php?title=GSoC08_Roster_Improvements&quot;&gt;project page&lt;/a&gt; for his GSoC project.&lt;/p&gt;
</content>
  </entry>
  
</feed>

