Amateur en open source - leçons apprises en 3 ans

Il y a longtemps, en 2014, je me suis fait un petit utilitaire pour overclocker les vues C # en code TypeScript. Elle m'a fait gagner beaucoup de temps et de nerfs. Et donc, en septembre 2015, j'ai dĂ©cidĂ© de mettre mes "expĂ©riences sur le genou" sous une forme digestible et de les verser sur GitHub. C'est ainsi qu'a commencĂ© ma participation amateur au dĂ©veloppement de logiciels open source. Le temps a passĂ©. Et donc, hier dans le rĂ©fĂ©rentiel avec ce projet, enfin, un anniversaire, le trois centiĂšme commit est apparu. Dans le cadre de cet Ă©vĂ©nement important, je voudrais partager mon expĂ©rience amateur sur ce que vous devez affronter si vous pensez soudainement Ă  dĂ©velopper quelque chose «au profit du dĂ©veloppement de l'industrie». Je vais dĂ©crire quelques chiffres, raconter des histoires intĂ©ressantes et partager mes impressions sur ce que c'est que d'Ă©crire et de soutenir un projet open source sans mamans, papas et prĂȘts soutien aux entreprises, paiement et ... et temps libre. Venez sous le chat, asseyez-vous, nous commençons.


"Faites ce qui est bon"


Pour commencer, il y a plus de 90 millions de rĂ©fĂ©rentiels sur GitHub. Certains d'entre eux sont connus, certains ne sont pas trĂšs, certains sont gĂ©nĂ©ralement privĂ©s. Compte tenu de la popularitĂ© de masse, Github a commencĂ© Ă  ĂȘtre utilisĂ© par les Ă©tudiants pour les devoirs, les enseignants pour les confĂ©rences, les auteurs de livres pour les tutoriels et mĂȘme les amateurs de lĂ©gislation . Imaginez ce qu'est un putain d'abĂźme de code et de projets! Cependant, j'ai mis une bouteille de cognac que si un journaliste s'attache Ă  vous en ce moment et vous demande de nommer des rĂ©fĂ©rentiels cĂ©lĂšbres, alors vous appellerez tout de suite ... eh bien, quelque part vers 15-30. Qu'est-ce que cela signifie? Cela signifie que GitHub est un vaste univers de produits logiciels, dont la plupart, j'en suis sĂ»r, ne sont connus que de leurs auteurs. Et peut-ĂȘtre 5-10 Ă  leurs amis.


Devenir plus ou moins perceptible dans cette foule est assez difficile, je vous le dis.

MĂȘme si vous volez les donnĂ©es des cartes bancaires de tous les utilisateurs du monde et les postez sur GitHub, je suis sĂ»r que vous serez banni et poursuivi personne ne le remarquera . Pourquoi dis-je des choses aussi Ă©videntes, demandez-vous? Et lĂ  ... bon sang ils ne sont pas Ă©vidents! Surtout pour l'auteur de ces lignes :) Surtout il y a 3 ans. Ensuite, j'ai naĂŻvement pensĂ© qu'il suffisait de faire quelque chose de vraiment utile, d'indiquer des balises, d'Ă©crire README et les gens trouveront tout eux-mĂȘmes, tĂ©lĂ©chargeront tout eux-mĂȘmes. Eh bien, sĂ©rieusement, car une sorte de pavĂ© gauche , consistant essentiellement en 47 lignes de code a marquĂ© mille Ă©toiles, alors mon gadget est quelque chose qui simplifie objectivement le dĂ©veloppement - eh bien, 300 seront tapĂ©s, non?


Mmm ... non. Malheureusement, cela ne fonctionne pas. Le pad gauche a été créé en 2014 et n'était décidément inconnu de personne avant les fameux événements de 2016 . Si vous regardez le graphique de la distribution des étoiles, nous pouvons voir l'augmentation à prÚs de 90 degrés juste à ce moment trÚs malheureux. Il y a évidemment plusieurs tristes conclusions de cette merveilleuse histoire:


Sans marketing approprié, votre meilleure idée au monde passera inaperçue.
Le PR noir est aussi le PR.
Pas toujours un nombre fou de stars suggĂšre que le projet est bon.

Mais tout n'est pas si mal. Si vous ĂȘtes dĂ©jĂ  prĂȘt Ă  devenir dĂ©primĂ© Ă  ce sujet, alors mon conseil est de mettre de cĂŽtĂ© vos mouchoirs et votre oreiller en sanglotant.


Mieux vaut faire quelque chose d'utile. Tout d'abord - utile pour vous-mĂȘme.

Estimez sans quel produit logiciel votre vie n'est pas une joie. Ici, vous lisez personnellement cet article. Quelle application, cadre, service l'enfer vous manquez Au travail ou dans votre vie quotidienne. L'avez-vous compris? Super. Marteau dans google et si de l'Ă©mission Ă  votre demande ça souffle avec mĂ©lancolie et flou - allez-y! DĂ©marrez un rĂ©fĂ©rentiel, ouvrez un IDE et Ă©crivez. Écrivez ce dont vous avez rĂȘvĂ©, rassemblez et disposez. La rĂ©ponse est simple - si spĂ©cifiquement votre projet vous profite, alors dans le monde entier, trĂšs probablement, il y aura mille ou deux personnes qui vous aideront Ă©galement et qui vous seront reconnaissantes. Je suis sĂ»r que pour la premiĂšre fois, vous aurez plus qu'assez d'un tel public. Ensuite, c'est Ă  la petite chose - de transmettre leurs rĂ©alisations Ă  tous ces gens merveilleux et de ne pas barboter le long de la route.


PR sans pantalon


J'ai entendu dire que certaines entreprises ont cette pratique. Si lors de l'entrevue, le candidat mentionne son projet open source, alors le paragraphe suivant, ils commencent à le crucifier sur le sujet "combien d'étoiles?", "Combien de téléchargements?", "Combien de projets live sont utilisés?". Alors, je vous déclare de façon responsable: vous devez envoyer ces interrogateurs avec un mouvement linguistique rapide et décisif, vous lever et quitter l'entretien, en oubliant à jamais le nom de cette entreprise et en le racontant à vos amis. Si le manager (ou celui qui vous y interviewe) pose une telle question, alors avec une probabilité presque absolue, il n'a jamais eu de problÚme avec le développement de logiciels libres, il n'a jamais entendu parler de marketing, et dans l'ensemble accorde peu d'importance aux sons qu'il émet . Travailler avec cela ne fonctionnera pas.


C'est triste, mais apparemment un fait: selon mes observations, derriÚre des projets populaires et à grande échelle, les entreprises se tiennent en quelque sorte.

Par exemple, sous forme de financement direct du dĂ©veloppement: si le projet est rĂ©alisĂ© pendant les heures de travail, il est de facto payĂ©. Oui, oui, mĂȘme si vous avez un «vendredi pour vos projets» - quoi, pensez-vous que ce n'est pas dans le budget? Ou sous forme de support d'information (articles, confĂ©rences, vidĂ©os). Eh bien, ou sous forme de soutien par le «personnel», Ă  la «Vasya, allez aider Oleg Ă  faire un reportage dans son projet». Et cela sans parler des cas trĂšs francs de financement du dĂ©veloppement open source tels que EntityFramework ou .NET Core, lorsque des dĂ©partements entiers sont impliquĂ©s dans de tels projets. Ou tout d'un coup (ici, les thĂ©oriciens du complot peuvent se poser la question «à qui profite-t-il», mais nous y arriverons).


L'entreprise m'a fourni des ressources, Ă  l'exception des tests gratuits de mes dĂ©veloppements sur des personnes vivantes. Et non, je ne me plains pas - j'ai moi-mĂȘme insistĂ© lĂ -dessus, pour que tous les droits et le contrĂŽle sur le dĂ©veloppement me restent. Et pour l'entreprise avec laquelle la relation entrepreneur me relie depuis 4 ans, l'informatique n'est pas tellement un cƓur de mĂ©tier. Il n'est pas pratique de distraire les gens d'une maniĂšre ou d'une autre. En gĂ©nĂ©ral, le rĂ©sultat final Ă©tait le suivant: la sociĂ©tĂ© est sympathique, soutient moralement et fournit son systĂšme pour vĂ©rifier et exĂ©cuter le projet sur les utilisateurs en direct. En Ă©change, il bĂ©nĂ©ficie d'un droit prioritaire de support et de correction de bugs, ainsi que de consultations, d'implĂ©mentation et de formation du personnel. Bozhechki, je dis les mots d'un intĂ©grateur majeur, mĂȘme si dans mon projet il n'y a qu'environ 5 000 lignes (sans tests).


Digression lyrique sur l'aide des entreprises

Oh, il y avait un cas tellement intĂ©ressant. J'ai achetĂ© le studio 2015, 2017 Community Edition, mais en plus j'utilise ReSharper de JetBrains. Et je l'ai aussi achetĂ©. Entre autres choses, j'ai Ă©galement un compte sur Azure, oĂč pour un montant nominal il y a un site Web simple avec des informations sur moi, des liens vers des projets et de la documentation. VoilĂ . JetBrains a un programme de licence gratuit pour les dĂ©veloppeurs open source. Eh bien, je pense - donnez-le, je vais le rĂ©parer. Un joli sou, mais je vais Ă©conomiser. J'aurai un cadeau ReSharper. Pourquoi pas? J'ai alors Ă©crit une lettre Ă  l'adresse requise. Comme ça. Je fais tel ou tel projet, un peu comme un open source. Donne, disent-ils, une licence. La rĂ©ponse est la suivante:


Nous avons vérifié votre projet Open Source pour voir s'il répond à toutes les exigences du programme de licence Open Source de JetBrains.
Nous devons vous informer que selon les rÚgles de notre programme, si le projet fournit des services payants (formation, conseil, etc.), nous ne pouvons pas émettre de licences gratuites à des conditions générales.
Comme je peux le voir sur le site Web de votre projet, il fournit certains services commerciaux ( http://www.reinforced-sc.com/Info/Contact ), donc, malheureusement, je ne serai pas en mesure de fournir des licences open source gratuites pour votre projet.

Bref, en omettant les dĂ©tails. Essentiellement, ils n'aimaient pas ça sur mon site (qui est visitĂ© par 3.5 anonymus), j'ai Ă©crit que j'Ă©tais prĂȘt Ă  fournir des conseils commerciaux et un soutien commercial individuel pour l'un de mes projets (sur deux, hehe). Ni le coĂ»t des services, ni aucune condition spĂ©cifique - simplement, disent-ils, "si vous en avez soudainement besoin - vous Ă©crivez, nous serons d'accord". Comme vous le savez, bien sĂ»r, aucune proposition n'a Ă©tĂ© reçue. Ce que je suis un employĂ© de JetBrains et j'ai essayĂ© d'expliquer dans une courte correspondance. En fin de compte, j'ai obtenu cette rĂ©ponse:


Si votre projet ne fournit pas de services commerciaux, veuillez supprimer la section commerciale du site Web et faites-le moi savoir une fois que vous le faites - je vous délivrerai alors une licence open source.

"Eh bien, tant pis", pensais-je, "cela signifie que je dois supprimer les informations sur l' ouverture aux offres commerciales du site en échange de 200 $ (le coût d'une licence pour ReSharper) par an?! pas nécessaire. " Et il n'a pas poursuivi le dialogue.


Il y a, bien sĂ»r, de nombreuses questions: premiĂšrement, combien de mana cĂ©leste est recommandĂ© d'utiliser pendant le dĂ©veloppement, afin de ne pas grossir? si mon projet est utilisĂ© dans l'entreprise dans laquelle je travaille, mais que je le dĂ©veloppe pendant mon temps libre - est-ce considĂ©rĂ© comme une prestation de services commerciaux? DeuxiĂšmement: si mon projet n'est pas utilisĂ© en entreprise - est-il inutile? JetBrains est-il prĂȘt Ă  financer des projets sans valeur? et si j'indique mon projet open source dans le curriculum vitae et cela augmente mes chances d'ĂȘtre embauchĂ© - est-ce aussi un usage commercial? Alors ne peut-il pas non plus ĂȘtre indiquĂ© dans le CV? Mais il arrive aussi que les entreprises soutiennent le contributeur de maniĂšre informelle - est-ce aussi de l'argent sous une forme diffĂ©rente? Besoin de clarifier! Je ne comprends rien du tout.


En gĂ©nĂ©ral, comme vous le savez, j'ai Ă©tĂ© confrontĂ© Ă  la seule tĂąche de la promotion et des relations publiques. La premiĂšre idĂ©e qui m'est venue Ă  l'esprit Ă©tait d'Ă©crire comment tout utiliser. Ici, j'ai dĂ©cidĂ© de tricher et de combiner utile avec utile - j'ai Ă©crit le premier article sur RT dans un magazine geek (pour lequel UFO Ă©tait invitĂ©). L'idĂ©e n'Ă©tait pas tellement dans le PR "j'ai fait", mais dans la façon de placer au moins une documentation en russe sur le hub. Mes collĂšgues sont tous les mĂȘmes de Russie, donc ils avaient besoin d'au moins un petit manuel, mais ne voulaient pas expliquer la mĂȘme chose Ă  tout le monde par correspondance ou par la voix. Les trois premiers articles sont donc nĂ©s et ont Ă©tĂ© plutĂŽt froidement accueillis par le public. C'est comprĂ©hensible - il est peu probable qu'ils aient Ă©tĂ© utiles Ă  quelqu'un de la communautĂ© habr, donc je ne m'en inquiĂšte pas.


À propos de la documentation


L'idée qu'il serait bien de donner aux gens des connaissances sur la façon d'utiliser mon framework ne m'a pas reposé jusqu'à ce que je le formule enfin sous cette forme:


Voici le problĂšme avec la documentation: il est inutile sans code de projet, et le code de projet est inutile sans lui.

Merveilleuse idĂ©e, mais je savais catastrophiquement peu de choses sur la rĂ©daction de documentation. En plus des mechikov et des blagues sur le code non documentĂ©, la pensĂ©e en arriĂšre Ă©tait qu'il Ă©tait nĂ©cessaire d'utiliser des verbes pour dĂ©crire les mĂ©thodes, et les constructeurs n'ont pas besoin d'ĂȘtre documentĂ©s. Sur ce point, mes connaissances Ă©taient peut-ĂȘtre Ă©puisĂ©es. J'ai créé la premiĂšre version de README , rempli la description du projet et commencĂ© Ă  rĂ©flĂ©chir.


Comment un amateur aborde-t-il la rédaction de la documentation? Bien sûr, grùce à doxygen, à quoi d'autre un programmeur peut-il penser? AussitÎt dit, aussitÎt fait. Mon objectif était de bùillonner XMLDOC (c'est comme javadoc, uniquement en C #) afin que l'assembly dans Release ne révÚle pas "les commentaires manquants pour les membres publiquement visibles".


- 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. . .


image


. -, , . , - . .




. 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 — , .

— - , - . ,


image


, -. ( ), — 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.


!

Source: https://habr.com/ru/post/fr435878/


All Articles