对 solo 发展的一些建议(有想法的请看过来)

本贴最后更新于 2172 天前,其中的信息可能已经时移俗易
  • 当初吸引我的是 solo 的小而美,首先小是最重要的,大而美的博客中间件满天飞,学习成本高,管理复杂。这里说的小不单是体积小,还有使用简单方便的意思在里面;也就是拿来即用,不多几条命令就可以搭建起开发环境(给程序员用的嘛),马上就可以启动起来看到原型。
  • solo 早期可能是这样比较纯,但是后来随着时间的发展,越来越多的人用,都想加入各自熟悉的功能特征,追求最新的技术,把 nginx,mysql,docker 等等一些没有必要的东西都加到官方默认的发布版中。感觉 88250 已经被带偏,甚至想用 go 重写一遍,暂且不说什么时候能完成,就是真做出来了面向 go 程序员用户群比 Java 用户群简直差几个数量级;然后怎么办,花了九牛二虎之力用 go 写的版本难道不应该做为主版本发布吗?java 版。。。那是历史了,重心不在这上面,能分点精力去维护已经不错就不奢谈发展了,真是那样的话 solo 就完了。不是说那些东西不好,加不加入这些东西应该由用户根据他的开发或者工程环境来选择,不应该做为 solo 打包布署的必要条件。
  • 为什么说是 solo 打包布署的必要条件,举个例子(后面有戏说的成份,懂我意思的可跳过),官方默认用 MySQL 数据库,并且支持最新的 mysql8(高大上,紧跟时代潮流),如果你真准备装个 mysql8,那得花老半天来配置(跟 mysql5 配置很多不同,还要修改密码,自己建库,用满地是坑来形容决不夸张,问题是我只要 solo 啊,为什么还要先自己动手搞 mysql 呢?专家说:mysql 是行业标配不会 mysql 别吃这碗饭,这话 oracle 以前也说过好像。),终于搞定了 mysql;接下来 solo 的工程布署上官方建议用 docker 容器版本,然后你真用了 docker 的版本布署了发现还不能直接访问,要配置一个反向代理(理由都帮用户想好了,请参见相关贴子。但问题是用户不一定需要啊)。终于配好了,打开界面了,发现不能自己创建用户(想创建本地用户,自己开发啊),只能用 github 的账号登录;我的个乖乖,我没有 github 的账号怎么办(我有码云的啊,github 又慢还时不时掉线,关键我的英文没有中文好啊。),申请一个吧;终于可以点击登录了,发现等了半天报了个错,赶快发个贴求助吧(都到这儿了,就差临门一脚了,急得是百爪挠心),88250 响应还比较快,说刷新一下(老问题了,有时 github 掉线或者是响应太慢造成),果然刷新一下就登录了,大功告成(幸福来得太突然)。。。

所以为了 solo 步入正轨,能更好的发展,作为一个 solo 的爱好者建议给 solo 瘦身,在官方版本中去掉不必要的第三方软件,插件。(相信其他有想法的人,觉得有道理可能就放手开干了,他也可以开源一款博客美其名曰“微而美”,纯 java 生态,一键开发,一键布署,可能就基于 solo,但谁知道啊。)

  1. 不要在官方正式版本中建议通过 docker 发布。支持 docker 发布可以做为一个案例另外说明。
  2. 官方正式版本中默认采用 H2 数据库。支持连接 mysql 或其它数据库可以做为其它案例另外说明。
  3. 不要在官方发布版本中建议用 nginx 来反向代理。是否需要反向代理由用户根据实际情况考虑,自由选择(可以提供配置说明)。
  4. 前端改为 JSP 或 HTML+CSS,不要用 freemake(降低学习成本)。支持 freemake 可以做为一个案例另外说明。
  5. 把 plugin 模块分离出来,做为官方版本的子模块(类似于 solo-skins 子模块),提供插件开发扩展说明。
  6. 加入本地账号功能,就存在 H2 里好了。
    这样 solo 只有"前端"+"jetty"+"H2"+"自身代码逻辑",并且都属于 Java 生态,只要有基本的 Java 开发环境(JDK+Maven),就可以一条命令完成博客的下载,布署,启动。
  • CentOS7 命令如下:git clone https://gitee.com/forai/solo.git && cd solo && mvn jetty:run
  • Windows 命令如下:git clone https://gitee.com/forai/solo.git & cd solo & mvn jetty:run

以上如有叙述不当的地方请看官们多包涵哈,你有哪些好建议也请提出。

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1443 引用 • 10082 回帖 • 495 关注
  • 反馈

    Communication channel for makers and users.

    122 引用 • 912 回帖 • 279 关注
3 操作
yanxingangsun 在 2019-06-28 16:47:43 更新了该帖
yanxingangsun 在 2019-06-28 16:18:04 更新了该帖
yanxingangsun 在 2019-06-28 15:51:23 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • MarsChan

    不是杠,作为程序员,肯定都是不断折腾,尝试新玩意,不能因为你自己要省事就排斥别人去更新。

  • 其他回帖
  • Blackman99 1 2 评论
    • 我看了 solo 安装文档之后,从 github 拉取代码到本地启动成功花了 5 分钟,在完全没有接触过 docker 的情况下到成功部署生产环境花了 10 分钟,我觉得已经非常方便了
    • 文档中说的很清楚 MySQL 与 H2 都是同时支持的,完全可以不安装 MySQL,只是启动时候的改个参数而已
      用了 Docker 反而不用装 Java 环境跟 Maven 环境,哪种方式更方便显而易见
      用不用 Nginx 完全取决于个人,不用 Nginx 难道就不能部署了?
    • 首先文章中将 freemarker 写成了 freemake,用 freemarker 还是用 JSP,对于 solo 使用者来说没有区别,技术选型是开发者的事,不是使用者的事
    • 纯 Java 生态的启动方式,现在依然还是支持的,而且这个世界上不是每个程序员用的都是 Java 语言,如果只支持纯 Java 生态,不如叫一款只适用于 Java 程序员的博客了
    这个评论,我怀疑你想赶走 solo 的开发参与者和使用者。
    notreami
    @notreami 我怀疑你是否看懂了我的评论
    Blackman99
  • yanxingangsun
    作者

    是的,搭建环境也一条命令,这样最好。

  • 非常感谢你的反馈和建议,下面我就你提到的各点进行一些说明:

    1. 使用 Docker 部署主要是方便,并且统一环境,用户也不容易踩坑里,还有一个好处是可以自动升级,不用手工折腾。只有使用 Docker 才能实现“一个命令开箱即用”
    2. 可以支持 MySQL 5.6+ 的,只是建议用 MySQL8,兼容性主要靠 JDBC 驱动实现
    3. 建议用反代和建议用 Docker 一样,都是为了方便
    4. Java 模板引擎目前 FreeMarker 还算主流,JSP 就算了吧
    5. 插件方面虽然存在好几年了,但是用户和开发者并不是太在意,所以一直没有改进,目前 Solo 的插件设计确实有点尴尬
    6. v3.0.0 之后就通过 GitHub 统一账号了,主要是整个 B3log 体系(博客 + 社区)发展策略调整
    7. 去年我们已经用 golang 写了一个博客平台 Pipe,也是 B3log 的一个博客端。另外 B3log 还维护了一系列开源项目的,一般来说只要开了坑,我们就会一直填下去,不会弃坑

    总的来说,我们不只是想做一个 Java 开源博客系统,我们想做的是一个博客 + 社区的生态,也就是实现 B3log 构思,在实现这个目标时用户可能会觉得有的设计有点“怪异”,我们会尽量平滑进行过渡,也希望大家能够理解我们这样做的动机,我们一起来共建未来的博客生态。

  • 查看全部回帖

推荐标签 标签

  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 177 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 677 关注
  • 叶归
    10 引用 • 47 回帖 • 21 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • RemNote
    2 引用 • 16 回帖 • 19 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 227 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 93 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 154 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    371 引用 • 1856 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 677 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 6 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 636 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 712 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    180 引用 • 3878 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 636 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 488 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 114 回帖 • 176 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖 • 2 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 57 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 371 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 7 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 1 关注