昨天我尝试了一个实验。我下载并尝试安装了 JED 中列出的 109 个仅 1.0 版本的 GPL 许可组件中的 21 个。这让我想起了在 Mambo forge 上的美好旧时光,当你下载某个东西时,你永远不知道会得到什么。我想知道它们是否会在遗留模式下工作,如果不工作,那为什么。

我选择了评价超过 20 条的六个组件以及平均评分为 5.0 的 14 个非商业组件。这组组件代表了一个范围,因为它们可能只有一个评分,但这意味着有人发现了它们的有用。

我首先注意到的是,几乎没有任何项目似乎在积极开发中,这并不奇怪。让大多数 1.0 组件在遗留模式下工作并不困难,尽管一个很好的经验法则是,组件越复杂,需要的调整就越多。(我决定专注于组件,因为它们更复杂;让模块进入遗留模式甚至原生 1.5 模式通常很容易。)积极开发的项目已经有 1.5 版本或正在积极开发中。

那么我学到了什么?尽管我非常想说的是,这些组件都可以轻松标记为遗留兼容,但我发现几乎所有的组件都需要一些小修复。这些修复中有许多是扩展共有的。

  • 在组件 xml 的描述字段中未编码的 & 和 > < 字符。这将给您一个错误消息,说没有 admin 标签。
  • 使用指向 includes 文件夹(以前的位置)的 pattemplate 的 include。一般来说,您应该替换
    require_once($mosConfig_absolute_path.'/includes/patTemplate/patTemplate.php');

    jimport('pattemplate.patTemplate');
    但我对 pattemplate 的了解不足以告诉您在此之外应该怎么做。
  • 一些与 PHP 5 兼容性问题(例如,需要将使用类的代码放在类的代码之后,而不是之前)。
  • 将 #_mambots 的表名更改为 #_plugins。

查看前六个

  1. Rss Feed Manager 它在旧版本中安装没有问题。为了使其在管理员界面中工作,我还需要注释掉rd_rss.php中的第145行。在前端创建一个菜单链接也没有问题,我确实用它成功订阅了Google的一个feed。Google没有提出任何异议。
  2. eWeather 安装正常,运行正常。
  3. Mehdi的Phpbb TWO——我的扩展列表是几周前的,Mehdi发布了Mehdi的Phpbb Three,它是1.5的原生版本。加油Mehdi!
  4. Deep Pockets II。  使用patTemplate,但一旦进行了上面的更改,就可以安装。然而,有人真的需要处理patTemplate代码的其余部分,这是我不太了解的。此外,即使我作为超级管理员登录,它总是生成一个未授权的警告。由于这个组件只有超级管理员才能访问,所以我建议将所有的复杂凭证检查更改为类似以下内容
        $user        =& JFactory::getUser();
        if ($user->get('gid') != 25) {
                 JError::raiseWarning( 403, JText::_('ALERTNOTAUTH') );
             return;
            }
  5. Productbook  在他们的网站上,开发者说他们不会制作1.5版本,尽管他们仍在1.0版本上进行一些改进。实际上,它在兼容模式下安装没有任何问题。然而,一旦安装,你不能做任何事情。这是一个非常古老的代码库,基于AkoGallery,但喜欢它的人应该能够使其现代化。
  6. Shared Private Space 这是一个有趣的组件,安装没有问题,尽管在错误报告开启时它会生成一堆通知。它在前端用于上传文件(同样带有通知),但浏览文件的功能不起作用。我认为这是因为在1.5中添加的一些安全功能阻止你直接从未知源拉取文件。所以,如果你知道文件名,可以插入它,但我建议使用images/archive/stories/espacePrive(切换到你的图片根目录)作为文件夹而不是espacePrive。然而,真正的问题是凭证检查需要现代化以使其与媒体管理器一起工作,因为我无法让它显示我自己的图片。删除.htaccess文件解决了这个问题,但随后访问控制失败。

现在,关于14个扩展。实际上有四个已经在1.5版本中可用(ReMOSef for Joomla, Flash Slide Show Image Gallery, NinjaMonials for Joomla!, Joomler! Pinger现在称为Pinger)。一个(Simple Shop)说他们正在开发1.5版本。两个(Zinderudsitemap和BBClone for Joomla)在链接的下载网站上不可用。其他的都安装了,有时需要对xml文件进行一些小调整(如上所述)。一旦安装,功能程度有很大差异,但大多数问题是上面描述的。这些扩展包括:kapod, Karma 1.0.1 - Profile rating system, Moslate, GITS - Steckbriefe, Jacot Component, eventManager。在某些环节导致我的媒体管理器中出现背景图片,但我不确定是哪里,因为直到稍后我才发现。

那么现在怎么办?

如果您正在使用或想要使用仅1.0版本的扩展,或者认为它所做的很酷,那么您应该成为开源开发过程的一部分。这意味着,打开文件,了解为什么它没有按照您的要求执行,并找到解决问题的方法。然后在项目的论坛或邮件列表上发帖,或者将您学到的知识发送给看起来像是负责项目的人。如果他们真的不感兴趣,询问您是否可以成为项目的维护者并负责创建1.5版本。您不一定需要成为一名高级程序员来做这件事——我已经使用下面的一些资源使许多1.0组件在1.5中工作。如果我能做到,您也可以。这就是GPL的美丽之处,您可以打开文件并使其为您工作。这种美丽的第二个方面是,您可以将您学到的知识分享给其他人,这样每个人都可以受益并互相帮助。

我建议每个人都阅读Eric Raymond的文章《开垦无主地》,特别是其中的《所有权与开源》部分和《邮件必须送达》,这篇文章讲述了他是如何成为fetchpop的维护者的。对于被遗弃的项目来说,这一点尤为重要。

获取项目所有权的第三种方式是观察到项目需要工作,而所有者已经消失或失去了兴趣。如果您想要这样做,您有责任努力找到所有者。如果您没有成功,那么您可以在一个相关的地点(例如专门针对应用程序领域的Usenet新闻组)宣布该项目似乎已经被遗弃,您正在考虑对其负责。

习惯要求您在宣布自己为新所有者之前留出一段时间。在此间隔期间,如果其他人宣布他们实际上一直在项目上工作,那么他们的声明将优于您的。在公开通知您的意图时多次宣布被认为是好的做法。如果您在许多相关论坛(相关的新闻组、邮件列表)上宣布,并且在等待回复时表现出耐心,您将获得更多的分数。总的来说,您为了让前任所有者或其他声明者有机会回应而做出的越明显的努力,如果没有回应,您的声明就越好。

如果您已经在项目用户群体的视线中完成了这一过程,并且没有反对意见,那么您可以声明拥有被遗弃的项目,并在其历史文件中注明。然而,这与交接接力棒相比不那么安全,并且您不能期望在用户群体视线中做出实质性改进之前被完全认可。

所以,再次强调,如果您有补丁,您应该尝试联系扩展的维护者并提交补丁。如果所有者表示他对进一步开发不再感兴趣,考虑在joomlacode上获取一个仓库(或在您自己的网站上创建一个),并邀请人们帮助。

关于迁移到1.5的一些资源

Andrew Eddie有一系列关于转换的文章,包括一个将1.0转换为1.5的便捷备忘录