从立创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了,在我看来开发环境的部署范围比較广泛,以下我来说说 ...
随机推荐
- ES6变量的解构赋值(一)数组的解构赋值
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...
- 【转载】Android App应用启动分析与优化
前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动 当启动应用时,后台没有该应用 ...
- Android Gradle 学习笔记(三):Gradle 日志
在第一节,我们使用到了gradle -q hello命令行来运行Hello World,并对Hello World进行了简单的分析,了解到 gradle -q hello 的意思是要执行的build. ...
- 优化SQL集一
-->寻找低效的SQL语句 ,下面的语句主要适用于从视图v$sqlarea中获得当前运行下且耗用buffer_gets较多的SQL语句 SELECT exec ...
- oracle 锁用户
oracle 线上用户老是被锁: 1,查明所有的用户哪些被锁了 SQL> select username,account_status,lock_date from dba_users; USE ...
- centos python3 的 卸载 删除
卸载/删除python 3.4看到网上说慎用 apt-get remove和 yum remove ,因此不敢用此类命令用卸载了(以后阿里云服务器快过期不用了的时候可以试一下,看看系统是否会崩,哈哈) ...
- go语言设计模式之Concurrency future
future.go package future type SuccessFunc func(string) type FailFunc func(error) type ExecuteStringF ...
- Python Django,事务,transaction.atomic,事务保存点
from django.shortcuts import renderfrom django.http import HttpResponsefrom django.views.generic imp ...
- 算法问题实战策略 CHILDRENDAY
地址 https://algospot.com/judge/problem/read/CHILDRENDAY 题解 ac代码 #include <iostream> #include &l ...
- React: 研究React的组件化
一.简介大概 在以往的Web开发中,会把web页面所有的复杂控件作为一个单一的整体进行开发,由于控件之间需要进行通信,因此不同的组件之间的耦合度会很多,由于开发一个控件的时候要考虑到控件与控件之间的联 ...