【问题标题】:Should I write my own CMS?我应该编写自己的 CMS 吗?
【发布时间】:2010-10-24 22:19:51
【问题描述】:

我计划在今年 6 月开始我的第一个个人项目:一个关于学生的社区。我想要的是一个 wiki,里面有关于大学的信息,一个人们可以讨论的论坛和一个包含新闻、文章等的博客,所有这三个都相互集成。

现在,要走的路似乎是 wordpress+mediawiki+一些论坛软件,但我一直有这些想法,想尝试一下并编写自己的 CMS。我有一些 RoR 和 PHP 知识,但肯定没有到可以编写自己的 CMS 的程度,尤其是完全从头开始。

你认为我需要多长时间才能实现它?我认为/估计我每天可以花 3 到 5 个小时在上面工作,并且我希望整个站点在 8 月底之前启动并运行(这给了我大约 300 个小时的工作时间,因为我也打算花一些时间而已。 ..什么都不做!:P).

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

【问题讨论】:

  • 查看 www.moodle.org

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


【解决方案1】:

在那个时间范围内有可能,这取决于您对 ruby​​ on rails 和 php 的熟练程度。

但是,我只会使用现有的东西。自己做这么多时间真的值得吗?

【讨论】:

  • 这是我的问题,值得吗?也许这是将我的 RoR/编程技能提升到另一个层次的好方法,也许这是让我讨厌 RoR/编程的最好方法。
  • 这对我来说不值得。这些应用程序相当普通。
【解决方案2】:

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

但是,如果您只是构建它以供自己使用,那么您会遇到很多“足够好”的东西,可以节省您的时间。所以我会说... 不到 1,000 小时。这听起来有点模糊,不是吗?我已经编程了 14 年,但我仍然无法估算项目的时间,哈哈。当然项目的定义也很模糊。

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

【讨论】:

  • 他可以做到那些没有像上传图片等花哨功能的事情。
【解决方案3】:

从您的目标来看,在 Drupal 中只需最少的工作即可轻松完成。

www.drupal.org

论坛和用户博客是内置的,我很确定我在某处看到了一个 wiki 模块。

但是,如果您想要学习体验 - 自己动手将是一种学习体验。无论你是否真的完成了它,当你完成时,你都会更好地理解 RoR 和/或 PHP。

【讨论】:

  • 我讨厌加入“只使用 Drupal”的潮流,但考虑到 OP 只想集成标准 CMS/社区功能的大杂烩,Drupal 可能是让事情顺利进行的最快方式。跨度>
  • 我的目的不仅仅是让网站尽快准备就绪。我不只是想成为一名成功的网站管理员,我从中获得的收入越多越好! :)
  • 创建您自己的模块,或对现有模块进行非常酷的自定义。你仍然可以学到很多东西。
【解决方案4】:

我会说考虑一下你为什么要这样做,如果是为了进一步了解你的编程知识并学习新的东西,那就去尝试它并自己构建它,否则我只会使用可用的工具来组合它。

至于时间框架?我对自己的技能估计很烂,所以没有机会估计你的:)

【讨论】:

    【解决方案5】:

    没有。

    “不要重新发明轮子,除非你打算更多地了解轮子”。

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

    【讨论】:

    • 他确实有点说他有兴趣学习车轮,但询问这是否会提高他在该主题上的技能
    【解决方案6】:

    如果您想获得学习经验,那么我认为您应该这样做。 Phil Haack 写了一篇名为 Rolling Your Own Blog Engine 的精彩博客文章,其中列出了您将遇到的问题。

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

    只要确保您有足够的时间来摆脱困境,并在需要时使用 B 计划(wordpress+mediawiki+一些论坛软件)。

    【讨论】:

      【解决方案7】:

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

      1. 不要尝试制作 1:1 的副本。自己动手让您有机会只实施您需要的东西,而忽略其他一切。
      2. 从小处着手。 Wordpress 和 Mediawiki 拥有多年的编码经验。试图自己复制它是行不通的。
      3. 博客和论坛一开始非常简单,但一旦处理所见即所得编辑器、反垃圾邮件技术、浏览器兼容性问题等问题,就会变得非常复杂。
      4. 这是获得您的语言和“企业”技术的认真体验的好方法,但如果您缺乏经验并且在截止日期前,您真的应该首先考虑扩展市场上已有的东西。

      如果你愿意在开始时偷工减料,我认为在 300 小时内构建一个 CMS 肯定是可行的。但是不要开始考虑诸如插件架构、出色的管理员用户体验和文档之类的东西 - 如果您想将您的 CMS 发布给其他人,这些点非常重要,但对于内部使用来说并不是那么重要。

      【讨论】:

      • +1,以及更多建议:避免花里胡哨。不要提供单个单选按钮。省略控制面板,因为您可以自己更改代码和 INI 文件。 Drupal 必须假设其网站管理员对代码过敏,但您不需要这样做。
      【解决方案8】:

      您应该做什么取决于您自己的判断,但您应该做的是实现 Drupal 之类的东西。

      Drupal 是一个用于社区网站的 CMS。它不是最容易理解和使用的系统,但它非常可定制。

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

      当您必须在为自己编写内容和使用现有软件之间做出选择时,您需要考虑四个关键信息。

      1. 会有多复杂?
      2. 现有系统与我的需求的匹配程度如何?
      3. 实现现有系统与编写自己的系统相比需要多少成本
      4. 我多久需要它?

      如果它不是很复杂,没有其他东西能很好地满足您的需求,那么创建它会很便宜(时间和金钱),而且您不需要立即使用它,然后继续做自己的事情。

      否则,请加入现有的开源 CMS 之一并开始在那里做出贡献。您不仅会从经验丰富的程序员那里得到很好的反馈,而且您会成为一些非常棒的软件的一部分。

      【讨论】:

        【解决方案9】:

        我想你会找到与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

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

        【讨论】:

          【解决方案10】:

          多少时间因素是无法回答的,因为我们坦率地说,不知道你有多好或你有什么资源。不过我会说,你引用的每个例子可能至少落后一千工时,这是非常非常保守的。

          至于你是否应该开发自己的?嗯,这真的取决于你想要完成什么。想要高效地利用时间?无论如何,不​​!使用预先存在的解决方案。想要通过案例研究来学习更好的编程吗?那是完全不同的场景。

          【讨论】:

            【解决方案11】:

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

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

            幸运的是,只要您具备合理的编程技能,就可以开始使用当今可用的网络工具,在克服合理的学习曲线后,您的工作效率就会很高。

            归根结底,如果您自己构建它,您将拥有一个非常灵活的网站,并且看起来完全符合您的要求。如果您使用其他人的代码,您会更快地启动网站并提供更多功能,但它不会那么灵活,您可能必须在外观和感觉上做出一些让步。

            【讨论】:

            • 你的意思是我应该这样做,不是吗?
            • 不要忘记,在你自己构建它之后,你就会对代码了如指掌......所以如果出现问题,你应该能够很容易地找出原因。
            • 我只是建议您可以在代码中准确地构建您想要的东西,而不是通过组合。无论您是自己编写代码还是从其他来源编写它,这都取决于您。不过,如果是我,我会这么说——我会先尝试作曲路线。那里有一些非常好的代码,我个人已经有太多的事情要做了。但这只是我。
            【解决方案12】:

            推出你自己的 :)

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

            【讨论】:

              【解决方案13】:

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

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

              • 您知道自己在做什么(CMS 可能是一项艰巨的任务)
              • 根据您的选择,社区对现有 CMS 产品的大量支持非常有价值
              • 通过查看他们的代码,您可能已经学会了一种很好的方法
              • 学习他们的产品/代码比构建自己的产品/代码花费的时间更少,因此与从头开始构建产品/代码相比,您不太可能失去动力

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

              祝你好运

              【讨论】:

                【解决方案14】:

                对于您定义的项目范围,我会亲自使用 WordPress。 Simple Press Forum 是一个健壮的、功能齐全的 WordPress 论坛插件,它很容易集成 MediaWiki。还有一个WordPress wiki plugin project 可以使用您似乎愿意承诺的时间。 WordPress 可以在一个周末完成您所描述的一切。

                【讨论】:

                  【解决方案15】:

                  您无需重新发明轮船即可获得经验。

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

                  我也尝试过了解 Drupal。这是非常好的 CMS,但学习起来很痛苦。

                  即使在其他 CMS 系统 (.NET) 上进行了 5 年的开发,经过 1 个月的尝试,我仍然无法掌握 Drupal。

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

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

                  【讨论】:

                    【解决方案16】:

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

                    说实话,我的博客是用 wordpress 写的,用 PHP 重写了自己的博客,从那以后我用 Django 重写了两次。

                    每次都变得更快,每次您想做更多事情,每次您都了解创建大型项目的人必须经历的所有可用性和安全问题。

                    重写是一次宝贵的经验,我绝不会接受“不要重新发明轮子”的说法。我觉得好像我可以看看一个轮子并告诉你它有什么问题,考虑到我个人发明了它=P

                    【讨论】:

                    • 并且还发现了超大型项目仍然存在的所有安全性和可用性漏洞。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-24
                    • 1970-01-01
                    • 2011-07-04
                    • 1970-01-01
                    • 2012-03-05
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多