<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jjgod / blog &#187; im</title>
	<atom:link href="http://blog.jjgod.org/tag/im/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jjgod.org</link>
	<description>Random notes &#38; thoughts by Jiang Jiang.</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:08:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Adium 一些工作与开源软件相关的思考</title>
		<link>http://blog.jjgod.org/2008/07/09/adium-related-work/</link>
		<comments>http://blog.jjgod.org/2008/07/09/adium-related-work/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 07:49:08 +0000</pubDate>
		<dc:creator>jjgod</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[adium]]></category>
		<category><![CDATA[im]]></category>

		<guid isPermaLink="false">http://blog.jjgod.org/?p=222</guid>
		<description><![CDATA[更新: 原来 MSN 群中使用 /showname 命令也可以控制这一点。 另外 Adium 其实是个非常好的开发群体，非常 active &#38; helpful，只是项目庞大到了这样，bug tracker 里的 ticket 一多，开发者自己也很难保证代码结构足够好了。 因为最近开始使用 MSN 群 (1, 2)，但我使用的 MSN 客户端 Adium 并不能将群内发言人的身份显示出来，只能全部统一显示为群本身的名称。 其实这是 Adium 所使用的 IM 协议支持库 libpurple 在支持 MSN 协议上固有的缺陷 &#8212; 不过也不算特别严重的缺陷，因为 Windows 版本的 MSN 也只在 Windows Live Messenger 8 以上才支持，而 Mac OS X 下的 Microsoft Messenger 干脆到现在也不支持。 所以，要修复这个问题，必须从 libpurple 上打主意，然而，因为 [...]]]></description>
			<content:encoded><![CDATA[<p>更新: 原来 MSN 群中使用 /showname 命令也可以控制这一点。</p>

<p>另外 Adium 其实是个非常好的开发群体，非常 active &amp; helpful，只是项目庞大到了这样，bug tracker 里的 ticket 一多，开发者自己也很难保证代码结构足够好了。</p>

<hr />

<p>因为最近开始使用 MSN 群 (<a href="http://xiaoi.com/">1</a>, <a href="http://messengergroupchat.com/">2</a>)，但我使用的 MSN 客户端 <a href="http://www.adiumx.com">Adium</a> 并不能将群内发言人的身份显示出来，只能全部统一显示为群本身的名称。</p>

<p>其实这是 Adium 所使用的 IM 协议支持库 <a href="http://developer.pidgin.im/wiki/WhatIsLibpurple">libpurple</a> 在支持 MSN 协议上固有的缺陷 &#8212; 不过也不算特别严重的缺陷，因为 Windows 版本的 MSN 也只在 <a href="http://messenger.live.com">Windows Live Messenger</a> 8 以上才支持，而 Mac OS X 下的 <a href="http://www.microsoft.com/mac/products/messenger/default.mspx">Microsoft Messenger</a> 干脆到现在也不支持。</p>

<p>所以，要修复这个问题，必须从 libpurple 上打主意，然而，因为 libpurple 编译不便 (后面我会解释为什么这么说)，Adium 本身的<a href="http://trac.adiumx.com/browser/trunk">代码仓库</a>中只提供了编译好的 libpurple framework，编译这个 framework 的步骤则是分离出来的，要单独用 <code>Utilities/dep-build-scripts</code> 下面的脚本来<a href="http://trac.adiumx.com/wiki/GettingLibpurpleSource">完成</a>。</p>

<p>可是问题变得越来越 tricky 了：为了编译 libpurple 的代码，必须下载整个 <a href="http://www.pidgin.im">pidgin</a> 的代码，但 pidgin 的代码又是用臭名卓著的 <a href="http://www.monotone.ca">Monotone</a> 来管理的，这直接导致下载当前代码的步骤就变得复杂无比，更不用说后面的编译了。</p>

<p>这还没有完，崩溃的是，Adium 虽然其他协议的支持都是直接从 libpurple 来的，但偏偏 MSN 协议最近改用了从 libpurple 中 fork 出来的 <a href="http://github.com/felipec/msn-pecan">msn-pecan</a> 项目，而 msn-pecan 又是用 git 来管理代码的……</p>

<p>这么一来，为了修改 MSN 协议支持并编译出 Adium，我们必须至少涉及三套版本管理系统 (Subversion, Monotone 和 git)，把 Adium 提供的一堆错综复杂的脚本找出来，让它先给 libpurple 打上 Adium 自己的 patch，然后分 ARCH 来生成 configure 并分别配置编译，最后合并成 Universal Binary 再 copy 回 Adium 的 Frameworks 目录去&#8230; 到这里我还没开始改一行代码呢！</p>

<p>虽然这个问题<a href="http://code.google.com/p/msn-pecan/issues/detail?id=60">最终得到了解决</a>，我提交的 patch 也将合并到 msn-pecan 官方的代码中去，可是这个经历仍然让我觉得颇有体会：</p>

<p>从 F/OSS 项目的贡献者来讲，要成功的参与项目，就必须掌握好常用的版本管理工具并了解基本的编译手段，才有机会参与到真正的代码修改中去。</p>

<p>而从 F/OSS 项目的发起和维护者来讲，要创造一个成功的项目，应该：</p>

<ol>
<li>避免使用怪异的版本管理工具</li>
<li>编译步骤简单再简单，尽可能分解为可以单独执行调试的步骤，尽可能减少会在编译时出现的问题</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.jjgod.org/2008/07/09/adium-related-work/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

