<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>El Tramo | Psi</title>
  <subtitle>Remko Tronçon's Homepage</subtitle>
  <link href="http://el-tramo.be/blog/tag/psi/feed/" rel="self" type="application/rss+xml"/>
  <link href="http://el-tramo.be/"/>
  <updated>2011-12-30T17:00:29+01:00</updated>
  <id>http://el-tramo.be/</id>
  <author>
    <name>Remko Tronçon</name>
    <uri>http://el-tramo.be/about/</uri>
  </author>
  
  <entry>
    <title>Trying out Git</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-git"/>
    <updated>2008-08-26T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psi-git</id>
    <content type="html">A while ago, the Psi development team switched from &lt;a href=&quot;http://darcs.net&quot;&gt;Darcs&lt;/a&gt; to &lt;a href=&quot;http://subversion.tigris.org&quot;&gt;Subversion&lt;/a&gt; for version control, because the Darcs pros (distributed, extremely simple and elegant) did not compensate for the cons any longer (slowness, non-scalability, ‘infinite’ merges, lack of community and tools, ...). Our development was pretty central anyway at that time, so we decided that Subversion was good enough. However, we started to miss local commits more than we thought we would, and some of us are working on their own forks, which makes Subversion a suboptimal choice. We are therefore currently trying out &lt;a href=&quot;http://git.or.cz&quot;&gt;Git&lt;/a&gt; as a replacement, which should bring us all the good stuff from Darcs, combined with the speed and portability of Subversion. Note that during the experiment, we will not be updating our Subversion branch any more (which will soon cause breakage, since Subversion automatically updates changes to the external Iris repository).

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

If you're interested in following our latest developments from our experimental Git tree, simply clone our official repository through the following steps:
&lt;blockquote&gt;
&lt;pre&gt;git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update&lt;/pre&gt;
&lt;/blockquote&gt;
To get the latest changes after an initial clone, execute the following commands
&lt;blockquote&gt;
&lt;pre&gt;git pull
git submodule update&lt;/pre&gt;
&lt;/blockquote&gt;
Note that you need Git 1.5 or later in order to be able to do these commands.

If you're interested in knowing more about using Git, check out Scott Chacon's excellent &lt;a href=&quot;http://gitcasts.com/posts/railsconf-git-talk&quot;&gt;Git talk&lt;/a&gt; (and accompanying &lt;a href=&quot;http://peepcode.com/products/git-internals-pdf&quot;&gt;book&lt;/a&gt;).

For fans of social networking, we also have a mirror of the official Psi repository on &lt;a href=&quot;http://github.com/psi-im&quot;&gt;GitHub&lt;/a&gt;. And while we're on the topic of web interfaces: while waiting for an official web interface to our Git repository, you can check out an experimental one &lt;a href=&quot;http://git.el-tramo.be/browse/psi.git/&quot;&gt;here&lt;/a&gt;.
</content>
  </entry>
  
  <entry>
    <title>Going Agile with Google Summer of Code</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/gsoc-agile"/>
    <updated>2008-06-26T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/gsoc-agile</id>
    <content type="html">Although &lt;a href=&quot;http://psi-im.org&quot;&gt;Psi&lt;/a&gt; has had a fair number of succesful &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Google Summer of Code&lt;/a&gt; projects so far, we have experienced some failures as well: the summer before last, 3 out of 6 projects didn't make the final deadline. A project's failure was typically due to not having anything really usable at the end of the summer, regardless of the good work that &lt;em&gt;was&lt;/em&gt; done during the past months. To reduce the risk of such surprises, I decided to take an Agile Development approach for this year's ‘&lt;a href=&quot;http://psi-im.org/wiki/index.php?title=GSoC08_Roster_Improvements&quot;&gt;Roster improvement&lt;/a&gt;’ project.

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

Here are some of the principles of &lt;a href=&quot;http://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;Agile software development&lt;/a&gt; (as written down in the &lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile Manifesto&lt;/a&gt;), and how we apply them to &lt;a href=&quot;http://gislan.utumno.pl/&quot;&gt;Adam&lt;/a&gt;'s GSoC project:
&lt;ul&gt;
	&lt;li&gt;The developer &lt;strong&gt;frequently delivers working software&lt;/strong&gt; to the customer. In our case, Adam sends me a working roster every monday, which I can play around with. I then tell him what I do and don't like about it, and he processes my feedback during the next iteration (i.e. the next week). Of course, since the roster is made from scratch, the backend of the roster is completely mocked up during the first weeks. As the project progresses, the backend will become more 'real'. &lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Working software&lt;/strong&gt; is the primary &lt;strong&gt;measure of progress&lt;/strong&gt;. This avoids the kind of surprises we had before, where both student and mentor believed everything was going fine during the project, but where nothing could be delivered at the end of the project. &lt;/li&gt;
	&lt;li&gt;Code is kept as &lt;strong&gt;simple&lt;/strong&gt; as possible: if you don't need something, leave it out. By initially focusing on the roster frontend (while keeping the backend framework mocked up), we ensure that our backend will only be as complex as we actually need it to be. Moreover, we can &lt;strong&gt;constantly change&lt;/strong&gt; our mind about the &lt;strong&gt;requirements&lt;/strong&gt; throughout the whole project without having to throw away the complete backend. This contrasts with the previous attempts we had at reworking the Psi roster, where we started by working out a complex roster backend, but never got to the point where we had something working with this (over-)designed framework, and had to start over all again.&lt;/li&gt;
	&lt;li&gt;Code is written with &lt;strong&gt;testability&lt;/strong&gt; in mind. In principle, all new code needs to be tested (and preferably even unit tested before it's written), which allows you to quickly refactor while remaining sure that your code still works as before. However, given the very strict time constraints, I'm not sure yet that we're going to apply this &lt;a href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test-driven Development&lt;/a&gt; approach (although some claim that the extra time you spend in tests will even pay off in the short term).&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Good designs&lt;/strong&gt; make sure that you can easily adapt your code to changing requirements. For example, a &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;Model-View-Controller&lt;/a&gt;-based design seems to lend itself well to the roster, making the (rather complex) roster logic both testable, extensible, and easy to understand.&lt;/li&gt;
&lt;/ul&gt;
I'm convinced that these principles will ensure that both Adam and I (and of course all Psi users) will get a succesful result at the end of the project, and that we'll have had a fun time during these 3 months.
</content>
  </entry>
  
  <entry>
    <title>PsiCon 2008 @ San Francisco Bay Area, CA</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psicon2008"/>
    <updated>2008-05-16T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psicon2008</id>
    <content type="html">This year, we held the first ever International Psi Conference in the San Francisco Bay Area. The event  was spread out over 2 days, with different venues to keep things interesting. The conference was a big success, with attendees from different countries (including the Netherlands, Belgium, and the U.S.), and the presence of several big companies.

&lt;!--more--&gt;The opening day of the conference took place at '&lt;a href=&quot;http://www.aquicalmex.com/&quot;&gt;Aqui Cal-Mex&lt;/a&gt;' in Campbell. This day included a keynote talk by Steve Pao from &lt;a href=&quot;http://www.barracudanetworks.com/&quot;&gt;Barracuda Networks&lt;/a&gt;, talking about the Barracuda IM solutions and open source. Other interesting discussions included possible opportunities for Psi in the embedded market, and how we could surf the Web 3.0 wave. 

The second day of the conference was held at '&lt;a href=&quot;http://www.thecheesecakefactory.com/&quot;&gt;The Cheesecake Factory&lt;/a&gt;' in Palo Alto, and mainly consisted of breakout sessions with Justin Karneges and Jason Kim, where we (amongst others) brainstormed about possible future projects based on Psi, discussed the plans for upcoming releases, and talked about how to streamline the interactions with Psi-based projects. The conference ended with the social event: a guided tour of &lt;a href=&quot;http://www.sjc.org/&quot;&gt;Mineta San José International Airport&lt;/a&gt;.

This year's local chair was Justin Karneges, who provided us with the supplies (notebook, pen, ...), eco-friendly transportation, and who carefully picked the venues to provide both good food and a good infrastructure to make the 38ºC (100ºF) heat wave more bearable. Thanks Justin!

&lt;em&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Had lunch with some guys from Barracuda, had dinner with Justin and Jason, took a wrong turn and ended up at the airport, wheather was hot, had jetlag this morning, was bored to death, wrote something.&lt;/em&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">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;!--more--&gt;

The result looks a bit like this:
&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;
If you know Jaiku, you'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. 

When will this prototype be production-ready, you ask? Well, I'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.
</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">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;'). 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'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;!--more--&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;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;
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.

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.
</content>
  </entry>
  
  <entry>
    <title>Introducing Greem</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/greem-intro"/>
    <updated>2007-10-14T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/greem-intro</id>
    <content type="html">After a short hiatus, I finally resumed work on &lt;a href=&quot;http://el-tramo.be/blog/greenphone-grant&quot;&gt;my new Jabber/XMPP client project&lt;/a&gt;, which I christened &lt;em&gt;`Greem'&lt;/em&gt;. The main goal of the project is to create a mobile Jabber/XMPP client for the &lt;a href=&quot;http://trolltech.com/products/qtopia&quot;&gt;Qtopia&lt;/a&gt; platform. The nice thing about Qtopia is that its target audience keeps on expanding: besides running on the GreenPhone (of which Trolltech was kind enough to provide me with one), Qtopia has recently been ported to the Neo 1973 (OpenMoko), and even &lt;a href=&quot;http://labs.trolltech.com/blogs/2007/03/28/were-porting-qt-4-to-windows-ce-and-windows-mobile/&quot;&gt;Windows CE and Windows Mobile&lt;/a&gt;. In this post, I briefly describe what the expectations and the goals are for Greem, and how Psi fits into the picture.

&lt;!--more--&gt;The goal of Greem is to be a clean, simple Qt/Qtopia client, built completely from scratch, using lessons learned from the Psi project. Since it is my intention to keep Greem as simple and clean as possible, some advanced features from Psi will not be available: multiple accounts, customizations that are only relevant to 1% of the population, ... However, development &lt;em&gt;will&lt;/em&gt; be focused on things that Psi also needs in the near future:
&lt;ul&gt;
	&lt;li&gt;Clean, unit testable APIs.&lt;/li&gt;
	&lt;li&gt;New and improved roster (for meta-contacts, avatars, ...)&lt;/li&gt;
	&lt;li&gt;Server-side message archiving&lt;/li&gt;
	&lt;li&gt;Reliable communication&lt;/li&gt;
	&lt;li&gt;Simplicity&lt;/li&gt;
&lt;/ul&gt;
A lot of this will either flow directly back into Psi (which should be possible thanks to the decoupled APIs), or will be used as a guide to refactor certain parts of Psi that need it (e.g. the roster).

For the first release(s), not every part of Greem will be written from scratch, though. Although I already have a major part of the low-level XMPP server connection handling coded up, Greem will initially use &lt;a href=&quot;http://delta.affinix.com/iris&quot;&gt;Iris&lt;/a&gt; as its backend for connecting to a server. Anything beyond the connection (i.e. XMPP data structures, stanza handling, ...) will be done outside of Iris. This way, the major focus can be on the front-end and general frameworks, without having to worry about the low-level implementation details (which can typically be a big hassle to get right). In the future, the Iris backend, which is connected through a very thin layer with the front-end, will be replaced by my own implementation of XMPP streams.

An update on the current status of the project will follow soon, together with some preliminary screenshots.
</content>
  </entry>
  
  <entry>
    <title>Testing Psi</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-testing"/>
    <updated>2007-10-01T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psi-testing</id>
    <content type="html">While the last bugs are being squeezed out of &lt;a href=&quot;http://www.kismith.co.uk/wordpress/index.php/2007/09/25/psi-011-rc3/&quot;&gt;Psi 0.11's release candidates&lt;/a&gt;, work on 0.12 has already begun. One thing I'm excited about as a developer is the fact that we're making the Psi codebase `testable', which has some nice consequences.

&lt;!--more--&gt; The first part of our effort to make Psi testable is creating &lt;strong&gt;unit tests&lt;/strong&gt; for most of our classes (using &lt;a href=&quot;http://cppunit.sourceforge.net/&quot;&gt;CppUnit&lt;/a&gt;), which should provide quick checks that our classes behave (and keep behaving) the way they should. However, the fact that Psi was not designed to be testable from the ground up makes this a non-trivial job, requiring quite some refactoring. This is something that will happen incrementally over time. A side effect of this refactoring will be an increase in modularity, allowing us to use different frontends (e.g. Cocoa) for the same code.

The second part we're working on is creating &lt;strong&gt;UI tests&lt;/strong&gt; for parts that are not automatically testable. For this, we are decoupling all our dialogs from the rest of the application, such that we can create a standalone application that allows you to toy with the dialog. This decoupling not only means that it becomes very easy to test dialogs with your own scenarios (without having to start Psi, connect to a server, ...), but also means that the dialogs become completely reusable for other applications.

We still have a long way to go until every part of Psi is testable (either automatically or not), but I am very much looking forward to the day where all of our code is nicely decoupled, and we can run &lt;code&gt;make check&lt;/code&gt; on every commit to ensure that we didn't break anything silly.
</content>
  </entry>
  
  <entry>
    <title>Customizable XEP-0076 implementation</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/malicious-stanzas"/>
    <updated>2007-04-01T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/malicious-stanzas</id>
    <content type="html">It is time for us to be honest: the reason Psi has not had a release in the past year and a half is because we have secretly been working on one of the most controversial and least implemented features in the Jabber world: &lt;a href=&quot;http://www.xmpp.org/extensions/xep-0076.html&quot;&gt;XEP-0076 (Malicious Stanzas)&lt;/a&gt;. We have allocated two full-time developers for achieving this: &lt;a href=&quot;http://machekku.uaznia.net/&quot;&gt;Machekku&lt;/a&gt; has done the groundbreaking work, implementing the main processing loop, statistic gathering, and user interfaces for this type of stanzas, whereas I have been concentrating mostly on backend issues. Although our work is still in a highly experimental stage, we decided to release the full source code in order to get useful feedback from the community. Besides a Psi implementation, we also provide an Openfire server-side implementation for malicious stanza tagging as an extension of the content filter, targeted at fixing non-XEP-0076-compliant behavior of entities.

&lt;!--more--&gt; You can find Machekku's and my Psi work &lt;a href=&quot;http://machekku.uaznia.net/xmpp/psi/patches/#xep_0076_scanner&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://el-tramo.be/files/psi/xep-0076_send.diff&quot;&gt;here&lt;/a&gt; respectively. Apply these patches to a clean development version of Psi. In order to use this work, please modify the &lt;tt&gt;&amp;lt;evil&amp;gt;&lt;/tt&gt; section of your &lt;tt&gt;options.xml&lt;/tt&gt; accordingly. XEP-0076 statistics can be found in the options dialog, in a separate tab.

The patch against the latest development version of Openfire can be found &lt;a href=&quot;http://el-tramo.be/files/openfire/xep-0076.diff&quot;&gt;here&lt;/a&gt;. This will add an extra checkbox to the content filter pane, allowing messages to be tagged as malicious.
&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://machekku.uaznia.net/xmpp/psi/screens/antievil.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Revamped account dialogs</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-accounts"/>
    <updated>2007-03-16T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/psi-accounts</id>
    <content type="html">We recently made Psi's dialogs related to account creation, registration, and modification a bit easier to use. The account registration process is now a wizard-like dialog, where a user first needs to select a server (from a &lt;a href=&quot;http://jabber.org/servers.xml&quot;&gt;centralized on-line list&lt;/a&gt;), and then needs to provide the information requested by the server (according to &lt;a href=&quot;http://www.xmpp.org/extensions/xep-0077.html&quot;&gt;XEP-0077: In-Band Registration&lt;/a&gt;). We have also introduced new default settings that should avoid the need to tweak any account settings when adding an existing account. This means that you should be able to log into any XMPP server (including Google Talk) just by entering your JID and password. Some more details and screenshots below.

&lt;!--more--&gt; Removing the need to tweak account settings was done by a combination of new &lt;em&gt;'Encrypt connection'&lt;/em&gt; and &lt;em&gt;'Allow plaintext authentication'&lt;/em&gt; options. For &lt;em&gt;'Encrypt connection'&lt;/em&gt;, there is a choice of &lt;em&gt;'Always'&lt;/em&gt;, &lt;em&gt;'Never' &lt;/em&gt;(mostly used for debugging), &lt;em&gt;'Automatically'&lt;/em&gt; (which uses encryption if TLS support is available), or &lt;em&gt;'Legacy SSL'&lt;/em&gt;, where the default option is to encrypt traffic when it is available. For &lt;em&gt;'Allow plaintext authentication'&lt;/em&gt;, the options consist of &lt;em&gt;'Always'&lt;/em&gt;,&lt;em&gt; 'Never'&lt;/em&gt;, and &lt;em&gt;'Over an encrypted connection'&lt;/em&gt;, the latter being the default. A combination of these 2 defaults makes that you should always be able to connect to a server that is compliant to the XMPP1.0 specification, without allowing anything less secure than what the spec allows.

One more thing on our TODO list is to allow importing (self-signed) server certificates. At the moment, most users still change the option to ignore all SSL warnings, which is less than desirable from both the security and the usability point of view.

Below are some screenshots of the reworked account dialogs.

&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://el-tramo.be/files/psi/shots/accountreg1.png&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;
&lt;img src=&quot;http://el-tramo.be/files/psi/shots/accountreg2.png&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;
&lt;img src=&quot;http://el-tramo.be/files/psi/shots/accountmodify.png&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Receiving Google Talk files with libjingle</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-googleft"/>
    <updated>2007-02-04T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/psi-googleft</id>
    <content type="html">As Google released a new version of &lt;a href=&quot;http://code.google.com/apis/talk/libjingle&quot;&gt;libjingle&lt;/a&gt; last friday, I decided to experiment with their file transfer implementation in Psi this weekend. I added some code that allows someone to accept files sent by Google Talk, and tested it with a few Google Talk contacts, with a perfect success rate (so far). For the brave who wish to experiment with this, see the instructions below. Note that this code is unofficial, untested, only uses a very rudimentary UI (there is no integration with the existing file transfers), still suffers from at least two bugs (on Mac OS X: one that segfaults when receiving images, and one where CPU skyrockets to 100% after a while, which we had with older libjingles as well), and has no support from the Psi developers whatsoever. Comments should therefore go directly to me.

&lt;!--more--&gt;
To compile Google File Transfer support in Psi, get the latest development version from &lt;a href=&quot;http://el-tramo.be/blog/psi-svn&quot;&gt;Subversion&lt;/a&gt;. First, use a custom configure script to configure Psi:
&lt;blockquote&gt;&lt;code&gt;./configure-jingle --enable-google-ft&lt;/code&gt;&lt;/blockquote&gt;
(note that you may need to provide a path to expat). &lt;strong&gt;DO NOT&lt;/strong&gt; enable other Jingle features, as both conflict at the moment.

Next, download and build the new version of libjingle by going into the &lt;code&gt;third-party/libjingle.new&lt;/code&gt; subdir, and executing the following commands:
&lt;blockquote&gt;&lt;code&gt;make -f Makefile.libjingle
qmake
make&lt;/code&gt;&lt;/blockquote&gt;
Finally, go back to the root dir, and build Psi. After the build has finished, your version of Psi should be able to receive files from Google Talk, putting them in &lt;code&gt;~/googletalk_files&lt;/code&gt; (or &lt;code&gt;~/Desktop/googletalk_files&lt;/code&gt; if you are on Mac OS X).
</content>
  </entry>
  
</feed>

