开源

开源利弊浅谈 - 张超耀

开源?

  • 开源,(Open Source)全称为开放源代码。开源就是要用户利用源代码在其基础上修改和学习的。

优势何在?

  • 优势1:花费很少(如果有的话),许可费用
    • 当然,这往往省去那些讨厌的维护费用。
  • 优势2:易于管理
    • 只要你想,你可以在尽可能多的地方安装开源软件。无需为许可证合规性计数、跟踪或监视。
  • 优势3 :连续,实时改进
    • 因为每个人都可以访问源码,任何人都可以主动修改BUG,使其变得更好,而不必等待下一个版本。
  • 优势4:公司独立
    • 如果创建该软件的公司挂掉,代码仍然可以通过其用户社区继续存在和发展。
  • 优势5 :实践的探索
    • 我们可以很容易地“亲身探索”源码,以便更好地了解产品并作出改善。

劣势显著

  • 缺点1 :它不是完全免费
    • 开源软件可以涉及意料之外的实施、管理和支持成本。
  • 缺点2:学习曲线(技术支持)
    • 你可能在开源的产品上需要聘请专家,让自己加快速度。
  • 缺点3:迷茫的用户
    • 由于并行发展的努力在进行中,用户可能不知道哪个版本做什么或是否与你专有平台上的其他软件兼容。
  • 缺点4:孤立软件
    • 由于关键的程序员的斗争和退出,或他们失去兴趣转移到新的项目,使一些开源项目陷于停顿和死亡。
  • 缺点5:独立地(凭自己的力量)
    • 与商业产品不同,没有人在开源社区义务来帮助你,或回答你的任何问题。

开源,仁者见仁智者见智

与开源有关的小故事 - 曾铭

  • 比尔·盖茨
    • 软件私有,保护版权
    • 1976 年 《致计算机爱好者的公开信》
  • 理查德.斯托曼
    • Free Soft
    • GNU,GPL,Emacs,GCC
    • 推荐两本书:《大教堂与集市》《Just for Fun》
    • HHKB ;)
  • 思考
    • 开源软件和私有软件哪个质量更高?
    • 怎样参与开源?:
      • Github
      • 开源就是一种开放交流的态度
      • 不怕暴露自己的傻 X,(每个人都认为自己是对的,)万一对了呢 ;)
  • 最后再推荐一部纪录片:互联网之子

我如何接触开源 - 潘君

  • github trending

    • 代码 trending
      • 寻找有潜力的开源项目
    • 开发者 trending
      • 好的开发者应该不止一个好软件 顺藤摸瓜比较方便
  • 苹果官方开源

  • 开源软件闲暇阅读工具

    • CodeNav - 移动端优秀的代码查看软件
      • 优点
        • 支持多种方式导入源码
        • 交互不错 各种操作都算是方便
      • 缺点
        • 大屏支持还有bug
        • 不支持swift语法高亮

参与开源软件的心得 - 王胜

  • 参与方式:
    • 泡开源官方网站论坛,并参与issue讨论
    • 修改源码,生成patch文件,发给社区维护者
    • 有了Git && Github后,可以fork分支,修改代码,发送pull request
  • 参与过程情绪波动:
    查看源码 -> 领悟学习 -> 发现问题 -> 动手解决 -> 跟社区提交者沟通纳入源码树 or 通过github发送pull request
    -> 上游采用 -> 成就感十足。从而形成良性持续性参与感,并参与其中。
  • 收获心得:
    • 一次提交只做一件事
    • 提交说明规范、简单、见名知意。后续参与者看提交树就能看到软件的演化历史
    • 代码开源,足够多的眼睛,使bug无处可藏
    • 开源导致世界范围内可见,代码的创意来自于全球智慧的汇聚

OkHttp开源框架介绍 - 李仙鹏

SPDY

Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。

新协议的功能:

  • 数据流的多路复用
  • 请求优先级
  • HTTP报头压缩。
  • 服务器推送(即Server Push技术)

谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。

现在已经被Google弃用,推出新的基于SPDY实现的HTTP2.0。

HTTP2.0

HTTP也是基于TCP的应用层协议,大家熟知的为:

  • HTTP 0.9,只有基本的文本 GET 功能。
  • HTTP 1.0,完善的请求/响应模型,并将协议补充完整。
  • HTTP 1.1,在 1.0 基础上进行更新,增加了如 长久连接 keep-alive 与 chunked 等功能。

HTTP 2.0在2013年8月推出,基于Google的SPDY开发。

OkHTTP

OKHTTPis an HTTP client that’s efficient by default:

  • HTTP/2 and SPDY support allows all requests to the same host to share a socket.
  • Connection pooling reduces request latency (if SPDY isn’t available).
  • Transparent GZIP shrinks download sizes.
  • Response caching avoids the network completely for repeat requests.

OkHttp supports Android 2.3 and above. For Java, the minimum requirement is 1.7.
You’ll also need Okio, which OkHttp uses for fast I/O and resizable buffers.

如何推广自己的开源项目(github获取更多的star) - 杨志平

前言

你可能花费几天甚至几个月时间开源一个你写的代码,但是没有人去使用它,靠运气的话可能可以推广. 现在我讲讲如何让人们关注我们的作品。该要点是打破下面的图片的循环

图片一

六步(4-6是秘诀)

  1. Projects are Everything
  • Read and Research
  • Building the Repo
  • README 文件
  • 图解
  • 更新反馈

1.Projects are Everything

开源代码就是给其他程序员解决问题或者节约时间的

2.Read and Research

很多问题都已经解决成千上万次了
你可以想一个你感兴趣的开源项目,上网搜索确认它的实现是不是已经有很多人实现了并有很多人已经使用它了,那就忘了这个想法。但是如果没有,或者解决方案不理想(可以通过issues查看他们的不足)你有时间的话就建一个和他们相识的开源项目,修复一些issues使用自己的文档(感觉有点无耻,但听说很有效)

3.Building the Repo

有一点就是,通常我们后面的repo的star增加速度比以前的repo要快挺多的,可能是以前的repo使得更多人认识你相信你。

4.README 文件(推荐布局方案)

图片2

5.图解(特效,一目了然)

Flipboard playing multiple GIFs

6.更新反馈

完成以上步骤,并不断更新开源库及时解决issues里面的bug就很有希望进入
star趋势
图片2
贡献名人
图片2

开源协议 - 吴明

  • 无规矩不成方圆,开源协议

    • BSD开源协议:满足三个条件
      • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议
      • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议
      • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广
        • Apache Licence 2.0:(关心软件的专利问题,但同样希望宽松,选择这个协议)
        • 需要给代码的用户一份Apache Licence
        • 如果你修改了代码,需要再被修改的文件中说明。
        • 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明
        • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改
    • GPL:(Linux)(希望代码使用者同样能把他们的贡献分享出来,那就选择GPL)

      • GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样
      • 代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售
      • 由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
    • MIT:(简单、宽松,”为所欲为”,选择这个协议)

      • 类似BSD协议
    • Mozilla

    • LGPL

      • LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
    • 说了这么多最后一个开源协议的选择

    • 其他