Giter Site home page Giter Site logo

firefly's Introduction

Work In Process

导航请移步到: http://python-cn.github.io

star的人们啊, 被star不是目的, 要来贡献代码哦(●'◡'●)ノ♥

说明

WARNING 我们最近在做嵌入react的工作,其他工作暂停迭代(防止新的代码造冲突). 具体讨论可见: Issue92,开发详情请关注trello

这里只包含等待开发的Todo List. 会尽量更新到最新状态.

有兴趣参与者请使用: trello去获取最新的任务列表. 防止任务已被认领造成重复.

沟通请使用: pythoncn-slack(需要邀请, 请发邮件到[email protected], 或者联系组内其他成员), 参与开发者才会被通过(slack没有灌水区),请谨慎加入

学习准备

假如你觉得你还没有能力做下面的todo list, 可以先准备以下一些知识, 将来会用到

  • react
  • oauth2
  • select2
  • flask-wtf
  • flask-restful
  • flask ext

英语好的不妨看这个视频教程http://discoverflask.com

PS: 其他的firefly的依赖的列表在这里: http://python-cn.github.io/#/post/used.md

集思广益

社区不是我一个人的观点, 需要大家作为一个潜在受众一起思考: 你希望有什么功能. 然后来建新的card, 去完成你认为有价值的任务.

Todo List

以下是一些定义:

  1. 主题 = model里面的Post, 就是一篇文章
  2. 评论 = model里面的Comment, 对一篇文章的评论
  3. 首页 = 首页显示了文章的列表, 默认按活跃时间排序
  4. 单个主题 = 类似/post/post_id/这样的链接. 包含文章正文, 对应评论等
  5. 前+后端的可以根据个人能力和爱好拆分, 即只做前端/后端部分
  6. todo前缀包含[additional]表示优先级比较低.

架构设计

用户相关

  • 忽略主题的设计 - 不想看到某个主题/含有某些关键词的主题
  • 忽略用户的设计 - 不想看到某个用户的主题/相关的动态.
  • 用户个人页面能看到用户的操作记录(默认按时间排序), 比如回复什么主题, 创建了什么主题. follow了xx
  • 增加用户举报功能, 比如用词不友善, 诋毁, 营销, 广告等.
  • 设计用户个人页面, 只需要包含对应的view, 个人基本信息: 注册源(微博/github/google), 昵称, 头像(使用Gravatar)等,加入时间, 用户id
  • [additional]有意见建议, 就需要一个和提交者的通道. 借用提醒,站内信等让用户得到最新的反馈
  • follow用户的功能 - halfcrazy
  • 设计用户密码找回方案 - halfcrazy

页面相关

  • 主题和平台太多的分页设计
  • timeline设计. 用户可以选择timeline模式. 和twitter效果类似.
  • [additional]设计公告位
  • 用户model, oauth2方案 - dongweiming

[additional]管理员相关

  • 设计管理员系统(可能是一个子url, 也可能是一个其他的项目),就是可以开发者的权限, 有对应权限的开发者可以删帖, 修改标题等. 但是一切操作都要被系统记录(flask-admin好丑)
  • 举报后台. 管理员可以删主题/评论. 给用户发警告提醒, 禁用用户
  • 社区的issue系统. 主要和我们的slack关联, 可以给我提交bug, 意见和建议

消息系统

  • 定期给离线用户发送未查收的收到的提醒/站内信(可以选择取消订阅)
  • 站内信模型
  • 提醒模型(类似豆瓣的提醒)
  • 社区的消息push, 我目前想的是一个websocket. 通过js获得数据渲染(有相关工作经验的最好)

全局相关

  • 全局的log系统, 用于debug. 产生应用的log等. 有点tornado的效果. 可配置的 类似fabric

  • 给项目的log加上颜色. 但是不要直接使用第三方库

  • 搜索 - 添加搜索框/可以搜索主题, 评论, 用户, 分类等

  • 社区的缓存系统. 比如用户的会话缓存, 文章内容的缓存(在文章更新的时候有对应的更新操作)

  • [additional]社区事件系统, 无论做什么操作, 都是一个事件, 能够容易的单个人获得操作记录, 单种类型的操作记录, 比如可以列出来创建主题的时间列表

  • [additional]把现有的代码都补上事件

纯前端

  • 首页注册和登陆页面的浏览器兼容性(chrome下正常, FF下不正常)
  • @ 能弹出被@用户
  • 站内信未读 给标志标示
  • 主题内容在首页就可以预览, 可以选择阅读更多点到单个主题页
  • 单独评论页面
  • 使用sweetalert替代alert - dongweiming
  • 让每个主题页面(http://web:port/post/post_id/)里面显示出评论的内容. - dongweiming
  • 注册页面当用户名/密码/邮箱都有正确输入的时候让注册按钮变成enable - dongweiming
  • 用户创建新主题后会使用Effeckt.css, 闪到主题列表的最上面 - dongweiming
  • 每当用户发表新的评论, 应该把该主题提到最前(最近活跃) - dongweiming

测试

  • 给项目测试环境添加必要的测试数据(导入分类数据)
  • 给项目测试环境添加必要的测试数据(本机可以修改域名, 通过某app id实现登陆)
  • 给项目测试环境添加必要的测试数据(导入用户数据, 一些测试账号)
  • 给项目测试环境添加必要的测试数据(导入主题/评论测试数据, 可以自动生成一些主题以及一些评论)

纯后端

  • 对主题和评论可以like和取消like. 没有dislike
  • @ 的消息能被该用户收到提醒
  • 个人页面可以拉取用户的对应网站的数据. 比如github的源列表, star数, following数.
  • 拉取用户对应网站数据的设计, 可以使用celery, rq等.
  • 每个评论都可以单独打开, 模板和主题页一样, 但是下面的列表是对这个评论的评论
  • [additional]使用站内信和其他人私聊
  • 首页渲染时, 能获得某主题对应的分类. - mozillazg
  • 豆瓣oauth2登录 - halfcrazy
  • 微博oauth2登录 - ce
  • 设计阅读量的实现, 就是刷新一下页面, 阅读量就会+1 - mozillazg
  • 主题的分类model的接口. 前端可以通过ajax调用这个url 获得全部的分类信息: 分类id, 分类名, 分类描述 - halfcrazy
  • 主题的分类model, 早期可以是先插入的一些固定数据,比如devops, web开发, 爬虫..(选项不重要, 要有后台的支持) - halfcrazy

前+后端

用户相关

  • 设计用户设置密码页面, 对应的view, 简陋的模板
  • 用户可以设置自己介绍, 坐标(比如北京), 以及个人的站点
  • 用户可以设置github/stackoverflow的地址
  • 用户发布的主题/评论可以被删除(发布1小时内可删除)
  • 用户可以对某个话题添加关注, 以后这个主题发的评论都会给该用户提示消息
  • 用户可以对主题或者评论收藏(bookmark)/取消收藏
  • 给用户增加一个watch设置, 当包含对应watch分类/关键词的主题发布时, 会自动给他发消息.
  • 用户可以选择隐藏那些属性不被人看到
  • 用户可以删除自己发布的主题. 主题默认指向失效用户, 其中的内容和评论不变. 但和用户无关了(这个模式大家讨论)
  • 用户可以删除自己发布的评论. 评论会被去掉. 这个评论被其他人评论得数据还在. 只是源评论会显示已失效(这个模式大家讨论)

页面相关

  • 发布主题可以上传图片(也可粘贴一个图片url)
  • 单个主题可以看到上传的图片
  • 发布主题可以插入视频url
  • 单个主题可以看到视频
  • 主题可微博分享
  • 主题可豆瓣分享
  • 可以直接引用github的gist的代码片段到主题
  • 可以直接引用github的gist的代码片段到评论
  • 可以把用户在社区发布的内容同步到微博
  • 可以把用户在社区发布的内容同步到twitter
  • 用户发布的主题可以被编辑
  • 用户发布的评论可以被编辑
  • 首页每个类型都能排序, 比如按分类, 按最热
  • 个人发表的主题页
  • 用户可以在个人页面看到自己收藏的内容列表
  • 一个分类explore页面, 包含目前所有的分类列表, 最好有一定排序 https://meta.discourse.org/categories
  • 模仿discourse, 对于回应数/喜欢数/访问数/最近活跃时间等根据数量的差别显示不同的颜色
  • 发表的主题可以选择多个分类
  • 发表的主题可以选择标签
  • 创建主题时候可以通过select2选择分类, 效果类似meta.discourse.org创建主题的分类下拉框效果(可以只是功能, 没有css样式) - mozillazg
  • 创建请求中会带上分类的参数, 后端save的时候会生成含有分类的主题(Post) - mozillazg
  • 和github一样. 有页面的键盘快捷键, 给这种类型的geek最好的体验 - dongweiming
  • 不同分类有不同的标示颜色 - dongweiming

算法

  • 算法 - 主题页下面会推荐一些其他的相关的主题
  • 算法 - 用户兴趣社交第一步 - 我关注的人也关注
  • 算法 - 用户兴趣社交第二步 - 和我分类/关键词相近的人还有那些
  • 算法 - 匿名用户首页的timeline的安排
  • [additional]算法 - 我对某些内容没有兴趣, 请不要在timeline让我看见, 或者尽量少的看见

devops

  • 数据库备份. 用户所有的删除后的数据都有副本. 方便用户导出和恢复.

设计

  • 设计一个好看的logo
  • 徽章系统, 但是不能种类多, 我想目前只包含开发者

SEO

  • 结构化信息(针对google). 为了让我们上线后对搜索引擎更友好, 在搜索出来的时候有更好的点击量需要优化schema. 使用microdata格式.

[additional]Labs

  • 实验室开关. 我们应该设计一个lab模式. 激进的用户或者开发者可以选中, 尝鲜最新的特性功能.

[additional]一些有意思的点

正在进行

  • 完成单个主题页面, 样式, 展示评论, 能在评论下发表新评论
  • 能评论其他人的评论
  • QQoauth2登录
  • 本站注册登录
  • 禁用用户功能

贡献者列表可以看这里: CONTRIBUTORS.txt

firefly's People

Contributors

dongweiming avatar halfcrazy avatar killpanda avatar messense avatar moon2l avatar mozillazg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

firefly's Issues

环境问题?

按照(firefly新手引导)[http://python-cn.org/#/post/new.md]装完环境,编译完静态文件后出了一波js报错
mac windows下chrome firefox都是这样

qq 20150507132714
qq 20150507132645

模板迁移至react

我一直坚持做的东西要前瞻,跟上时代.

目前我们没有使用前端的开发框架. 近期我打算把react作为前端框架. 原因我来说一下:

  1. react是目前最新最流行也是最适合IT同好的品味的东西, 而且facebook创造, 且有react native. - 假如用一个很low的框架, 未来第一是不好意思拿来做宣传, 二来容易被吐槽, 三用了react会让用户产生更多的好感
  2. 豆瓣一些产品线已经在用, 包括我们组的一些功能使用了react, 暂时没遇到特别大的坑, 感觉挺好的 - 虽然我不是专业的大前端, 但是这些大前端的品味我们还是可以相信的

但是问题出现了:

  1. 使用react会造成大量的前端代码放在jsx文件中, 就算放在模板中, plim对它的封装很少, 很有可能我们得给原项目提pr解决一些遇到的问题. plim的用途直线下降
  2. 我最初使用plim其实有推广它, 变相支持它的意思. 但是渐渐的有一些理智和客观的看法, 假如我们该用前端框架之后, plim很难起到示范作用, 对于愿意尝试他的人来说, 需要首先对react有足够的了解. 其实react吧, 是一个在固有的逻辑思维的转化,我觉得有些人会直接放弃掉 - 不要太高估用户以及想了解他的人得精力能力以及毅力. 一个典型的例子就是vim和emacs. 假如完全么有用过编辑器,且对emacs没有特殊的害怕(被人说的很难, 会让人对他有敬畏感) 其实入门vim和emacs的没太大差别. 但是假如你习惯了vim再来学emacs(对, 我花了挺长时间去接受完全不一样的事物)
  3. 我们使用plim的初衷最后会有怎么样的结果? 我担心最后我们做的这个事情反而是大家愿意看firelfy项目的阻碍, 也许有人不喜欢或者不想学习这个东西, 想要贡献还需要熟悉plim, 让一些人放弃,或者开始拖延. 对我们团队来说, 未来我们换(找)工作 熟悉plim可能没有什么帮助,当接受了一种**, 一种习惯, 再去换jinja2或者其他会不会有些郁闷呢?

so. @mozillazg @halfcrazy 以及watch项目的同学们!问题来了.

大家觉得要不要用plim坚持下去, 还是换个更流行的jinja2或者mako. 甚至基于我们的需求前瞻性的用一个新的模板引擎

换模板是个非常痛苦的事情, 但是我担心我们下奶开始继续加功能, 对于未来是更大的负担.

希望大家有更多的想法,意见或者前瞻性的建议, 都可以说

python-china.org 重新开发了,这个项目未来是怎样打算的?

几个月前在 V2EX 上看到这个项目,那时候 python-china.org 基本是停滞状态,现在 python-china 重新开发了,这个项目的开发却停滞了,不知道有什么打算吗?要不要和 python-china.org 合并?毕竟国内 Python 用户就那么多,社区网站再分裂就没了。。

firefly社区开发优先级

其实我内心一直有一个优先级. 这里发出来供大家讨论.

首要解决的:

前端的框架化

也就是迁移到react, 这个其实也是熟悉react的过程. 我觉得目前模板逻辑还是很简单的

用户本地环境的测试数据

我们作为开发者肯定知道缺什么数据, 数据怎么造. 但是想玩玩的人跑起来一看就像是一个啥都未完成的样子. 比如分类. 现在不选择分类都不能创建新主题. 需要一个能初始化环境的脚本, 甚至一个测试数据库的store

前后端的分离

虽然目前我的工作前后端是不分离, 我认可这种方式. 那这就属于从现有的用法改成分离的用法

我对开发顺序的想法其实是源于在页面上呈现的顺序, 也是从基础设施开始 逐步加功能

第一种方案(集中火力,挨个击破)

所有人集中火力在一块功能. 比如 我们先处理好所有登录的问题, 那么顺序就是先保证目前想做的第三方登录写好. 然后是注册; 然后是首页. 首页上会有多种排序方式, 默认按更新时间, 还可以按照响应数... 当然也可以只显示某个分类. 甚至可以搜索; 接下来是单个主题页其他功能完善.....

第二种方案

我们只圈定一个区域. 大家分开做, 最后联调(谁做什么这件事 可以基于个人兴趣,但要接受调剂, 我还是以前端为主). 比如先做用户. 也就是保证用户可以登录/注册之后只找相关页面关于用户的区域. 比如用户登录后的个人信息主页, 点击或者悬停的用户信息card. 用户可以修改昵称. 设置. 查看用户个人发表的主题这些页面

第三种方案(先抄袭完成, 再对接到firefly, 要求最高)

目前我们是在模仿discourse 他有很多样式和功能我们都没加. 比如单个主题页, 还可以粘贴code, 粘贴视频等等. 大家分开实现. 但是需要前后端一起都到firefly实现出来(可以有假数据, 在未来完成的时候都替换掉)

目前 firefly 存在的问题

在我看来目前 firefly 这项目目前存在如下问题:

  • 正如前面 #92 中所说的,目前使用的后端模板引擎太小众了加大了项目的门槛。
  • 没有使用前端 CSS 框架或者说没有原型设计图。没有这个的话,进行前端开发时就没法确定项目的前端基调了。(也许这个不算问题?)
  • 没有一个清晰的项目规划,没有指明项目各阶段需要实现的功能(Roadmap)。
    个人觉得,就算是开源项目也应该像做公司项目一样有一个基本的规划,确定功能的优先级以及各阶段需要实现的功能。直接放一堆 TODOLIST 只会让人感到焦虑,无从下手。

欢迎大家补充和指正 @dongweiming @halfcrazy and others。

requirements指明版本号

pip install 后尝试启动发现报错,看了下requirements并没有指定具体版本。

from flask_redis import FlaskRedis
ImportError: cannot import name FlaskRedis

Whether to remove JsonMixin ?

As flask-restful has a built-in method called marshal, which has the similar function like JsonMixin does.
marshal filters the properties with a specify format, and transform the input data into a OrderedDict.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.