前不久听说立创EDA,对比之前的讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性 · Issue #11 · program-in-chinese/overview,觉得颇有共鸣。

库管理和共享

虽然EDA开发和传统软件开发看起来相去甚远,但一个很大的共通点是,硬件库和软件库的管理和共享。软件本来源于硬件,库自然也存在依赖关系,EDA中的元件库,类似于编程语言的标准库和第三方库。

立创的开发环境集成了库管理和分享功能,这是一个降低入门门槛、提高开发效率进而迅速积累人气的强大优势。

现有的英文编程语言,多数是语言与IDE分离,在IDE中同时提供库管理加上开发者共享库功能的并不多见。

– 7/3 补: 经指点,有类似紧密集成语言和库管理的例子,如微软.NET的NuGet也集成在了Visual Studio。个人认为也佐证这项功能的重要性。

中文编程语言和开发环境,作为后起,需要利用各种加速积累人气的功能。库管理和分享功能看来是其中之一。

运营和筹款

这几天恰好得知一个开放项目在讨论筹资方式,觉得有些共通性,一并说说。

几年前参与过一个很特别的项目Gratipay。它的理念是不仅代码开源,而且运营决策和财务都尽量在公开平台进行。它自身的产品就是一个众筹平台,而且筹款主要通过自己的平台进行。这个公司由于种种原因未能延续,但经验教训可供借鉴。

它的创始人最后写的回顾文章在这里。注意它是曾经有过指数增长期的,但2015年有断崖事故,具体可以自行了解。下面只是我参与后的一些状况。

主要参与的是财务方面,包括预算清理、收支数据整理和可视化等等。在2016年末刚参与时,就想首先了解财务状况。账面余额之外,还需要了解支出的细节,包括办公地点租金、使用第三方服务的开销等等。于是开始了持续了几个月的整理和优化。由于都是通过网络联系,各地的参与者意见整合都使这个过程更久。下面是一些节流效果:

  • 有些第三方服务并不属于必需,或者只需基本功能(更便宜的月费)
  • 有些服务对开源项目有特别照顾,由于Gratipay的开源性质和历史,往往这些服务都很快通过了免费请求的申请。期间还提出了一个对这些提供”资助“的对开源项目友好的服务商进行推介的想法,可惜没有成型。

省下的经费,一部分投入了其他更需要的服务,或者对其他服务进行捐款(比如Read the Docs)。

在收支数据方面,主要是通过一个基于文本的会计软件BeanCount进行了尝试:Port to Beancount by chadwhitacre · Pull Request #35 · gratipay/finances

简单说说在预算和收支方面的个人体会:

  1. 公开平台讨论运营当然有好处,但副效应就是人多嘴杂,能够干实事的在任何时候都是少数。
  2. 开源项目加开放运营,已经够另类和边缘。这种情况下,需要争取任何可以争取的资源,开源节流必须都要抓。很难想象这个项目开始了四年之久但除了报税之外没有非常规整的流水和定期的预算审核。
  3. 财务数据虽然一直打算公开,但一直没有合适的软件进行可视化,也没有与主网站进行整合,导致财务透明这一项本来非常独特也很有区别度的产品/企业特色没有起到应有的作用。
  4. 在筹款方面,单一倚靠众筹。原本的思路是,Gratipay这个众筹平台可供所有开源项目的作者进行众筹,而Gratipay平台本身也是自己的客户。但这就导致,收入完全依赖于众筹平台本身的推广程度。而开源项目毕竟是小众,相对于其他的众筹平台,总用户和捐款数完全不在一个数量级。创始人希望从这其中通过完全平等的身份分得一部分,而不是使用类似”收税“的方式,这也有很大的不确定性。
  5. 多数项目参与者都是志愿者,由于每周仅有几百美元众筹收入,除了维持服务之外,几乎没有盈余。所以多数人很长时间内都只是非常象征性的拿些”咖啡钱“,包括主创。收入分配方面,话就长了(也是一个独特之处),以后可以另说。

说回立创,对比上面第四点,通过免费版积攒巨大的用户基础,通过收费版本提供更多专业服务。一方面给出了非常明确的”为什么花这钱“的理由,另一方面收费版是通过按人/天收费,给了足够付费灵活度,更关键的是有了相对稳定的收入流(毕竟这月缴费下个月停缴的是少数)。

再说说1-3点,下面想哪说哪。

一旦选择公开运营,就要准备好应对各种不同声音,尤其是牵涉到资金使用的问题。最好一开始就建立一套比较合规的会计流程,为定期讨论预算、收支等等提供基础。

通过网络的合作有很大的延迟,各种讨论经常是等你一天,等他一天,一会就是几周过去。这对项目进度管控是很大的考验。

在GitHub这样的平台讨论有一个好处,就是随时可以@到各种相关服务/工具的开发者。比如在用Beancount的时候,就拉进了它的原作者作为顾问。这样的平台很助力交流。

开源/开放项目的最大优势,在于项目透明度,以及由此形成的相比其他平台更稳固的用户基础(因为有更高的信任度)。上面的收支情况如果公开,也可以进一步增加透明度,因此最好尽可能利用这一优势,比如把收支、盈亏情况在主页进行公示,提供链接了解更多细节等等。

团队都是志愿者的情况下,大家往往图的都不是钱(至少不是眼前的钱)。那么如何激励参与呢?包括原本的团队成员,也需要持续的动力。个人认为,一个“成果单”可以提供非物质激励,比如每月写出团队各人对项目进展的贡献(甚至包括一些代码链接)。对个人来说,可以看到一路以来对项目的投入;对其他人(包括外人)来说,也可以了解团队中其他人都在做什么。有一定影响之后,甚至可以通过公开招聘一些暑假实习生,好处是,他们的贡献都可以直接体现在这份成果单中。而成果单的公开透明也可以保证相对公正。

内部团队建设之外,与合作的第三方联系很重要。尤其是上下游合作者和服务提供商(尤其是提供了某种程度资助的),有条件的话应该借助自身平台和影响力,有忙就帮(包括在网站进行某种感谢/公示),尽量扩大企业/实体层面的朋友圈。

开源和开放,对于中文编程语言和开发环境来说,现在看来是必由之路。上面的经验教训,希望对来者有所裨益。