从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势
前不久听说立创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。
简单说说在预算和收支方面的个人体会:
- 公开平台讨论运营当然有好处,但副效应就是人多嘴杂,能够干实事的在任何时候都是少数。
- 开源项目加开放运营,已经够另类和边缘。这种情况下,需要争取任何可以争取的资源,开源节流必须都要抓。很难想象这个项目开始了四年之久但除了报税之外没有非常规整的流水和定期的预算审核。
- 财务数据虽然一直打算公开,但一直没有合适的软件进行可视化,也没有与主网站进行整合,导致财务透明这一项本来非常独特也很有区别度的产品/企业特色没有起到应有的作用。
- 在筹款方面,单一倚靠众筹。原本的思路是,Gratipay这个众筹平台可供所有开源项目的作者进行众筹,而Gratipay平台本身也是自己的客户。但这就导致,收入完全依赖于众筹平台本身的推广程度。而开源项目毕竟是小众,相对于其他的众筹平台,总用户和捐款数完全不在一个数量级。创始人希望从这其中通过完全平等的身份分得一部分,而不是使用类似”收税“的方式,这也有很大的不确定性。
- 多数项目参与者都是志愿者,由于每周仅有几百美元众筹收入,除了维持服务之外,几乎没有盈余。所以多数人很长时间内都只是非常象征性的拿些”咖啡钱“,包括主创。收入分配方面,话就长了(也是一个独特之处),以后可以另说。
说回立创,对比上面第四点,通过免费版积攒巨大的用户基础,通过收费版本提供更多专业服务。一方面给出了非常明确的”为什么花这钱“的理由,另一方面收费版是通过按人/天收费,给了足够付费灵活度,更关键的是有了相对稳定的收入流(毕竟这月缴费下个月停缴的是少数)。
再说说1-3点,下面想哪说哪。
一旦选择公开运营,就要准备好应对各种不同声音,尤其是牵涉到资金使用的问题。最好一开始就建立一套比较合规的会计流程,为定期讨论预算、收支等等提供基础。
通过网络的合作有很大的延迟,各种讨论经常是等你一天,等他一天,一会就是几周过去。这对项目进度管控是很大的考验。
在GitHub这样的平台讨论有一个好处,就是随时可以@到各种相关服务/工具的开发者。比如在用Beancount的时候,就拉进了它的原作者作为顾问。这样的平台很助力交流。
开源/开放项目的最大优势,在于项目透明度,以及由此形成的相比其他平台更稳固的用户基础(因为有更高的信任度)。上面的收支情况如果公开,也可以进一步增加透明度,因此最好尽可能利用这一优势,比如把收支、盈亏情况在主页进行公示,提供链接了解更多细节等等。
团队都是志愿者的情况下,大家往往图的都不是钱(至少不是眼前的钱)。那么如何激励参与呢?包括原本的团队成员,也需要持续的动力。个人认为,一个“成果单”可以提供非物质激励,比如每月写出团队各人对项目进展的贡献(甚至包括一些代码链接)。对个人来说,可以看到一路以来对项目的投入;对其他人(包括外人)来说,也可以了解团队中其他人都在做什么。有一定影响之后,甚至可以通过公开招聘一些暑假实习生,好处是,他们的贡献都可以直接体现在这份成果单中。而成果单的公开透明也可以保证相对公正。
内部团队建设之外,与合作的第三方联系很重要。尤其是上下游合作者和服务提供商(尤其是提供了某种程度资助的),有条件的话应该借助自身平台和影响力,有忙就帮(包括在网站进行某种感谢/公示),尽量扩大企业/实体层面的朋友圈。
开源和开放,对于中文编程语言和开发环境来说,现在看来是必由之路。上面的经验教训,希望对来者有所裨益。
从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势的更多相关文章
- 如何搭建Visual Studio的内核编程开发环境
最近正在看<寒江独钓——Windows内核安全编程>这本书,感觉这本书非常好,有兴趣的朋友可以买来看看,有关这本书的信息请参考:http://www.china-pub.com/19559 ...
- C#脱离Halcon编程开发环境使用方法
在没有安装Halcon开发程序(HDevelop (SSE2))的电脑上面编程,使C#脱离Halcon编程开发环境使用方法,除了按照Halcon与编程环境必须要做的设置步骤外,还需要做如下两个工作: ...
- 如何成为游戏的生产者——第二章:如何开始你的编程(开发环境的搭建、C++语言适应)
如何成为游戏的生产者--文章二章:怎样開始你的编程 小故事:上节说到我六年级打开了那本C语言的书,然后其实我还是没看懂.好像看懂了一些printf语句.之后遇到了史无前例的困难--怎么让代码执行起来. ...
- JavaWeb从开发环境搭建,到第一个servlet程序(图文)
## 开学到今天,已经是第三周了~ 然而这门课的教材还没发~ 滋滋滋 表示很“蓝瘦”~~~ Java Web开发环境搭建 1. 下载安装Tomcat 官网地址:http://tomcat. ...
- Cordova 开发环境搭建及创建第一个app
整理记录使用cordova创建app应用程序并将其部署至Android系统移动设备上操作过程,具体如下: 一.前期安装环境 1. 安装JDK(java开发工具包) 2. 安装gradle 3. 安装A ...
- 二、Go语言开发环境安装与编写第一个Hello World
本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言. 全文使用环境如下: Go语言版本:1.13 操作系统:deepin 使用工具:Goland开发工具 Go语言追溯历史 Go语言2009 ...
- Java中文编程开发,让Java编写更改复杂
额?what? 在B站无意中看到一张图,无意间已发了自己的好奇,实际上我早就知道Java支持Unicode编码也就是可以使用中文命名规则,但是我们可以包装一下,玩一玩完全使用中文编码也未尝不可,但是经 ...
- 在开发环境中,自己搭建一个ssl环境(小例子)
做项目的时候自己总结的一些小例子 public class Test { public static void setSSLProperty() { Security.addProvider(new ...
- 我的高效编程的秘诀--开发环境的重要性(IOS)
我觉得一个好的开发环境,能够让一个开发者的工作效率提高两倍以上,也能够让一个小白看上去不那么蠢: 开发环境不是仅仅安装一个xcode这种ide就OK了,在我看来开发环境的部署范围比較广泛,以下我来说说 ...
随机推荐
- WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?
目录 .NET Conf 2019 Window Forms 设计器 .NET Conf 2019 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Cor ...
- 【重学Git】高级命令篇
1.分离HEAD.HEAD 总是指向当前分支上最近一次提交记录. 所谓分离HEAD,就是让HEAD直接指向某一条具体的提交记录,而不是默认的通过分支名指向当前分支的最近一条提交记录. 2.相对引用^. ...
- JVM GC监控
一.jps常看java进程 Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便. [root@tsp ...
- ubuntu上的安装.netcore2.1
.net core 在ubuntu上安装比较容易,依次执行正面语句即可 sudo apt-get install curl curl https://packages.microsoft.com/ke ...
- Linux:RPM安装工具的使用
RPM安装工具的使用 RPM包管理工具介绍 RedHat 软件包管理工具(RedHat Package Manager,RPM) RPM 软件包工具常用于软件包的安装.查询.更新升级.校验.卸载以及生 ...
- C++ 堆&栈等的说明
Stack 堆 存在于某作用域内的一块空间.说白了就是函数产生的空间,用于存放函数的变量.返回地址. 在函数体中声明的局部变量,就时存储在Stack中. Heap 栈 由操作系统提供的全局空间.在程序 ...
- Leetcode103_Binary-tree-zigzag-level-order-traversal
原题: https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/ 思路,如果无从下手,先要了解二叉树的广度优 ...
- shell通配符, 变量, shell作用域
1. 指定格式输出当前时间: echo `date +%Y%m%d` # 注意使用反引号, +号后面不要有空格 反引号中的东西会被当做命令来执行, 并输出执行的结果 2. $uid用于判断当前是否是 ...
- win10系统使用Telnet命令时提示“telnet不是内部或外部命令”
in10系统使用Telnet命令时提示“telnet不是内部或外部命令”问题的处理方案 win10系统使用的过程中很多用户会遇到使用Telnet命令时提示“telnet不是内部或外部命令”的问题,这样 ...
- centos安装mongodb 4.x及配置用户名密码(官方推荐的方式)
安装mongodb 先在本地用记事本做一个这样的文件(命名为:mongodb-org-4.0.repo): [mongodb-org-4.0] name=MongoDB Repository base ...