很久以前,在2014年,我为自己创建了一个小实用程序,可以将C#视图超频到TypeScript代码中。 她为我节省了很多时间和神经。 因此,在2015年9月,我决定将我的“实验放在膝盖上”以某种易于消化的形式放置在GitHub上。 因此,我开始业余地参与开源软件的开发。 时间过去了。 因此,昨天在这个项目的资源库中,终于有一个周年纪念日,提交了三分之二。 关于这一重大事件,如果您突然想到开发一些“为行业发展造福”的东西,我想分享我的业余经验。 我将概述一些数字,讲一些很酷的故事,并分享我对编写和支持一个开放源代码项目的印象。 妈妈,爸爸和贷款 公司支持,付款和...以及空闲时间。 来到猫下,坐下,我们开始。
“做好事”
首先,GitHub上有超过9000万个存储库 。 其中有些是众所周知的,有些不是很知名,有些通常是私人的。 鉴于大众化,Github开始被学生用来做作业,老师来授课,教程书的作者甚至是立法者 。 试想一下,这是多么令人讨厌的代码和项目! 但是,我放了一瓶干邑白兰地,如果现在有记者与您联系,并要求您命名著名的存储库,那么您马上就会打电话给……好吧,大约在15到30之间。 这是什么意思? 这意味着GitHub是一个庞大的软件产品领域,我敢肯定,其中大多数产品只有其作者才知道。 也许是5-10对他们的朋友。
我告诉你,要在这个人群中或多或少地变得引人注目是相当困难的。
即使您窃取了全世界所有用户的银行卡数据并将其发布在GitHub上,我也相信 您将被禁止和起诉 没有人会注意到它 。 你为什么问我这么明显的话? 在这里...该死的,他们并不明显! 特别是对于这些行的作者:)特别是3年前。 然后,我天真地认为,做一些真正有用的事情就足够了,指示标签,编写自述文件,人们会自己找到所有内容,自己下载所有内容。 好吧,很认真,因为某种左键盘 ,基本上由47行代码组成,得分为一千颗星,所以我的小发明可以客观地简化开发工作-好吧,可以键入300个,对吧?
嗯...不 不幸的是,这不起作用。 左键盘创建于2014年,直到2016年著名事件之前,任何人都绝对不知道。 如果看恒星分布图,那么我们可以看到在那个非常不幸的时刻上升了将近90度。 这个奇妙的故事显然有几个可悲的结论:
没有适当的营销,您在世界上最好的想法将不会被注意到。
黑人公关也是公关。
并非总是有疯狂的星星表明该项目很好。
但是,并非一切都那么糟糕。 如果您已经准备好为此感到沮丧,那么我的建议是抛开手帕和一个抽泣的枕头。
最好做一些有用的事情。 首先-对您自己有用。
估计没有哪种软件产品,您的生活就不会很快乐。 在这里,您个人正在阅读这篇文章。 什么应用,框架,服务 地狱 你想念吗 在您的工作或日常生活中。 你知道了吗? 太好了 在Google中锤子,如果在您的要求下发出,它会发出忧郁和含糊不清的声音-继续! 启动存储库,打开IDE并编写。 写出您梦about以求的东西,收集并布置。 答案很简单-如果您的项目特别使您受益,那么在整个世界中,很可能会有一千或两个人对此有所帮助,并会感激您。 我敢肯定,这样的听众将首次超过您。 然后,这取决于小事-向所有这些出色的人传达他们的成就,而不是一路走来。
PR不带裤子
听说有些公司有这种做法。 如果在面试中,候选人提到了他的开源项目,那么在下一段中,他们开始将他钉在十字架上,主题为“多少颗星?”,“多少下载量”,“使用了多少实时项目?”。 因此,我对您负责任地宣布:您必须以快速而果断的动作向这样的提问者发送信息,起身离开采访,永远忘记该公司的名称并告诉您的朋友。 如果经理(或与您进行面试的任何人)提出这样的问题,那么他的可能性几乎是绝对的,那么他就不会对自由软件的开发产生任何疑问,他也从未听说过市场营销,并且总体上讲,他对自己发出的声音不怎么重视。 使用此功能将不起作用。
令人遗憾的是,但显然是事实:根据我的观察,在受欢迎的大型项目背后,公司以某种方式屹立不倒。
例如,以直接发展筹资的形式:如果项目在工作时间内完成,则实际上已经付款。 是的,是的,即使您有“为您的项目设计的星期五”-什么,您认为这不在预算之内吗? 或以信息支持的形式(文章,会议,视频)。 好吧,或者以“工作人员”的支持形式,例如“瓦斯亚,去帮助奥列格在他的项目中发挥作用”。 而且,当整个部门都参与此类项目时,更不用说坦率地说资助诸如EntityFramework或.NET Core之类的开源开发的案例了。 或一次全部(阴谋理论家可能会问“谁从中受益”这个问题,但是我们会解决的)。
该公司为我提供了资源,除了免费测试我对生活中人的发展情况。 不,我不是在抱怨-我本人一直坚持这一点,以便对开发的所有权利和控制权都归我所有。 对于过去四年来一直与承包商保持联系的公司而言,IT并不是核心业务。 以某种方式分散人们的注意力是不方便的。 总的来说,底线是:公司具有同情心,在道义上支持并提供了用于在实时用户上检查和运行项目的系统。 作为交换,它获得了支持和错误修复以及咨询,实施和人员培训的优先权。 Bozhechki,我说的是主要集成商的话,尽管在我的项目中只有大约5000行(未经测试)。
关于公司帮助的抒情离题哦,有一个有趣的案例。 我购买了2015年工作室,2017年社区版,但除此之外,我还使用了JetBrains的ReSharper。 我也买了。 除其他事项外,我还在Azure上拥有一个帐户,在这里有一个象征性的钱,即有一个简单的网站,提供有关我的信息,项目链接和文档。 就是这样。 JetBrains为开源开发人员提供了免费的许可证计划 。 好吧,我在想-给我,我会解决的。 一分钱,但我会保存。 我将有一份礼物礼物。 为什么不呢 然后,我写了一封信到要求的地址。 喜欢,某某。 我正在做一个这样的项目,有点像开源。 他们说,颁发许可证。 答案是这样的:
我们已经检查了您的开源项目,看它是否符合JetBrains的开源许可证计划的所有要求。
我们必须通知您,根据我们的计划规则,如果该项目提供任何有偿服务(培训,咨询等),我们将不能按一般条款签发免费许可证。
正如我在您的项目的网站上看到的那样,它确实提供了一些商业服务( http://www.reinforced-sc.com/Info/Contact ),因此,遗憾的是,我将无法为您提供免费的开源许可证项目。
简而言之,省略细节。 基本上,他们不喜欢我的网站(3.5匿名用户访问过),我写道我准备为我的任何一个项目(两个)提供商业建议和个人商业支持。 无论是服务成本还是任何特定条件-他们只是说:“如果您突然需要-您写信,我们会同意。” 如您所知,当然没有收到任何建议。 我是JetBrains的一名雇员,并试图用简短的信函进行解释。 最终我得到了这个答案:
如果您的项目不提供商业服务,请从网站上删除商业部分,并在完成后通知我-我将为您颁发开放源代码许可。
“好吧,没关系,”我想,“这意味着我必须从网站上删除有关开放商业报价的信息,以换取每年200美元(ReSharper的许可证费用)的交易?!不,这是一个一般的报价。谢谢没必要。” 他没有继续对话。
当然,有很多问题:首先, 建议在发育过程中使用多少天力,以免发胖? 如果我的项目是在我工作的公司中使用的,但是我是在业余时间开发的,那么这是否被视为提供商业服务? 其次: 如果我的项目不在商业中使用-它没有用吗? JetBrains准备好为毫无价值的项目提供资金了吗? 如果我在履历表中注明我的开源项目,这增加了我被录用的机会-这是否还有商业用途? 那么履历表上也不会注明吗? 但是,也有公司提供信息支持者的情况-这是否也只是一种不同形式的钱? 需要澄清! 我什么都不懂。
如您所知,总的来说,我仅面临晋升和公关的任务。 我想到的第一个想法是编写如何使用所有内容。 在这里,我决定作弊并结合有用与有用-我在一个极客杂志(邀请UFO参加)上写了有关RT的第一篇文章。 这个想法不是在“我做到了” PR中,而是在如何在中心上放置至少一些俄语文档方面。 我的同事都是俄罗斯人,所以他们至少需要一本小手册,但不想以通信或语音的方式向所有人解释。 因此,前三篇文章诞生了,听众对此颇为冷淡。 这是可以理解的-它们不太可能对habr社区的人有用,所以我不必为此担心。
关于文档
最好向人们提供有关如何使用我的框架的知识的想法并没有让我休息,直到我最终以这种形式制定了它:
这就是文档的含义:没有项目代码就没有用,而没有项目代码就没有用。
这是一个很棒的主意,但是我对编写文档的了解却很少。 除了mechikov和有关未记录代码的笑话外,人们回想起来,有必要使用动词来描述方法,而构造函数也无需记录在案。 在此基础上,我的知识也许已经用尽。 我编写了README的第一个版本 ,填写了项目说明并开始思考。
业余爱好者如何编写文档? 当然,通过doxygen,程序员还能想到什么? 言归正传。 我的目标是对XMLDOC(类似于javadoc,仅在C#中)进行插补,以使Release中的程序集不会给出“关于缺少公开可见成员的注释”的信息。
- C# , , "", . , internal
private
C#. : 150 ( — 250), 700 260 . - . , .
20 , - , . , , ? , . . , : — . : MSDN! .
"Gets or sets whether..." — - !
, .
30 , - " ". , , , . , , internal
( package
Java). , ! . , .
, , .
, ! doxygen .
, reference-, doxygen-, 150 , enum-, . — ! XMLDOC- , "" . , .
XMLDOC-, , . Autofac, ReadTheDocs.ord. reStructuredText. , . ? . ? ? , ? ? .
chebureque, . , . , , . , . , … , , ! , , , . . , .
, — . .
: , github wiki markdown- , . , , , , GitHub. . .

. -, , . , - . .
. 9 NuGet, , . , 2016 -. ( ?) !
?
"european it conferences 2016" . C# TypeScript. web, , , , IoT. , . , ! , , , , , " ". " ", " ", " ". , ! ", -, !". .
, , DeveloperDays 2016 . — ? , . , , — , 10 . — , . , , . , . . , , , .
— — — .
— , ! ! —… . , — , . .
. NuGet , 10 . , . , , issues! : . , . , faq, , , , .
StackOverflow! , !
C#- TypeScript, . — ! README , Support policy. StackOverflow , . FAQ. RSS .
, RT StackOverflow — , . ! stargazers Barclays Microsoft. — , , , , , … ! , Insights , JIRA - .
StackOverflow , , . . issues , - . . - . , - . , , ( , — ) , .
TDD — , .
— - , - . ,

, -. ( ), — 10, 99% - .
-, , C# TypeScript . , !
RT, dnx, .NET Standard, 3 .NET Core, 20 TypeScript , .
, - .NET Core :)
, , . , ( !). , , … - ? , : , , , . ( .NET Core, ). ? , .
3 . ? ? ! . , . . zip- — GitHub ! , , , OSS- - .
opensource- ? .
?
OSS : (opensource ) ( ). Microsoft OSS — .NET Core "Microsoft loves Linux" MS-, — Azure . — ! , .
opensource. -, Percona mysql, , " ". , , mysql , . mysql .
, OSS- , , . — : OSS- , . , .
OSS, , — , , , Apache Harmony, Sun Microsystems JRE ( , -).
OSS , . - — , , " " — . . — , , " — , " .. .
OSS — , . — - . , user group, community, , . — , . - . "member of something user group, contributor".
- OSS- , , , . .
, — . , , , . , — .
, , community. — , , , , — , , .
, , , — , , linux. "" Linux. , — . . - , " ", , opensource . . , . , .
. - , - " opensource", — .
, .
opensource, " " opensource- — , .
: OSS- OSS- — . , . .
, , , , " " " opensource". , OSS, . . , , . . , . , — . ? ...
, . :
- 5000 , 225 , 1428 , 380 ;
- 43 ;
- 84 issues ;
- 10 ;
- 107 ;
- 28 ;
- 1100 ;
- ~50 000 - NuGet ( 40 );
GitHub, NuGet.
!