标签归档:LBForum

LBForum后续计划

开源应当是一件很认真的事。

  • 保证持续的维护与更新,保证该项目的活力。
  • 有完善的测试用例,方便在添加功能以及merge其他人的改动后进行功能测试。保证软件的质量。
  • 完善的文档,让初次接触该项目的人可以快速的知道如何使用。

我写的一些东西基本上都是出于个人兴趣,因此有些随性,兴趣来了就写一写,兴趣过了这个项目就荒废了。
LBForum曾一度荒废,近期由于集成到公司系统,顺道做了一些更新。接下来可能还会陆陆续续做些更新。

  • 增加Python3的支持
    • 单纯的增加Python3的支持并不难。由于我的测试用例并不完善,增加Python3后测试的工作量会增加,因此一直没有做。
    • 注:现在以及可以支持Python3了。比预计的要顺利不少,只做了很少的改动就完成了Python3的支持。
  • 增加Rest接口
    • 之前的Rest接口一直都是手动实现而且也还挺方便,想试试Django REST Framework看能减少多少工作量。
  • iOS的论坛APP
    • 一直想做个移动APP,刚好用论坛来尝试一下。
    • 第一个版本应当只有浏览功能,登陆、回帖、发帖等功能将在日后逐步添加。

LBForum更新Django1.10支持

前一段时间公司需要上线一个论坛系统。公司系统采用Django开发,因此考虑集成一个论坛的App,另外出于一部分私心,最终采用了LBForum
之前LBForum很久没有维护,很多依赖包的版本已经不对,导致已无法正常运行。这次更新修正了之前的一些bug,另外对依赖进行更新。现有的依赖包都明确指定版本,避免因依赖包更新导致无法运行。

这次升级后对演示站点同步进行了更新,演示站点地址: http://lbf.haoluobo.com/

LBForum的主要更新

  • Django更新到1.10
    • 目前只测试了1.10,不确定在其他版本下是否可以正常运行
  • 出于工作量的考虑,只保留v2ex主题,不再提供FluxBB主题的支持
    • 如果你想使用FluxBB主题,可切换到v1.0分支,里面有老代码
  • 去掉django-simple-avatar,使用easy_thumbnails提供用户头像支持
  • django-helper、django-lb-attachments使用django-lbattachmentdjango-lbutils进行替代
    • 前面的两个包是我很早之前维护的工具组件,现在已不再维护。后面的是现在新维护的工具组件
  • 去掉django-onlineuser
    • 这个用户在线模块一直有些问题,在想好怎么优化前暂不增加在线用户统计功能
  • 使用django-el-pagination替代django-pagination
    • django-pagination已经近乎不维护的状态,django-el-pagination在功能以及活跃度方面都要更好一些
  • 去掉South
    • Django自带的数据库结构维护已经很成熟了
  • 使用bower管理第三方JS库
    • 使用bower,避免将大量的第三方库直接塞到代码库中。
  • 上传组件替换为jQuery-File-Upload
    • 之前的上传组件依赖Flash。在Flash越来越不流行的今天,依赖Flash不再是一个好选择。
  • 使用MediaElement增加视频支持
  • 使用Pygments提供语法高亮支持
    • 在安装Pygments后,可对代码进行语法高亮

lbforum-site的主要更新

对应的演示站点也做了相应的更新。

  • LBForumdjango-lbattachmentdjango-lbutils使用Submodule的方式导入
    • 相比采用pip方式安装,使用Submodule的方式对子模块的更新和修改起来要方便的多。
  • 使用django-allauth替代django-registration
    • django-registration老早就不再维护了。django-allauth在功能以及活跃度上都还不错。
  • 针对注册,加了一个简单的校验
    • 网络上的垃圾爬虫无处不在,之前的演示站点已成了垃圾广告的集散地。这次在注册的时候加了一个简单的校验,必须在captcha内填写captcha才可正常注册。因为刚更新,还不知道效果如何。注:现在的爬虫似乎很智能了,这个功能似乎并不太有效,还是不定期会有爬虫上去发帖。

其他一些问题

  • 一直想把文档给整“好看”一些。不过写文档并不是一件轻松的事情,面对懒癌文档的事情只能继续挂起。
  • 目前主流的Python库已经都支持Python3了,增加Python3算是挺有必要的一个工作。根据之前Python3支持的经验,要同时支持Python2和Python3还是得花费一些时间。由于我主要还是用Python2,因此也先挂起了。

LBForum新主题V2EX发布

V2EX主题演示地址: http://vik.haoluobo.com/lbforum2/
项目地址: https://github.com/vicalloy/LBForum
站点工程地址: https://github.com/vicalloy/lbforum-site

LBForum原始界面(http://vik.haoluobo.com/lbforum/)用的是FluxBB的模板。
V2EX出来后很喜欢V2EX的UI,一直想再做套V2EX的SKIN,直到最近才真在开始动手。
V2EX的设计思想和传统的论坛还是有些不同,有些地方和LBForum的设计不太兼容,针对V2EX的模板添加了部分设置。

lbforum-site项目默认用的是FluxBB的主题,如果希望切换到V2EX的主题只需要新创建一个配置文件local_settings.py,并在其中加上SETTINGS = ‘v2ex_settings’即可。

LBForum已改造为Django的可重用APP

LBForum分裂为两个项目

  • LBForum Django的可重用APP,包含有完整的模板。该app已加入pypi,可使用easy_install lbforum进行安装。
  • lbforum-site LBForum的演示站点。完整的Django Project演示LBForum如何集成登陆注册等模块。该项目可以快速的将LBForum跑起来。

最初写LBForum的时候为降低部署的难度,将LBForum作为完整的Django站点来进行开发。
实际应用过程中,不少人需要将论坛模块集成到已有系统中。
原有的方案在集成的时候有不少的问题。
而且整站的形式也不利于他人进行协作,若改动偏向站点的定制,会给代码合并的时候带来很大的问题。
在项目拆分后,在保证易部署特性的同时解决了第三方系统集成的问题。

LBForum演示站点

LBForum最新进展

LBForum是我用python(django)开发的一个开源的论坛系统。

更多的信息可以参考我以前写的博客 发布一个Django的论坛系统LBForum(开源、带演示)

最近LBForum也终于有了一位活跃用户,也非常感谢他给我提出了不少改进的意见。他们是一个游戏汉化组织,网址是 http://bbs.tuidao.org/

LBForum现在主要具备的功能有:

  • 论坛分类,分版块
  • 发帖,回帖
  • BBCode支持
  • 使用AJAX实现附件上传、编辑
  • i18n支持,根据用户浏览器的语言自动显示对应的界面(目前支持英文和中文)。
  • 使用django admin提供论坛管理功能,实现对帖子的删除、修改、移动、设置置顶帖、关闭主题
  • 最新的功能更新参考 History

在我看来LBForum在功能方面已基本完善,对于LBForum以后的发展,目前还没有什么比较详细的计划。目前最缺的可能还是文档,只是一直没有什么动力去完善。功能方面也有些想做的,不过也是因为缺乏动力所以没太动手。

文档

  • 针对虚拟主机的部署文档以及相关脚本。python/ROR的web项目都存在部署麻烦的问题。对开发人员而言都够折腾了,普通用户基本上就可以直接放弃了。完善的部署文档,只少可以给用户们一个尝试的勇气。
  • 针对已有项目的集成文档。LBForum是以整站形式设计的。作为一个独立项目部署会比较容易,但和其他项目整合的时候和普通的app相比就要显得更麻烦些了。有了项目集成文档他们会觉得,原来要集成LBForum是这么简单的。
  • app说明,代码导航。方便二次开发的用户对代码的理解。

功能

  • 可视化的编辑器。最初规划的时候就有这个东西,不过因为一直没想明白这东西要在界面上怎么摆,所以一直迟迟没有动手。
  • 搜索功能。discuz等的搜索可选项太多,太过复杂。我可能会用Whoosh之类的东西做个全文搜索。只是如果论坛资源还不够丰富的话,搜索功能其实就是个摆设。
  • 积分系统。目前的大多论坛都会有自己的积分系统。我感觉将积分系统作为一个独立的app可能会比较好些。积分系统不一定要仅限于论坛,可以有多种的积分途径。参考了一下discuz的积分系统,发现者东西如果要真正做好还是挺费工夫的。
  • 站内消息。对现成的第三方app不是太满意,不过有些懒得自己写。

发布一个Django的论坛系统LBForum(开源、带演示)

简介

LBForum 用django开发的论坛系统,演示地址为:http://vik.haoluobo.com/lbforum/
项目的地址为:http://github.com/vicalloy/LBForum
界面部分抄的 FluxBB(一个开源的PHP论坛 http://fluxbb.org/ )。
虽然Django写的论坛也不少,不过还真没什么好用的。
大多Django论坛都是独立的app,而且不少还缺模板,想我这样有经验的Django用户要跑起来都觉得麻烦,其他普通用户就更别说了。
LBForum主要注重部署的方便性和易用性,功能方面目前还比较简单。
LBForum一开始就是以整站的形式提供,所以以LBForum做为基础项目进行二次开发是很容易的。
同时LBForum的开发尽量遵照Django可复用app原则,因此即使需要将LBForum做为独立的app集成到其他项目也并不会太难。

主要功能

目前功能还比较简单,而且还有些小问题有待修正。

  1. 论坛分类,分版块
  2. 发帖,回帖
  3. BBCode支持
  4. 置顶贴
  5. 使用django admin提供论坛管理功能

用开发服务器把LBForum跑起来

  1. 先把代码down下来。LBForum托管在github上,http://github.com/vicalloy/LBForum 。如果你没有安装git,你可以直接用界面右上方的download
    source功能下载代码。
  2. 运行\scripts\create_lbforum_env.py初始化lbforum的python虚拟环境。该脚本会自动创建一个python的虚拟环境并使用easy_install安装对应的依赖包,同时将一些依赖包解压到对应的目录中。
    注:django使用的是svn版本,所以机器上必须要安装有SVN,不然脚本会运行失败。如果因为由于svn的问题导致脚本运行失败,可以运行lbforum_env.bat进入lbforum环境,手动安装django的svn版本。
  3. 环境初始化好后,运行lbforum_env.bat进入lbforum环境
  4. 运行%mg% syncdb初始化数据库
  5. 运行%mg% runserver启动django开发服务器
  6. 进入admin,创建论坛分类和版块
  7. 进入版块发帖

LBForum的目录结构说明

|+lbforum_env/#lbforum运行的python虚拟环境,运行create_lbforum_env.py后自动创建
|+requirements/#lbforum用的第三方库和app,运行的时候会将该目录加到python路径
|~scripts/#工程相关脚本
| |-create_lbforum_env.py#初始化python虚拟环境,并自动安装easy_install/django依赖库
| |-helper.py#提供其他脚本所需的辅助函数
| `-lbforum_env.bat*#启动lbforum运行的虚拟环境及,并为lbforum的manage.py提供快捷方式%mg%,比如初始化数据库%mg%
syncdb
|~sites/#站点配置/模板/静态文件
| `~default/#默认站点
|   |+static/#静态资源文件,如css等
|   |+templates/#Django模板目录
|   |+templates_plus/#Django模板目录,用户将自己重写过的目标放到该目录
|   `-……
|~src/#django的app目录
| |+account/#account相关app。具体站点通常会对用户中心进行定制,所以该app在实际应用中很可能需要针对实际情况进行修改。
| |+djangohelper/#一些django的辅助函数等,
| |+lbforum/#lbforum的主app,论坛功能都在改app中
| |+lbregistration/#registration app的lbforum扩展,主要去掉邮件地址认证功能
| |+onlineuser/#显示在线用户的app(可复用的django app,可脱离lbforum单独使用)
| `+simpleavatar/#头像功能的app(可复用的django app,可脱离lbforum单独使用,依赖djangohelper)
|+tools/#工程用到的辅助工具,目前只有一个virtualenv的脚本

注:

  1. 由于计划在以后做i18n,所以目前只提供英文界面
  2. django的错误提示是显示在字段后面,fluxbb的错误全部都显示在表单前面。由于模板没有调好,所以目前按照fluxbb的方式显示错误,所以错误显示有些不太正常。
  3. bbcode的输入框本想做成自适应大小的,不过也调得有些问题,所以现在输入框的大小固定。
  4. 文档… ,感觉好难写-_-,目前文档不全(项目中没有带任何的文档),日后补上。
  5. 应用程序的目录结构主要查看pinax
  6. simpleavatar模块部分代码来自django-avatar
  7. 依赖包除用easy_install在线安装的外,尽量使用zip包的方式附带在项目中,减少安装依赖包的困难。
  8. 远程部署脚本计划使用fabric,但fabric本身安装比较麻烦,所暂未处理。
  9. 项目最早放在googlecode,不过感觉github的功能更强些,所以移了过去。

django的论坛app

在django的资源页面里有个第三方论坛app的比较页面Django Forum Apps Comparison。一眼望过去,可用的app还不真不少,数下了有15个之多。但真正看下来,似乎很难找到一个让人满意的。
我对论坛app的要求是:

  1. 得要自带一个还比较漂亮的界面模板。
    模板的开发工作在django应用的开发中占了很大的比重,甚至可能比写python代码花的时间还多。可惜的是很多的app应用甚至连个最基础的demo模板都没带。
  2. 最好支持Richeditor和BBCode。
    支持BBCode的app还是有几个的。Richeditor的支持基本上属于模板的范畴,参考条目1,似乎还没看到支持Richeditor的论坛(注:我没每个app都看,不能确定,pybb默认模板带了个Markup的编辑器)。
  3. 支持附件。
    国内的论坛应用大多偏娱乐,用户喜欢在自己的帖子里插入图片等东西。虽然可以再单独提供一个上传附件的组件,让用户上传后再在论坛里引用,但用户体验就要差不少了。

既然找不到满意的app,那就只能自己动手做了。目前计划在pybb(注:pybb的许可协议没看太懂,似乎是类似BSD的)的基础上进行开发。目前的开发计划如下:

  1. 先给项目换个新名字LBForum
  2. 换个漂亮些的模板(同时增加richeditor)
    考虑过不少模板。

    • phpbb3 目前最流行的开源论坛程序,css和html写得很不错。但似乎有些复杂了,套用起来有些麻烦。
    • phpbb2/javaeye/jforum 这几论坛程序都长得差不多,UI应当都是参照phpbb2(javaeye的老大自己说了javaeye的界面就是仿phpbb3)来做的。其实也不能说这几个论坛的模板有什么不好。更多的是不喜欢里面过多的table。
    • discuz5 不是太喜欢discuz7的界面。discuz5(springside常用的那款界面)的界面感觉清爽些,但改了些后发现里面的html和css写的实在不怎么样。
    • fluxbb 目前打算用她的模板了。界面给人的感觉不错,html和css写得挺好。界面够简单,要套用模板应当不会太困难。
  3. 增强附件功能
    虽然pybb提供了附件的支持,但功能还是比较弱。
  4. 增加一个公共的个人信息模块
    pybb已提供了一个保存用户个人信息的功能,但通常这些信息会是整个工程所共享的。我觉得这些信息还是单独放到一个专有的app里比较好。这个app可以以代码的方式包括的工程里,需要增加个人信息的时候直接修改model代码。

后记

最后还是选择了完全从头进行开发。pybb里面可以用的东西不多,而且他的开发思路和我还是有些分歧。