在 SparkFun 电子公司,我们不出售软件,但我们拥有一支强大的软件开发团队。这些开发人员将一部分时间用于 SparkFun.com,这是一个电子商务平台,具有额外的内容和集成的社区元素。然而,他们的大部分时间都花在了 Sparkle 上。
可以将 Sparkle 称为基于网络的 ERP 系统。它是 SparkFun.com 底层相同数据库的另一种视图,但具有庞大的内部子系统,这些子系统可以完成所有工作,包括基本客户服务、运行发货仓库和运行制造车间。
Sparkle 及其运行系统充分利用了免费的开源软件。PHP 是核心语言。Nginx 是核心 Web 服务器,Varnish 用于缓存。一切都在 Debian Linux 上运行,数据存储在 MariaDB(MySQL 更开放的“表亲”)和 MongoDB 中,用于非关系型数据。缓存使用 Memcached 和 Redis。在客户端,jQuery、D3 和 Bootstrap 等库无处不在。在内部,Munin、Nagios、Samba、Puppet 和 Capistrano 等系统端工具(仅举几例)维持着系统的正常运行。
称其为开源堆栈是对它的低估。它是一个企业级的开源架构。甚至我们的电话也运行在开源电话框架 Asterisk 上。
现在,这一切都与业务的其他部分非常协调。SparkFun 多年来一直在推动开源硬件。由 SparkFun 工程师设计的产品以 Creative Commons 许可发布原理图和固件。对于 SparkFun 多年来生产的所有新电子产品,该公司没有持有一项专利。
以上所有这些都为我们具有开源意识的员工带来了温暖的感觉。作为一个组织,我们正在为开源社区做出贡献……对吗?嗯,前沿的开源硬件社区当然很享受来自 SparkFun 的大量新材料。然而,搜索 SparkFun 开发团队的开源软件,结果相对较少。
为了可视化网站上的任何类型的活动,我们有 Blode,我们类似 syslog 的事件广播守护程序。还有 StormFS,一个用于云存储的 FUSE 抽象层。当然还有 SparkLib,它是从 Sparkle 的其余部分命名空间划分出来的 PHP 库的适度集合。这些库虽然数量不多,但通用性足以让除我们之外的其他人也可能想使用它们。
这与 Twitter 发布 Bootstrap 并进而改变了互联网很大一部分快速前端开发的方式相去甚远。可以说,我们的开源软件尚未产生可衡量的影响。那么 Twitter 做对了什么?他们对现有的 CSS 框架不满意,因此他们投入开发人员资源来构建自己的框架。它很棒,而且他们不是在销售 CSS 框架,因此他们开源了它,并广受欢迎。
在 SparkFun,我们研究了基于网络的 ERP 系统,并对其越来越不满意。因此,我们决定构建自己的 ERP 系统,名为 Sparkle。它的某些部分非常出色,而且我们不是在销售 ERP 系统。我们会开源它吗?
我已经被问过很多次这个问题了。实际上,这是一个长期目标。它甚至每天都在影响着技术决策。然而,与 Bootstrap 不同,Sparkle 仍在从其过程根源发展成为一个干净、模块化、基于 MVC 的系统,该系统与其模式和特定用例的耦合程度较低。如果今天开源,对于想要为其蓬勃发展的业务使用开箱即用的 LAMP 堆栈 ERP 系统的人来说,它将过于晦涩难懂且无法使用。但是,重建它的各个部分以使其更通用,也会生成更干净、更易于维护的代码,因此这是一项值得追求的工作。换句话说,清理我们的代码库和使我们的代码库能够开源实际上是同一件事,因此我们将两者都做,并且每个人都赢。
与此同时,我们渴望回馈慷慨的开源社区的热情,因公司其他部门涌现的开源硬件而得到缓解——在 Sparkle 上进行开发不断提高了这一过程的效率。迄今为止,这种间接的贡献方式是将开发人员资源转化为有价值的开源材料,同时保持业务正常运转的最佳方式。
Sparkle 最终会走出 SparkFun 的围墙,走向更广阔的世界。我确实期待着有一天,一家新兴公司使用 Sparkle 模块来运行其制造车间或预测库存的使用趋势。然而,只有当我们发布的内容实际上是可转移的时,这种情况才有可能发生。因此,它还在等待。明天发布高质量的产品胜过今天发布噪音。
在这里查看我们的 Kickstarter 项目:这里。
4 条评论