关于放弃大型开源项目专有框架的思考

时间:2009-12-02 22:34:43

标签: php frameworks standards

我们最近在我们的办公室里一直在回顾很多关于放弃几年前在这里开发的专有框架,并转向更大和社区支持的东西。

我们当前的解决方案只包含我们需要的东西并且非常灵活,灵活的我意味着它是松散的,多年来用它构建网站的开发人员已经自由了,所以很多我们管理和建造的网站,而不是任何标准。在办公室,我有点使用框架,但更喜欢使用其他工具。多年来,我使用了许多PHP框架,从Code Igniter到CakePHP,并且一直是我所有个人项目的Zend Framework的忠实粉丝所以我有很大的偏见,这就是为什么我在这里要求那些可能的人提出建议的原因。能够给我一个更客观的意见。在办公室里,我们的框架已经做了很多工作,所以我可以理解为什么有些人可能会犹豫不决放弃它,但我看到它的方式是这样的:

  • 我们目前没有花费大量时间保持我们的框架最新并反复检查错误,我们在找到它们时修复它们。 我们应该做什么
  • 为改进我们的框架所做的任何工作都直接放入我们的架空栏
  • 我们有一个基于我们框架的基于订阅和闭源的应用程序构建的应用程序,如果使用一个需要或鼓励这些东西的流行的,社区驱动的框架构建到更好的标准,我觉得可能会更好

我搜索并找到了这个帖子,Why do I need to use a popular framework?,这与我要求的相似但不完全相同。我要求的是关于为什么你会做一件事或另一件事的意见,我真的不想开始谈论哪个框架更好,如果我们选择转换,那将是我们的下一步。

以下是我看到转换为支持的开源框架的一些原因,从长远来看帮助我们:

  • 随着PHP发布新版本,框架的核心将更新以利用这些内容,而无需我们完成工作。
  • 除了使用当前版本更新我们的代码库之外,社区还可以找到图书馆的安全问题,并在没有我们参与的情况下进行修补。
  • 互联网上的大量信息和可用作参考的现有代码
  • 能够雇用已经了解框架的外部程序员,而不是雇用人员并期望他们必须学习如何使用我们的专有框架。
  • 能够通过补丁,插件,帮助和支持回馈社区。

以下是我提出的否定词:

  • 我们必须将自定义应用程序中的所有现有代码移植到新系统
  • 我们的员工必须有一定的时间来学习一个新的框架,这是一个细节问题
  • 我们当前的框架非常灵活和松散,这使我们能够按照我们想要的方式构建事物,这使我们的开发人员不必遵循和遵守和约定,这是一些开发人员似乎讨厌的。我个人喜欢惯例

同样可能很明显,我有偏见,这就是我在这里问的原因,我对任何人可能要说的都持开放态度。

5 个答案:

答案 0 :(得分:2)

你的问题确实存在偏差,因为所有专业人士都是长期的,而且所有的短期发展都是痛苦的。 :)但如果情况甚至是你描述的一半,那么转换是正确的,从长远来看会节省很多钱。

答案 1 :(得分:1)

我的公司处于同样的境地。我们在Perl中有一个自定义开发的框架,似乎从来没有像开源框架那样关注开发新功能和修复错误。我和大多数其他开发人员都希望转而使用开源来获取你提到的好处,但没有人有预算花时间移植代码。我们目前的计划是使用开源框架,如果我们有任何小型新项目出现,如果成功的话考虑移动旧应用程序。

我主要使用Perl和Ruby,但是我现在看到的更多趋势是允许您混合和匹配框架核心组件的框架。例如,我们正在考虑将自定义框架的一部分集成到Catalyst中。这样我们仍然可以使用一些自定义开发的代码组件(我们自己的DBI类和一些Mason模板),并且移植我们的应用程序也不会那么困难。 Ruby on Rails也正朝着更加模块化的方向发展。

也许有一个PHP框架可能允许你使用你的一些代码,或者至少可以让你更容易将一些代码插入到框架中,而不是从头开始。谷歌搜索我看到大多数PHP框架声称是模块化的,但有些似乎只允许你开发附加组件,而不是交换核心组件。

听起来你正在进行一些很好的分析,我祝你在搜索中好运。

答案 2 :(得分:0)

我认为你在这里强调的最重要的一点。现在的决定应该基于数字。从技术上讲,您的分析是完美的我现在要问的是:贵公司要花多少钱:

*让你的应用程序利用新的PHP改进而不破坏你的旧代码(它意味着:架构分析,开发和测试,测试,测试)。

*您是否有任何开发人员/分析师专注于安全开发? (意思是:安全开发生命周期,测试,测试,测试)。

*您有开发方法吗?通常,这些框架保持在良好的分布式开发方法之下。

我的问题与你之前的问题相同,我的公司决定选择一个框架,迁移我们的代码,每周1天分配2个开发人员来处理框架。让我们的团队与框架开发团队合作很好,因为我们学到了更多关于框架的知识,我们帮助了社区(煽动:-)),我们可以在框架功能路线图中添加一些业务需求; - )

答案 3 :(得分:0)

我和我的团队即将完成将现有应用程序移植到Zend Framework上并且运行良好。

旧的应用程序有很多问题需要解决,我们决定采取措施并在ZF重建。

然而,移植需要很长时间,我估计我们的应用程序需要一个很好的4-5个月的开发时间来移植所有东西(我们借此机会重新调整数据库和系统的其他区域)。

如果你真的去做,那么请准备向你的老板解释为什么你需要花费大量的时间来移植而不是从事创收工作。我们很幸运能够使用一个新项目作为开展所有这些工作的动力。

答案 4 :(得分:0)

我看到了一些转换的缺点。

首先,当然,有:

  

我们必须移植所有现有的   我们在自定义应用程序中的代码   到新系统

其次是:

  

我们必须移植所有现有的   我们在自定义应用程序中的代码   到新系统

,最后,但并非最不重要:

  

我们必须移植所有现有的   我们在自定义应用程序中的代码   到新系统

你在谈论“开销专栏中的资金”,并且将经过测试的代码重写为新的经过测试的代码并没有增加很多价值。

如果您正在谈论为一个全新的,不相关的项目引入一个新框架,或者一个几乎没有使用现有代码库的项目,那么,当然,请自己敲门。这是切换框架,平台,语言等的好机会。

但现有的,运输的,成熟的代码库与现有知识渊博的人一起工作?

亲自吞下这个难以接受的药丸。

如果您希望人们遵循标准和惯例,那么......遵循标准和惯例。由于你的系统允许人们“自由地实现他们想要的东西”,所以要制定他们想要做的“遵循标准和惯例”。

最好逐步转换一个系统,将整个婴儿,沐浴水,肥皂,盆和毛巾扔出窗外,然后再回头再重做同样的事情。

每个人都想重写代码,我想这样做。我们的框架需要在这里“完成”。但是接着我们去“是啊,但是......”我们到底得到了什么? N个月的努力回到我们现在的位置。在市场上的时间问题上,这并没有太大作用。