如何选择 Laravel 框架版本

说明

很久以前在一个话题里面聊到的观点,很多同学在 Laravel 版本选择时候比较混淆,这里说下我的看法。

对 Laravel 框架发布周期不熟悉的同学请参阅 - Laravel 的发布路线图

什么是 LTS

首先你需要明白 LTS 的概念。

长期支持 (英语:Long-term support,缩写:LTS)是一种软件的产品生命周期政策,特别是开源软件,它增加了软件开发过程及软件版本周期的可靠度。长期支持延长了软件维护的周期;它也改变了软件更新(补丁)的类型及频率以降低风险、费用及软件部署的中断时间,同时提升了软件的可靠性。但这并不必然包含技术支持。

在长期支持周期的开始,软件设计师会将软件特性冻结:他们制作补丁来修复程序错误及计算机安全隐患,但不会加入新的,可能会造成软件破坏的功能。软件维护者可能会单独发布补丁,或是将其置于维护版本、小数点版本或是服务包中发布。支持周期结束后,其称之为产品的生命周期结束。

“长期支持”这个术语通常是保留给特殊的软件版本,其他版本会有更短的生命周期。通常来说,长期支持版本至少会被维护两年。
From 维基百科

LTS 解决的问题

终于可以不用被框架的迭代推着走了,框架的更新换代对一个健康的生态系统来说是很必要的,我也认为程序员应该跟上技术的趋势,这对保持个人竞争力很重要。

但是作为一个庞大的商业项目的基础框架,一年一次的大版本更新真的是很痛苦的事情,当版本换代时,你会有两个选择:

  1. 更新框架为最新;
  2. 沿用老的框架。

如果你选择「1」更新,你会浪费无数个深夜进行代码迁移和测试,没有写自动化测试脚本的话更惨。

并且在这个过程中,你没有产出新东西,没有多写一行业务逻辑代码,对你自己来说这是在浪费生命,对于企业来说,这是在浪费时间、浪费金钱,最可怕的,浪费机会 —— 企业的竞争对手每天都有新功能,而你却花好几天,甚至是几周时间做系统升级。

如果你选择不更新呢,对不起,你放弃了很多能极大提高你开发效率的「扩展包」(如果你是扩展包作者,很多时候,你也不会考虑去兼容淘汰掉的版本),过不了多久,官方会宣布对你的过气的基础框架停止维护,包括安全的 FIX。

file

Laravel LTS 长期支持版的出现就是为了解决这个问题的,Laravel LTS 的支持窗口是:

两年的 Bug 修复,三年的安全更新支持。

对应一般发行版的:

提供六个月的 Bug 修复支持,一年的安全修复支持。

如何选择?

从产品生命周期上去考虑:

  • 如果是商业项目的话,要走稳定路线,建议选择 LTS 长期支持版,可以避免掉入「更新大黑洞」。
  • 如果是个人项目的话,要走激进路线,推荐使用最新版的 Laravel,主要有两个理由:
    1. 跟上技术的趋势,对保持个人竞争力很重要,如果你不想被时代淘汰的话;
    2. 知道新框架的技术决策,即使你在开发 5.1 的应用也是非常有帮助,例如这个 路由分割 的讨论,Laravel 5.3 里已经有非常合理的解决方案,完全可以直接采用,但是如果你不知道 5.3 ,那你估计就会发明自己的 车轮

结语

Laravel LTS is awesome :metal:

摈弃世俗浮躁,追求技术精湛
本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
Summer
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12
Destiny

开始还以为LTS版本没啥用, 看了这篇文章, 受益匪浅

7年前 评论

@Summer 赞! 对于新手很多容易陷入一个误区就是用低版本会不好,实际上还是要分场景来决定的。:100:

7年前 评论

两条腿走路,Laravel 设计很合理

7年前 评论
lucifergit

。。。。弄反了,symfony才是第一个支持LTS的php框架。laravel有lts版本就是应为symfony lts版本的发布。

7年前 评论

完了, 几个项目没选lts, 会不会死

7年前 评论
Summer

@lucifergit 确实如你所说,感谢指出

The last Symfony LTS release was Symfony 2.3 in June of 2013. Two years ago Laravel was not nearly the size it is today. It wasn’t really clear that Laravel would become as widely adopted as it has, thus the need for an LTS release wasn’t as obvious. It is now used by many more very large corporations.

Since Symfony 2.7 will be the next LTS release in May / June of this year, this is the first real opportunity to get on board with LTS releases in a few years, since we would not want do an LTS release without the underlying HttpFoundation component also having the same LTS support.

from : https://laravel-news.com/2015/05/laravel-a...

7年前 评论

不仅我们在使用上应该这样,今后自己开发软件的时候,也应该有生命周期的概念。真棒:+1:

7年前 评论
Alex89

经验老道

7年前 评论
MRWang

LTS 确实让生态圈更加成熟,尤其是负责维护扩展的作者,终于不用几个月更新一次扩展包了

7年前 评论

:one: :two: :three: :four: :five: :six: :seven: :eight: :nine: :zero: :keycap_ten:

5年前 评论

:see_no_evil:我勒个去,我把线上项目从5.1升级到5.2 是不是脑子抽风啊....

4年前 评论

@GuoLiang 也可能是进水了,我这边准备重构一下系统(要还之前欠下的债),恰逢6.0问世!我现在很纠结是用那个版本,倾向于用新的,但是怕新的有坑(主要是没有填坑的底气),@Summer 能不能给个指导意见呀!

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!