pidgin/old.pidgin.im

Update win32 page with Pidgin information.
old
2007-04-30, Daniel Atallah
cf17329ea7dd
Update win32 page with Pidgin information.
<?
$page->title = "Summer of Code";
require('../inc/template.inc.php');
?>
<i>For information about Summer of Code 2006, see <a href='2006.php'>last year's page</a></i>.
<i>For information about Summer of Code 2005, see <a href='2005.php'>that page</a></i>.
<h1>Contents</h1>
<ul>
<li><a href="#news">News</a></li>
<li><a href="#intro">Introduction</a></li>
<li><a href="#accepted">Accepted projects</a></li>
<li><a href="#available">Available suggestions</a></li>
</ul>
<h1 id="intro">Introduction</h1>
<p>Once again, Google has chosen Pidgin to participate as a mentoring organization in their Summer of Code project. The Summer of Code is like an internship; students apply to work for an open-source project, under the guidance and mentorship of experienced open-souce developers, and upon sucessful completion of their project, the student is paid $4500. Find out more about the Summer of Code at <a href='http://code.google.com/soc'>code.google.com</a>.</p>
<p>Pidgin is current accepting applications from students interested in participating. See below for an in-progress list of our ideas, or come up with an idea of your own.</p>
<h1 id="available">Summer of Code Project Suggestions</h1>
<p>Largely due to the work done by a summer of code student last year, Pidgin is currently separated into three modules, 'gaim' the GTK+ GUI client, 'gaim-text' the console-based client, and 'libgaim' the backend library that powers both of these, and other external projects. This list breaks our ideas between these three. Note that a project that affects libgaim may very well require changes to one or both of the UIs to be useful.</p>
<h2>libgaim</h2>
<table>
<tr><td class="highlight">Improved Privacy Support</td></tr>
<tr><td><p>As Pidgin began life as an AIM client, there are still some parts that are somewhat AIM-centric. Currently, one of the areas most uncomfortable for users of other protocols is privacy support. Your task would be to improve Pidgin's privacy support.</p>
<p>This job entails surveying other IM clients and determining what sort of privacy capabilities they offer, abstracting these all into a concise Pidgin backend API, designing a UI capable of handling the diversity of different privacy features, then finally, implementing and documenting your work.</p>
</td></tr>
<tr><td class="highlight">Certificate Manager</td></tr>
<tr><td><p>Some of our protocols, namely Jabber, IRC, and MSN, use SSL encryption. However, Pidgin currently has no way to ensure the user that she's actually connecting to the correct server. If a malicious cracker stood between you and your Jabber server, he could trick you into thinking he was the server. You would think your messages are encrypted, but the malicious cracker could read them all.</p>
<p>This is solved by a system known as "certificates." An SSL certificate authenticates that the server is who it claims to be. If the user trusts the certificate, she'll know her communications are safe.</p>
<p>Your task this summer is to write a certificate manager for Pidgin. This manager would display SSL certificates to the user and keep track of those the user has trusted. This way, the first time the user connects to a server, she'll be required to confirm the certificate is valid; subsequent connections to the same server with the same certificate will not prompt her again.</p>
<p>This same interface can be used elsewhere in Pidgin not directly related to SSL. For instance, several third-party plugins exist to encrypt Pidgin messages. These would benefit from a generic certificate manager.</p></td></tr>
<tr><td class="highlight">ICQ TLC</td></tr>
<tr><td><p>Our ICQ implementation in the oscar code is substandard in a variety of respects. We do not have full support for ICQ status, ICQ privacy, or ICQ formatting to name just a few shortfalls. Others include our buddy list management, message size restrictions and ICQ's chats. Your goal is to compare what gaim does at a protocol level with what the official winicq client does, figure out where it differs, and to repair Pidgin's implementation, extending Pidgin's capabilities where possible.</p></td></tr>
<tr><td class='highlight'>MySpace IM protocol plugin</td></tr>
<tr><td><p>Last year MySpace, the popular social-networking site announced its new instant messaging network and protocol. Your goal is to reverse engineer and implement support for this protocol in libgaim. If applying for this project, please demonstrate in your application that you have the knowledge and skills necessary to reverse engineer the protocol used by MySpace's Windows client.</p></td></tr>
<tr><td class='highlight'>GObjectification</td></tr>
<tr><td><p>Pidgin currently uses its own system for connecting to and emitting signals. For this project you'll convert all major Pidgin components to GObjects.</p></td></tr>
<tr><td class='highlight'>Improved group chat support</td></tr>
<tr><td><p>Some protocols, notably MSN and Yahoo! support un-named chats, or conferences. To date, Pidgin has had fairly poor support for this feature. Pidgin treats this multi-user chats as normal named chats with the name "MSN Chat" for instance. Logs for these chats are not separated by users, and there's no way to easily add a user to a one-on-one IM to turn it into a group chat.</p>
<p>Your goal this summer will be to design and implement an unnamed chat API in libgaim, figure out the details of properly logging them, and support the API in at least one client with support for easily turning a one-on-one chat into a group chat.</p>
</td></tr>
</table>
<h2>gaim</h2>
<table>
<tr><td class="highlight">Better HTML Widget</td></tr>
<tr><td><p>Pidgin currently uses a home-grown text rendering widget called GtkIMHtml. It has various minor drawbacks, including poor performance with large numbers of tags. The WYSIWYG text editing code is also a bit delicate and took quite a bit of tuning before it was able to generate HTML that isn't crazy.</p>
<p>For this project you should investigate alternative widgets that are capable of rendering fonts, images, colors, etc. and replace our current widget with something smaller, better, and more elegant.</p>
</td></tr>
</table>
<h2>gaim-text</h2>
<p>Possible improvements to gaim-text could include:
</p>
<table>
<tr><td class='highlight'></td></tr>
<tr><td><p>
<ul>
<li>A new window manager (or improvements to the existing ones). For example, a tiling window manager would be super awesome.</li>
<li>Improve the widget-packing in a container (GntBox), may be even have a grid-like container.</li>
<li>Implement the plugin-pref-ui using the request-api.</li>
<li>Have python (or some other) bindings for libgnt. This would allow creating functional/useful dbus clients with gnt ui.</li>
<li>Add some more items in the buddy-list menu. Copy the gstreamer, auto-reconnection etc. code from gtk-gaim into gaim-text.</li>
<li>Have a spell checker, which would add some way of indicating spelling errors, suggesting possible corrections etc.</li>
<li>Allow adding shortcut keys for the menuitems.</li>
</ul>
</p></td></tr>
</table>
<p> Some of the ideas listed for gaim-text may be too small to be considered for an SoC project. You may want to bundle a few together for a proposal. Also, it'd be really quite nice if you come up with new ideas of your own.</p>