Skip to content
xiehuc edited this page Jun 11, 2014 · 7 revisions

简介

项目简介

lwqq 库 是基于 webqq 设计的一套 c 语言函数库,提供python语言的绑定(暂定),

Authors: mathslinux <[email protected]> xiehuc <[email protected]>
Homepage: https://github.com/mathslinux/lwqq https://github.com/xiehuc/lwqq

webqq 是 Tencent 公司的产品, 所有解释权在腾讯公司. lwqq是使用GPLv3协议的开源代 码库, 旨在为linux用户提供方便的桌面接口. 任何人不得使用lwqq用于商业用途, 任何人 不得使用lwqq用于法律权限以外的事情. lwqq遵守webqq的使用, webqq能干的事情lwqq也 能够完成, webqq不允许做的事情lwqq坚决不去使用特殊的方法去hack. 可以看做是一个 webqq的一个衍生.

历史起源

最早的时候是gtkqq项目采用了webqq协议来开发, 后来则停止开发了. lwqq是mathslinux fork并维护的一个分支, 修正了许多错误. 并且也提供一个简单的gtk UI. 而我则是fork lwqq并在其基础上实现了pidgin的port. 并且在开发过程中向上游提供了一套全新的异步 接口. 但是这套接口改来改去改了很多次才稳定下来, 并且基本上就是从底层重构了一部 分内容, 而且由于我用的是CMake, 上游用的是autotools, 诸多原因导致想和上游合并变 得十分困难, 总是需要一方进行较大程度的让步才能够合并进来, 所以我只是把修改推送 到newapi分支, 不敢推送到master分支.

后来mathslinux去忙其它项目, 更新lwqq的频率比较少了, 所以现在主要是由我来更新维护. 我除了给lwqq增加了并发接口外, 还进行了跨平台的移植, 以及完善了许多协议的内容. 更新文档等等. 我计划是在某一个时间之后也会停止开发了, 所以我想现在在看这个文档 的你是不是也有激情和信念去fork一个lwqq, 并继续接替我和mathslinux的脚步维护下去. 虽然这大部分是一个公益活动, 但是我相信你会和我一样, 从先辈那里学到很多书本上学 不到的知识的.

我十分的尊敬mathslinux, 即使是我在开发的时候, 也时刻惦记着lwqq开发的宗旨: 我以 前以为lwqq是linux webqq的意思. 不过我之后才理解到, 除了这层表面含义之外, 还有深 层的意思是light weight qq. 轻量级的QQ, 除了要求依赖较少以外, 还要求代码实现干净 简洁, 可读性好. 不过C语言嘛, 的确写着有些啰嗦, 重复性质的代码比较多. 所以我觉得 也应该在上面再加一条: API简洁好用. 不过随着异步的引入, 导致代码复杂度极具上升, 越来越难保持代码简洁易读的要求了. 在经过多次修改之后, 终于完成了异步接口,从底层 到高层的分层实现 --- vp_list. 真正的达到了API易用的特点, 大部分情况下无需可以考 虑内存回收. 同时, 内部实现也相对比较易读. 为了保证能够很好的讲述实现的细节和想 法, 配合这本文档的部分章节应该能够讲清楚. 为什么采取这样实现. 文档是十分重要的 部分 !!

我在开始项目的初期受到了很多mathslinux的帮助, 教了很多C语言上书本上学不到的知识 , 十分的感谢. pidgin-lwqq和我fork的lwqq的开发是同步的, 一开始是直接绑定到一起的 , 后来则是用git submodule绑定到一起, 不过已经结合松散些了. 此时, 我也终于能够把 分出来的lwqq向上游合并, 不过这个时候已经很难合并进去了, 后来也不了了之. 最后在 0.3.0的时候, pidgin-lwqq才和lwqq完全分离出去, 靠api版本号来联系在一起. 这也预示 着lwqq的api初步稳定下来了. 以后再开发的时候除了考虑个人的兴趣喜好之外, 还要考虑 到对其它使用了lwqq的项目的影响, 需要将版本差异降到最低. 其实这是因为我以前不知 道在 ~/.xprofile 中加入 LD_LIBRARY_PATH 这个环境变量来加载安装在 /usr/local下面的lwqq库, 导致我只能把它们的代码放到一起编译开发, 所以说知识很重 要啊.

相关的项目

  • pidgin-lwqq : lwqq的官方pidgin接口
  • kopete-qq : 基于lwqq的kopete接口
  • qtqq : 基于qt的webqq协议实现, 带UI
  • iqq : 基于java的webqq协议的UI实现
  • webqq-core : iqq使用的库实现
  • libwebqq : avbot使用的webqq协议实现, 基于boost
  • dualx : 基于javascript的webqq协议实现, chrome接口, 带UI

如何获取帮助

本帮助文档可以从下面的3个地方获取:

  1. lwqq 项目的 github 主页的 Wiki 页面
  2. 编译时开启 Enable Docs 选项
  3. 在源代码的doc目录中直接使用 make

编译需要 sphinx 的支持,可以编译众多的格式。具体的参见 sphinx 的用法。

如何编译中文版pdf

编译中文版的pdf需要xelatex的支持,首先进入源代码的doc目录中:

$ make latex
$ cd build/latex
$ xelatex lwqq.tex
$ xelatex lwqq.tex

即可编译出中文版的pdf文件(或者使用 latexmk -xelatex 一条命令,免于多次使用 xelatex

或者直接一条语句: $make latexpdf , lwqq修改了sphinx的makefile文件, 使得能够 顺利的编译出pdf版本的文件.

pdf版本的排版精美, 文字美观, 特别适合当成书籍来阅读, 比如打印出来, 或者放在电子 阅读器中阅读. 体验更好.

本帮助的内容

本帮助的内容范围主要包括lwqq库的教程,设计思想。不包含API文档,不包含webqq协议 的说明, 不包含lwqq库的衍生项目等等

Clone this wiki locally