我应该写自己的CMS吗?

时间:2009-05-08 22:10:29

标签: php ruby-on-rails wordpress content-management-system forum

我打算在今年六月开始我的第一个个人项目:一个关于学生的社区。我想要的是一个wiki,其中包含有关大学的信息,一个人们可以讨论的论坛以及一个包含新闻,文章等的博客,所有三个都集成在一起。

现在,要走的路看起来像wordpress + mediawiki +一些论坛软件,但我一直在考虑尝试编写自己的CMS。我有一些RoR和PHP知识,但当然不能写我自己的CMS,特别是从头开始。

您认为我需要多长时间才能实现它?我认为/估计我每天可以花3到5个小时来处理它,我希望整个站点在8月底启动并运行(这给了我大约300个小时的工作,因为我还计划花一些时间。什么都不做!:P)。

问题是,值得吗?它会帮助我提高编程技巧吗?

16 个答案:

答案 0 :(得分:7)

从您的目标来看,似乎很容易在Drupal中以最少的工作完成。

www.drupal.org

内置论坛和用户博客,我很确定我在某处看到过wiki模块。

然而,如果你想要学习经验 - 自己动手将是相当的学习经历。无论你是否真的完成它,你都会在完成时更好地理解RoR和/或PHP。

答案 1 :(得分:7)

推出自己的:)

你将获得经验(这是无价的),最重要的是你会得到一些不会膨胀的东西......

答案 2 :(得分:6)

你应该做的是由你自己决定,但你应该做的是实现像Drupal这样的东西。

Drupal是一个旨在用于社区网站的CMS。它不是最容易理解和使用的系统,但它可以自定义。

以下是您可以用来开始学习Drupal的一些参考资料:http://www.packtpub.com/drupal/book http://drupal.org/node/367131

每当您必须选择为自己写一些东西和使用现有软件时,您需要考虑四个关键信息。

  1. 它有多复杂?
  2. 现有系统与我的需求有多接近?
  3. 实施现有系统Vs编写自己的
  4. 需要多少费用
  5. 我多久需要它?
  6. 如果它不是很复杂,那么其他任何东西都不能很好地满足你的需求,它会很便宜(时间和金钱)并且你不需要它立即开始做你自己的事情。

    否则,跳上现有的一个开源CMS并开始在那里做贡献。您不仅可以从经验丰富的程序员那里获得很好的反馈,而且您将成为一些非常棒的软件的一部分。

答案 3 :(得分:5)

我的情况有点类似,尽管规模较小。我需要一个博客软件,但是现有的软件并不是那么好,所以我已经开始自己的了。以下是我的想法:

  1. 不要试图制作1:1份的东西。滚动自己让你有机会只实现你需要的东西而忽略其他一切。
  2. 从小处开始。 Wordpress和Mediawiki背后有多年的编码。试图自己复制它是行不通的。
  3. 博客和论坛起初非常简单,但是一旦处理了WYSIWYG编辑器,反垃圾邮件技术,浏览器兼容性问题等等,就会变得非常复杂。
  4. 这是一种很好的方式来获得您的语言和“企业”技术的认真体验,但如果您没有经验并且在截止日期前,您应该首先考虑扩展市场上已有的东西。
  5. 如果你愿意在开始时削减一些角落,我认为在300小时内建立一个CMS肯定是可行的。但是,不要开始考虑像插件架构这样的东西,管理员和文档的出色用户体验 - 如果你想将CMS发布给其他人,这些点非常重要,但对于内部使用则不是那么多。

答案 4 :(得分:4)

没有。

“不要重新发明轮子,除非你计划更多地学习车轮”。

我专注于了解每个工具以及如何将它们集成在一起,而不是编写CMS。

答案 5 :(得分:3)

作为一名真正的开发人员,您需要进行大量自定义。许多预打包的CMS /博客都有插件系统,但对我来说,当我必须通过数据库条目在系统中注册我的代码时,他们都觉得有点奇怪。

老实说,我已经在wordpress中创建了自己的博客,用PHP重写了自己的博客,然后我就在Django中重写了两次。

每次你想要做更多的事情都会变得更快,每次你自己学习创建大型项目的所有人都必须经历的所有可用性和安全问题。

重写是一次宝贵的经历,我永远不会接受“不要重新发明轮子”这一论点。我觉得好像我可以看到一个轮子并告诉你它有什么问题,考虑到我亲自发明它= P

答案 6 :(得分:2)

它可能在那个时间框架内取决于你对rails和php上的ruby有多好。

但是,我会用那里的东西。是否真的值得所有的时间来制作自己的?

答案 7 :(得分:0)

创建与wordpress + mediawiki相同质量的东西+一些论坛软件需要花费数千小时。

但是如果你只是为自己建造它,那么你会遇到很多“足够好”的东西,这样可以节省你的时间。所以我会说......不到1000小时。听起来有点模糊不是吗?我已经编程了14年,我仍然很难估计项目的时间,哈哈。当然,项目的定义也很模糊。

要回答这个问题是否值得,这对你自己来说真的是一个问题。如果您对此感到兴奋,那么这可能是一个很好的学习机会。大约7年前(在谷歌分析之前),我写了一个相当强大的网络流量跟踪&统计引擎。对我来说这是一次很棒的学习经历,我不后悔这样做。当然,另一方面,就像我一样,你将把大量的工作投入到你几乎没有机会赚钱的事情上。

答案 8 :(得分:0)

我会说你考虑为什么要这样做,如果它是为了进一步提高你的编程知识和学习新东西然后去做它自己建立它,否则我会用可用的工具把它放在一起。

至于时间范围?我估计是因为我自己的技能,所以没有机会估计你的技能:)

答案 9 :(得分:0)

如果你想学习它的经验,那么我认为你应该这样做。菲尔·哈克(Phil Haack)撰写了一篇名为Rolling Your Own Blog Engine的好文章,其中列出了一系列问题。

这并不像许多人试图让它听起来那么容易。事实上,你可以在几个小时内编写一个非常小的博客引擎(有些人会说几分钟,但跟随the Rails video并不真正算作你自己的开发时间),但除了你自己以外,任何人都没用多少钱。其他用户将需要更多功能。

如果需要,请确保你留出足够的时间来拯救并使用Plan B(wordpress + mediawiki +某些论坛软件)。

答案 10 :(得分:0)

我想你会找到Good resources for developing a Bug tracking tool?

的类似答案

正如我在那里所说,这实际上取决于你的最终目标。

虽然我同意许多人已经说过的话 - 为什么重新发明轮子? - 对你有用的答案将取决于你想要做什么。

第1点:
如果[你|你的公司]只需要一个CMS,那里有很多工具,免费的,高质量的,否则,为什么要自己编程呢?

第2点:
如果您正在寻找学习经验,寻找一些可以学习的东西[ChoiceLanguage],和/或just looking to learn more about wheels,有很多文章,并且有许多开源项目可以查看代码看看它们是如何工作的(或不是视情况而定)。

我发现有时从一个开源项目开始有助于我至少获得大量代码。我已经拿了一个经典的ASP论坛软件包并将其变成一个CMS - 但它花了一年左右的时间才得到报酬。 YMMV

最后:
如果后者是您的最终目标,那么请务必阅读文章,进行研究并编写代码。

如果是前者,你可能想看看已经完成的事情 - unless its going to be your businesses core competency

最终,你得到的答案将取决于你提出的问题。从一开始就明白将会有很长的路要走。 ;)

答案 11 :(得分:0)

坦率地说,无法回答多少时间因素,不知道你有多好或者你拥有什么资源。我会说,你引用的每一个例子都可能至少落后一千个小时,而且非常保守。

至于你是否应该发展自己的?嗯,这真的取决于你想要完成的事情。想要有效地利用时间吗?无论如何,不​​!使用预先存在的解决方案。想要一个案例研究来学习更好的编程?这是完全不同的情况。

答案 12 :(得分:0)

在我看来,现在成功的社区网站是专门建造的。它们没有太多无关的垃圾,易于导航并且使用起来很有趣。 StackOverflow就是一个很好的例子。为了使您的网站获得成功,您的用户界面将非常重要。

如果您希望最终控制您的用户界面,那么您最好的选择就是自己构建它。您可以从您喜欢的代码库开始,或至少将其用作工作示例。

幸运的是,只要你有合理的编程技能,开始使用现有的网络工具,可以在超越合理的学习曲线后提高你的工作效率。

在一天结束时,如果您自己构建它,您将拥有一个非常灵活的网站,并且看起来完全符合您的要求。如果你使用别人的代码中,你将有更多的功能更快,获得该网站,但它不会像灵活,你可能不得不做出上看一些让步和感觉。

答案 13 :(得分:0)

我必须强调barfoon的评论不要重新发明轮子。在获取别人的CMS并学习如何使用和开发它时,有很多学习经验。

此外,如果您参加一个开源项目并了解他们如何决定设计他们的产品,您将学到很多东西。 然后,在了解了它们的工作原理后,您既可以为项目做出贡献,也可以自己分支,但这种方式有几个好处:

  • 你知道你正在进入什么(CMS可能是一项重大任务)
  • 根据您选择的那个,对现有CMS产品提供了大量社区支持,这些产品很有价值
  • 通过查看代码,您可能会学到很好的方法
  • 学习他们的产品/代码比建立自己的产品/代码花费的时间更少,因此与从头开始构建产品/代码相比,您失去动力的可能性更小

那就是说,我个人建议你看一下Magnolia。它有社区支持,它是开源的,它是一个质量体系。

G'luck

答案 14 :(得分:0)

我自己会使用WordPress来确定您定义的项目范围。 Simple Press Forum是一个功能强大的全功能WordPress论坛插件,它可以很容易地集成MediaWiki。还有一个WordPress wiki plugin project可以使用您愿意承诺的小时数。 WordPress可以完成你周末描述的所有事情。

答案 15 :(得分:0)

你不需要重新发明这些经验来获得经验。

我会去Wordpress。 我将它用于我的网站(www.norwegianfashion.no),我相信我有一个相当先进的网站。我当然增加了我的PHP编程技能。

我也尝试过Drupal。这是非常好的CMS,但是学习屁股很痛苦。

即使在其他CMS系统(.NET)上开发了5年,我也无法在尝试1个月后掌握Drupal。

我不是铁杆程序员,但我相信CMS应该相当容易使用。

所以我选择了Wordpress。 它有它的局限性,但你可以创建自己的插件来弥补这一点。