写点什么

Composite C1 是如何通过开源方式找到成功之路的

  • 2014-08-27
  • 本文字数:3793 字

    阅读完需:约 12 分钟

在当前的环境下,开发商用产品变得越来越困难了,尤其是在那些竞争非常激烈的领域中,例如内容管理系统。 Composite C1 也发觉到它们的市场在不断萎缩,在这种情况下,它们终于找到了一条生存之道,即将它们的核心产品开源,并在云端进行托管。

在与 Marcus Wendt 进行的一次访谈中,我们了解了 Composite C1 整个 15 年的历史,并看到它是怎样从一个商用软件的新手成为一个拥有大量客户的开发平台的。

InfoQ:让我们首先从 Composite C1的历史开始说起吧,这个项目的成因是什么呢?

Marcus对我们来说,Composite C1 是一次大规模尝试?????的顶点。我们从 1999 年开始就致力于开发 web 内容管理系统,当时我们还是一家闭源的商业软件公司,使用的也是当时正当红的微软技术,例如 ASP、VB、C++、COM 和 SQL Server。CMS 是我们的主打产品,也是优势所在,当时我们作为一家 CMS 提供商在斯堪的纳维亚(北欧)地区获得了成功。但随着时代的前进,我们的产品开始显得落伍了,即使我们花费了很大力气将部分系统升级到.NET 平台上,也没有改变这一局面。

这一情况提醒我们必须完全舍弃陈旧的代码,从头打造一套全新的 CMS 系统。这项工作从 2007 年一早开始,随后在 2008 年 4 月,我们终于发布了 Composite C1 的 1.0 版本。从开发者的角度来看,这是一段非常令人振奋的时期,因为像 LINQ 和 Workflow Foundation 等新技术开始出现在.NET Framework 中,而且更先进的浏览器也在不断进化。

1.0 版本在很多方面还是具有一定实验性质的。我们创建了一个基于 LINQ 的数据访问层,它使用了表达式树转换,它使我们能够按照抽象的数据接口访问 SQL Server 以及内存中的数据(XML 文件)。作为类型安全数据系统的一部分,CodeDom 使我们能够动态编译 CLR 运行时类,这样我们就能够用户界面上生成能够与.NET 完美交互的数据类型了。我们也用到了 Workflow Foundation,这在当时还是门很新的技术。我们也编写了一个在线管理界面,使用 JavaScript 将服务端生成的一种类似 XUL 的抽象标签(类似于 <ui:tabbox /> 和 <ui:splitpanel />)转换为 HTML。我们使用了微软的模式与实践(Patterns & Practices)小组推出的 Enterprise Library 套件编写了一系列应用构件块,以确保这套 CMS 具有高度的可插用性(pluggable)。

在那之后,我们花费了一些时间让 Composite C1 符合工业标准。之后的 18 个月,我们致力于提升系统的性能与稳定性,并完善一些基本特性。我们特意选择了一些合作伙伴与客户到丹麦来共同参与这一流程。

到了 2009 年 9 月,距 1.0 版本的发布已经过去了 18 个月,在此期间我们也发布了多个版本的补丁包。我们此时的系统已经经过充分的测试并且已经相当稳定。它具有一套优秀的特性集合,并且拥有良好的技术架构与基础设施,能够让我们不断完善这套 CMS。使用这套 CMS 进行内容编辑的体验非常好,.NET 和 web 开发者也能够利用它打造一套经过高度定制的解决方案。

InfoQ:Composite C1是一套商用产品,你们为什么会决定将它开源呢?

Marcus作为一家商业公司,我们在创建 Composite C1 时所面临的挑战主要是在本地市场上几乎没有任何影响力。随着 WordPress 和 Joomla 这些系统的出现,人们对于 CMS 市场的期望渐渐从传统的商用软件模式转变为开源软件或免费软件的模式。由于受众面的狭小、市场区域的限制以及所面临的近乎疯狂的竞争,我们开始重新审视我们的市场策略。

我们讨论了各种可能适用于我们的商业模式,例如价格竞争、打造“杀手级特性”、建立免费软件模式或是开源模式。我们拥有一套非常优秀的软件,它使用了.NET 环境下最新与最优秀的特性,拥有一套非常健康的代码库,因此我们对于开源及共享它感觉十分自豪。如果我们把目光放远一些,我们就能看到全球市场上迫切需要一款高质量的开源.NET CMS 系统,而当时的选择非常少。我们非常希望能够将 Composite C1 推向全球,让它站到聚光灯之下,围绕这款产品打造出一片社区,帮助它逐步壮大,同时也激发出.NET 开发者的热情。综上所述,开源是一种很好的选择。

接下来的几个月我们慎重地考虑了我们的想法,毕竟我们对于开源了解甚少,要学习的东西很多。我们发布了最新版本的代码之后,就开发了繁重的代码重构工作:重新组织类和命名空间、添加更多的文档、并且进一步改善了入门指南,让开发者在下载软件后只需简单的操作就可以搭建起整个网站。

2010 年 9 月,我们在 CodePlex 上发布了完整的源代码,基于 Mozilla Public License 1.1 授权。

从那时起,许多事情都显得不一样了。这套产品不再是一个本地的、封闭的产品,它得到了数千次下载,在一百多的国家里得到应用,我们的论坛变得异常活跃,志愿者们提交了各种补充。有各种各样的网站开始使用我们的 CMS 系统进行搭建,包括小型的个人婚礼展示网站,到财富 500 强的网站应有尽有。人们的反响热烈,通常都是正面的、有创造性的并且非常友好,我们在 CodePlex 上的网站得到了大量的 5 星评价和正面的反馈,这一切都非常美妙,它极大的鼓舞了我们这些核心团队成员们的斗志和好胜心:)

InfoQ**:Azure对于 Composite C1来说似乎是个非常重要的平台。为什么你们选择了这个平台,而不是诸如 Amazon**等其它公司推出的云平台呢?

Marcus我们可以选择自行托管的方式或是托管在 Windows Azure 平台上,我们从很早开始就关注 Windows Azure 平台,因为在技术上同我们十分契合。在.NET 环境下,Windows Azure 所提供的工具、服务和 API 超越了我们所见过的其它任何平台。由于.NET 是这个平台下的一等公民,整个云基础设施使用起来感觉就是一种非常自然的扩展,我们也相信这个平台能够保持良好的发展。

从商业的角度上看,Windows Azure 也是一个非常有趣的平台,由于多数用户使用的是 Composite C1 的免费服务,我们探索了各种方式,以寻求为用户提供有价值的服务,并从中盈利,以继续我们的软件开发。为高质量的托管花费一些费用是能够接受的,而 Windows Azure 也为我们提供了价廉物美的各种托管选择。因为将 Composite C1 作为服务提供给用户,而且用户只需几分钟时间就可以通过该服务搭建起一个可运行的网站,这也使得我们的用户量进一步提升了。

InfoQ**:Composite C1是否支持 Mono呢?**

Marcus很遗憾,目前还不支持,因为我们的产品所依赖的一些.NET 特性目前还没有移植到 Mono 上,我们目前也没有足够的精力来帮助 Mono 实现这部分功能缺失。

InfoQ:你能具体说一下这部分的细节吗?

Marcus我们上一次尝试解决 Mono 上的最大问题距今已经有一段时间了,但一个至今也无法逾越的障碍就是 Workflow Foundation,我们使用了一些.NET 3.5 中新加入的特性,而这部分内容至今还未加入到 Mono 中。

随着.NET 4 的推出,微软推出了全新的 WF,使用了新的命名空间,我猜测微软大概是对 WF 进行了完全重写。之后的.NET 4.5 版本就将早期版本的 WF 功能全部认定为过期功能了。

这一新版本的推出或许能够促进我们的产品对 Mono 的支持吧。

InfoQ:Composite C1的团队规模有多大?这些团队成员都是内部员工吗,还是说你也会从社区中获取一些志愿者提交的代码呢?

Marcus目前的核心开发团队一共包括了三名成员,Dmitry Dzygin、Taras Nakonechnyi 和我。除此之外,Poul Kjeldager Sørensen 负责在 Windows Azure 平台上的工作,而 Vitaly Vysotskyi 则确保我们发布的产品具有完善的文档和测试。Inna Boitsun 也有很天分,他帮助我们维护上手指南模板以及特性包(package)。我们的 CEO Oskar Lauritzen 当然是关注于销售的部分,最后是我们的万事通 Pavlo Kuzminskyi,他专注于客户支持以及运行整个公司的其它一些部分。荣誉也同样属于 Jesper Moth 和 Martin Ingvar Jensen,他们在产品开发的前 4 年前是核心团队中必不可缺的人物。

虽然主体的工作是由内部人员实现的,但我们同样欢迎并且鼓励社区成员为我们提交代码,同时我们也非常重视公众提交的各种缺陷追踪。我们目前只剩下 12 个还没解决的 bug,同时我们也尽力为用户加入他们最想加入的新特性。

当我们刚开始将代码开源的时候,还没有使用 ASP.NET 中的母版页功能打造页面模板,也没有使用 Razor 引擎进行内容展现,这些部分的缺失是由一位名叫 Pauli Østerø的社区成员替我们填补的,他将这些功能加入到了额外的包中。他的贡献引起了社区中许多人的关注,我们最终决定将这部分内容加入到我们的核心代码中。类似这样的社区贡献对我们的产品继续发展是非常有帮助的。

我们也陆续收到了许多小型的补丁文件,以补充核心部分的功能,例如对用户界面语言的翻译文件,包括德语、汉语和俄语等等。此外也有许多优秀的特性包(插件),比如某个特性可以允许 Entity Framework 与 Composite C1 的数据访问系统进行无缝的集成。

总的来说,我们花了不少时间来验证这些提交代码的质量,尤其是对核心功能部分的补丁经常需要进行一些适配工作。我们已经按照这种方法运作了很长时间,因为我们需要保证代码的可靠性和可维护性,而且比起为用户提供大量重复的特性和选项,我们宁可让用户在使用 Composite C1 时不要遇到任何错误。

关于受访者

Marcus Wendt是 Composite C1 项目的负责人,该项目是一个开源的、运行于.NET web 技术栈之上的 web CMS 产品。他最关注的方面是为终端用户和开发者提供良好的用户体验。你可以通过他的网站 twitter 了解到他的更多信息。

查看英文原文: How Composite C1 Found Success by Becoming Open Source

2014-08-27 01:232019
用户头像

发布了 428 篇内容, 共 178.8 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

百度智能云计算系列产品通过电子标准院算力服务成熟度增强级评估

Baidu AICLOUD

四旋翼无人机到底是如何平稳飞行的?巧用空气动力学仿真

Altair RapidMiner

人工智能 无人机 仿真 altair 设计仿真

通过 API 集成优化货币兑换

幂简集成

API 货币兑换API

直播拍卖平台开发:如何利用沉浸式体验展示高价值商品

软件开发-梦幻运营部

为什么要使用TikTok云手机

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 tiktok运营

利用多Lora节省大模型部署成本|得物技术

得物技术

LoRa 大模型 企业号2024年8月PK榜

云上集成时序数据库 IoTDB,海量储能数据实现高效处理与实时分析

Apache IoTDB

RFG引领Meme新趋势——为何现在仍是投资好时机?

股市老人

解锁RFG空投:撸毛党看过来,轻松获利的机会来了!

石头财经

MySQL主从同步如何保证数据一致性?

王磊

Java

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

测吧(北京)科技有限公司

测试

iPaaS丨API低代码平台适用的业务场景

RestCloud

API 低代码平台 ipaas

在孩子成长路上,爱与智慧的陪伴是送给孩子最好的礼物

心大陆多智能体

AI大模型 心理健康 数字心理

编程“奥斯卡”落幕,百度之星决赛中学生疯狂收割大奖!

herosunly

使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照

阿里巴巴云原生

阿里云 云原生 sls

豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 pandas

【AI 冰封挑战】搭档函数计算,“冰”封你的夏日记忆

阿里巴巴云原生

阿里云 Serverless 云原生

如何解决跨国视频会议卡顿问题

Ogcloud

网络加速 海外网络加速 网络加速服务 视频会议加速

如何在 KubeBlocks 中配置实例模板?

小猿姐

数据库 Kubernetes 云原生

讯飞星火极速超拟人交互技术:语音端到端,8 月底开放;昆仑万维发布 AI 短剧平台 SkyReels丨RTE 开发者日报

声网

通义灵码代码搜索功能的前沿性研究论文被软件工程国际顶会 FSE 录用

阿里云云效

阿里云 云原生 通义灵码

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

霍格沃兹测试开发学社

Match:重塑社交金融格局,打造财富增长新引擎

BlockChain先知

Bonree ONE 3.0:全域可观测 运维新境界

博睿数据

华为云构建边缘云平台,畅享AI数字时代新体验

最新动态

如何通过观测云实现AIOps突破?

观测云

AIOPS 智能运维

一段鸿蒙旅程

草原上的奔跑

鸿蒙Next 纯血鸿蒙

深入浅出python的lambda表达式

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言 Lambda表达式

AI作文导师、一键搜索答疑、1秒生成手抄报,百度搜索推出开学季AI大礼包

Geek_2d6073

草图大师2023软件分享:SketchUp Pro 2023(Win&Mac) 中文特别版

你的猪会飞吗

SketchUp Pro 2023 草图大师2023下载 SketchUp Pro 2023下载 mac破解软件下载

第64期 | GPTSecurity周报

云起无垠

Composite C1是如何通过开源方式找到成功之路的_开源_Jonathan Allen_InfoQ精选文章