从 0 做开源(上) 开源创意从何而来? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
#Wrapper { background-color: #627077; background-image: url("/static/img/shadow_light.png"), url("//static.v2ex.com/bgs/pixels.png"); background-position: 0 0, 0 0; background-repeat: repeat-x, repeat; }
zhangchaojie
V2EX    职场话题

从 0 做开源(上) 开源创意从何而来?

  •  4
     
  •   zhangchaojie 2020-01-13 09:26:58 +08:00 4074 次点击
    这是一个创建于 2099 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同款视频讲解 和 个人 Github 欢迎关注~~~

    众所周知, 开源无论是对跳槽找工作还是队升职加薪, 或者日常装 x 都起着举足轻重的作用。 但事实是, 我周围很多同事, 明明有了开源的实力, 却没有一个开源项目。但是对于开源之路很多人都有如下苦恼:

    • 怎么找到一个值得做的 idea ?
    • 怎么进行开源协作?
    • 如何让自己的 star 增长起来,获得更多关注?

    我经过自己的思考和总结,得到如下内容,并通过三篇内容详细阐述,希望能帮到大家:

    第一篇:idea 从何而来?

    首先要澄清一个问题,能做开源的并不一定是最优秀的人或者最牛的人,而是那些善于思考,并努力付诸实践的人,所以不要因为技术不够牛,没有达到顶尖水平就放弃做开源,很多时候都是先有一个好的想法, 然后去学习要做成这个想法的所需技能, 在我看来, 入行一年就可以拥有做一个好的开源的能力。

    创意来源 1:从变化中寻求机会

    在现在编程界尤其是前端,有一个很大的特点就是新东西出现的太快。变化快就会产生两方面的影响,第一, 我们很自然的感受就是要不断的学习,一天不学习好像就要被世界淘汰了,很多人很抱怨学不动了,(话锋一转),但是,你有没有想过,正是有了变化,才有了机会,才能够弯道超车

    具体到开源灵感来源(灵魂叩问):

    我们在做 iOS 开发时需要日历组件,在做 Android 时需要日历组件,难道当 flutter 出来后,不需要一个好用的日历组件吗?

    我们知道 PHP 有 Web 框架 laravel,Python 有 web 框架 Django,那当 Go 出来的时候呢? 那当 Node 出来的时候呢? 或者还没火的 Deno 语言呢,他们难道不需要一个 web 框架吗?他们不需要相应的配套生态吗?

    react 生态有某个组件,是不是能够迁移到 Vue 呢?

    简而言之,当新的语言 /框架 /库出现时,如果你认为是趋势(有些赌博风险,他可能不火了),你可以借鉴其它语言 /库 /框架,集众家所长,针对此语言 /库 /框架进行开发,相信是个不错的选择。

    创意来源 2:吐槽是你开源的契机

    你有没有在日常工作中吐槽 xx 组件 /库真是垃圾,真难用,要是我写,肯定比他好一万倍。 对,就是这个时刻,如果你发现自己在日常工作中使用的插件,组件,库,工具不够好用,有优化的空间时,记得拿笔记下,然后开始行动起来,相信你一定可以写出比他好一万倍的东西,祝福你。

    简而言之,我们要吐槽,但不仅仅要吐槽, 更要思考改进空间是什么。

    创意来源 3:再一再二不再三原则

    当你在写某段逻辑时,写了一遍,很正常; 当第二遍发现类似逻辑,拷贝一波,改改几个参数名就可以了,可以接受; 但是当你又发现了一处类似逻辑,你就要考虑是不是可以抽象出一个方法 /类 /库了。 当你抽象出来,放到你的项目后,如果挺不做,你就要考虑,是不是其他项目或者别人也需要类似一段代码,如果你的回答是肯定的,恭喜你,你可以开源一波了!

    简而言之,在日常的开发过程,我们要养成 don't repeat yourself 的思维,从更高纬度抽象业务,久而久之你就能感觉自己的升华了。

    创意来源 4:从无到有、从有到优、从收费到免费

    从无到有: 讲道理,说实话,从无到有是比较难的,你很难在 JQuery 时代去想做一个 MVVM 的框架,封装 DOM 操作,使用数据控制渲染;你很难在 Node 诞生前想象 JS 还能写后端;你也很难想想人工智能时代,前端是怎么的状态,但如果你想到了一个 idea,他能做到之前技术做不到的事,又便捷又好用,恭喜你,你是新时代的创造者

    从有到优: 这个相对简单一些,也对应着创意来源 2,当你发现你有一个比现有解决方案更优(更快?更小?更强?更简单?)的解决方案时,你就大胆的干吧(dayjs 的故事)

    从收费到免费: 看看你的电脑,有什么收费又好用的软件? 再看看日常开发中,有什么公司花钱买的? 能不能在不侵犯别人的权益下做一个类似的免费的,开源的软件,例如一个开源的小说网站,一个开源的 flutter 电商网站,一个开源的教育管理系统?

    创意来源 5:新需求

    由于业务的推动,新需求就会产生新问题,就需要有新的解决方案,就像雷老板说的, 如果你是一头^(* ̄(oo) ̄)^, 但是站在技术风口编程的,相信都会被吹飞。 下面简单总结了一下前端的几个新需求:

    • 微前端: 由于前端日益变得复杂和庞大,如果对前端系统进行有效的拆分和组合,值得思考;
    • serverless: 大前端趋势明显,但 serverless 目前仍没有较好的落地实践,你是不是可以尝试一波,并分享;
    • less code: 市场竞争从由于 To C 转到 To B 导致这两年,管理系统类开源项目越来越收欢迎,但由于后台系统的标准化和统一化,所以推出了很多通过可视化拖拽实现界面的,但让没有一方独大,你可以尝试;
    • 人工智能:你不主动革命,就会有别人革你的命,如何用人工智能帮助前端实现升华,是一个思考的方向;
    • WebAssembly: 讲道理,不是很懂,但应该是趋势。

    创意来源 6:资料的整理

    这个严格来说不能算编程,但也是开源的一个好方向,即通过收集一个专题资料,实现开源项目: 例如 awesome-vue / awesome-mac / 电子书 / 挣钱 等等。

    创意来源 7:知识分享

    你是不是也关注过某位大牛 xxx 原理分析,xxx 源码逐行分析的仓库,你是不是也将开过别人将 GitHub Issue 作为写技术文章的,没做,将 GitHub 作为技术分析分享和积累的地方,也是一个不错的开源选择。

    讲了这么多思路,你是不是也在脑海中闪现了一些想法,不要犹豫,赶紧行动起来,你和开源只差一个想法!

    听说看完文章点赞收藏的人都变帅 /漂亮了(ω) (^o^*) (ΦωΦ)

    视频地址: https://www.bilibili.com/video/av83163648/

    Github: https://github.com/dream2023

    18 条回复    2020-01-15 22:10:50 +08:00
    B1ankCat
        1
    B1ankCat  
       2020-01-13 10:07:18 +08:00
    为什么都不回复
    NasirQ
        2
    NasirQ  
       2020-01-13 10:32:55 +08:00   1
    非常赞,顶一波
    zhangchaojie
        3
    zhangchaojie  
    OP
       2020-01-13 11:42:58 +08:00 via iPhone
    zhangchaojie
        4
    zhangchaojie  
    OP
       2020-01-13 11:43:10 +08:00 via iPhone
    @NasirQ 多谢
    wzzzx
        5
    wzzzx  
       2020-01-13 13:18:54 +08:00 via Android
    我得好好思考一下了,谢谢楼主
    zhangchaojie
        6
    zhangchaojie  
    OP
       2020-01-13 14:06:18 +08:00 via iPhone
    @wzzzx 嗯那
    nmecury
        7
    nmecury  
       2020-01-13 14:28:21 +08:00
    说的很好,学习了。可惜我一个做算法的没什么有影响力的工作,开源的项目拿不到啥 star……
    noahsss
        8
    noahsss  
       2020-01-13 14:40:23 +08:00
    投个币支持
    zhangchaojie
        9
    zhangchaojie  
    OP
       2020-01-13 14:59:09 +08:00 via iPhone
    @noahsss ^_^多谢多谢
    zhangchaojie
        10
    zhangchaojie  
    OP
       2020-01-13 14:59:34 +08:00 via iPhone
    @nmecury 人工智能不是能做很多吗
    UIXX
        11
    UIXX  
       2020-01-13 17:02:18 +08:00   1
    题目给我感觉很奇怪。开源创意...就好像为了开源而刻意去写一些博人眼球的东西。

    实际上,大部分开源项目(当然,除了应付简历的那些)都是先有项目,再有创作者对其开源的决定,而不是本末倒置。
    另一方面,开源只是创作者对于其作品处理方式的一种选择,而不是门槛,我想,并不存在“有开源实力却没有开源项目”这种说法。

    LZ 写的东西更像是一个项目创意的汇总,不必要挂上“开源”的名号。
    zhangchaojie
        12
    zhangchaojie  
    OP
       2020-01-13 18:51:41 +08:00 via iPhone
    @UIXX 不是为了开源而开源,是给那些有能力做开源,但是没有开源思路的人一些思路,抛砖引玉
    zhangchaojie
        13
    zhangchaojie  
    OP
       2020-01-13 18:52:56 +08:00 via iPhone
    @UIXX 可能标题起的不好,有兴趣的话,读一下帖子,不要看见标题就评价
    iamkun
        14
    iamkun  
       2020-01-15 17:34:32 +08:00
    看到提到 dayjs 路过,我一开始写 dayjs 的时候只是想解决我们项目里遇到的问题,后面开源也是顺便之举。可能这样的心态会更合适一些,而不是为了开源而写点啥。
    zhangchaojie
        15
    zhangchaojie  
    OP
       2020-01-15 17:44:13 +08:00 via iPhone
    @iamkun 大佬♂
    zhangchaojie
        16
    zhangchaojie  
    OP
       2020-01-15 18:02:34 +08:00
    @iamkun 不过, 这里也没有说刻意的为了开源而开源, 而是在日常工作中希望大家能够有将业务逻辑抽象的思想, 希望大佬见谅, 引用的您的例子
    iamkun
        17
    iamkun  
       2020-01-15 19:12:02 +08:00 via iPhone
    碰巧看见提到,就冒个泡,方法没有对错,做自己喜欢的事就好啦
    KeyboardManAnAn
        18
    KeyboardManAnAn  
       2020-01-15 22:10:50 +08:00 via iPhone
    不过近几年 star 的价值在逐渐贬值,markdown 程序员越来越多了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     861 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:30 PVG 03:30 LAX 12:30 JFK 15:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86