Amador em código aberto - lições aprendidas em 3 anos

Há muito tempo, em 2014, criei um pequeno utilitário para fazer overclock de visualizações C # no código TypeScript. Ela me salvou muito tempo e nervos. Então, em setembro de 2015, decidi colocar meus "experimentos no joelho" em algum tipo de forma digerível e despejá-los no GitHub. Assim começou minha participação amadora no desenvolvimento de software de código aberto. O tempo passou. E assim, ontem no repositório com este projeto, finalmente, um aniversário, trezentos centésimos commit apareceu. Em conexão com este evento significativo, eu gostaria de compartilhar minha experiência amadora sobre o que você deve enfrentar se, de repente, pensar em desenvolver algo "para o benefício do desenvolvimento da indústria". Vou descrever algumas figuras, contar histórias interessantes e também compartilhar minhas impressões sobre como é escrever e apoiar um projeto de código aberto sem mães, pais e empréstimos suporte da empresa, pagamento e ... e tempo livre. Venha sob o gato, sente-se, começamos.


"Faça o que é bom"


Para começar, existem mais de 90 milhões de repositórios no GitHub. Alguns deles são conhecidos, outros não são muito, outros geralmente são privados. Em vista da popularidade em massa, o Github começou a ser usado pelos alunos para tarefas, professores para palestras, autores de livros para tutoriais e até entusiastas da legislação . Imagine como é um abismo de código e projetos! No entanto, coloquei uma garrafa de conhaque que, se um jornalista se apegar a você agora e pedir para você nomear repositórios famosos, então você chamará de imediato ... bem, algo entre 15 e 30 anos. O que isso significa? Isso significa que o GitHub é um enorme universo de produtos de software, a maioria dos quais, tenho certeza, é conhecida apenas por seus autores. E talvez 5 a 10 para seus amigos.


Tornar-se mais ou menos perceptível nessa multidão é bastante difícil, eu lhe digo.

Mesmo se você roubar os dados dos cartões bancários de todos os usuários do mundo e publicá-los no GitHub, tenho certeza de que você será banido e processado ninguém vai notar isso . Por que estou dizendo coisas tão óbvias, você pergunta? E aqui ... caramba, eles não são óbvios! Especialmente para o autor dessas linhas :) Especialmente há 3 anos. Então, ingenuamente, pensei que basta fazer algo realmente útil, indicar as tags, escrever README e as pessoas encontrarão tudo elas mesmas, farão o download de tudo. Bem, sério, já que algum tipo de teclado esquerdo , consistindo essencialmente de 47 linhas de código, marcou mil estrelas, então meu dispositivo é algo que simplifica objetivamente o desenvolvimento - bem, 300 serão digitados, certo?


Mmm ... não. Infelizmente, isso não funciona. O teclado esquerdo foi criado em 2014 e era definitivamente desconhecido para ninguém até os famosos eventos de 2016 . Se você olhar para o gráfico da distribuição de estrelas, podemos ver o aumento de quase 90 graus exatamente naquele momento muito infeliz. Obviamente, existem várias conclusões tristes dessa história maravilhosa:


Sem o marketing adequado, sua melhor ideia no mundo passará despercebida.
O PR preto também é PR.
Nem sempre um número louco de estrelas sugere que o projeto é bom.

Mas nem tudo é tão ruim. Se você já está preparado para ficar deprimido com isso, meu conselho é deixar de lado seus lenços e um travesseiro soluço.


Melhor fazer algo útil. Primeiro de tudo - útil para você.

Faça uma estimativa sem qual produto de software sua vida não é uma alegria. Aqui você está lendo pessoalmente este post. Que aplicativo, estrutura, serviço inferno você está perdendo No seu trabalho ou na sua vida diária. Você já descobriu? Ótimo. Martele no google e, se o emitir a seu pedido, sopra com melancolia e arrastada - vá em frente! Inicie um repositório, abra um IDE e escreva. Escreva o que você sonhou, colecione e coloque. A resposta é simples - se o seu projeto o beneficiar especificamente, em todo o mundo, provavelmente, haverá mil ou duas pessoas que também ajudarão e que serão gratas a você. Estou certo de que, pela primeira vez, você terá mais do que suficiente dessa audiência. Então, cabe à pequena coisa - transmitir suas realizações a todas essas pessoas maravilhosas e não espirrar ao longo da estrada.


PR sem calças


Ouvi dizer que algumas empresas têm essa prática. Se, na entrevista, o candidato mencionar seu projeto de código-fonte aberto, no próximo parágrafo eles começarão a crucificá-lo no tópico “quantas estrelas?”, “Quantos downloads?”, “Quantos projetos ao vivo são usados?”. Por isso, declaro-lhe responsável: você deve enviar esses questionadores com um movimento rápido e decisivo da sua língua, levantar-se e sair da entrevista, esquecendo para sempre o nome desta empresa e contando a seus amigos. Se o gerente (ou quem o entrevistar lá) fizer essa pergunta, com uma probabilidade quase absoluta, ele nunca teve problemas com o desenvolvimento de software livre, nunca ouviu falar de marketing e, como um todo, atribui pouca importância aos sons que produz. . Trabalhar com isso não funcionará.


É triste, mas aparentemente um fato: de acordo com minhas observações, por trás de projetos populares e de larga escala, as empresas de alguma forma se mantêm.

Por exemplo, na forma de financiamento direto ao desenvolvimento: se o projeto for realizado durante o horário de trabalho, será pago de fato. Sim, sim, mesmo se você tiver uma "sexta-feira para seus projetos" - o que você acha que não está no orçamento? Ou na forma de suporte de informações (artigos, conferências, vídeos). Bem, ou na forma de apoio da "equipe", à la "Vasya, ajude Oleg a fazer parte do seu projeto". E isso sem mencionar os casos muito francos de financiamento do desenvolvimento de código aberto, como EntityFramework ou .NET Core, quando existem departamentos inteiros envolvidos em tais projetos. Ou de uma só vez (aqui os teóricos da conspiração podem fazer a pergunta "quem se beneficia com isso", mas chegaremos a isso).


A empresa me forneceu recursos, exceto testes gratuitos de meus desenvolvimentos em pessoas vivas. E não, não estou reclamando - eu mesmo insisti nisso, para que todos os direitos e controle sobre o desenvolvimento permanecessem comigo. E para a empresa com a qual o relacionamento com contratados me conecta há 4 anos, a TI não é tanto um negócio central. É inconveniente distrair as pessoas de alguma forma. Em geral, o resultado final é o seguinte: a empresa trata com compreensão, apoia moralmente e fornece seu sistema para verificar e executar o projeto em usuários ativos. Em troca, recebe um direito prioritário de suporte e correções de erros, além de consultas, implementação e treinamento da equipe. Bozhechki, digo as palavras de um grande integrador, embora no meu projeto haja apenas cerca de 5 mil linhas (sem testes).


Digressão lírica sobre a ajuda das empresas

Oh, houve um caso tão interessante. Comprei o estúdio de 2015, 2017 Community Edition, mas além disso, uso o ReSharper do JetBrains. E eu também comprei. Entre outras coisas, também tenho uma conta no Azure, onde, por um valor nominal, existe um site simples com informações sobre mim, links para projetos e documentação. Então aí está. O JetBrains possui um programa de licença gratuito para desenvolvedores de código aberto. Bem, eu estou pensando - dê, eu vou consertar. Um centavo bonito, mas vou economizar. Vou ter um presente ReSharper. Porque não Escrevi, então, uma carta para o endereço necessário. Assim, assim e assim. Estou fazendo um projeto como esse, como uma fonte aberta. Eles dão uma licença. A resposta vem esta:


Verificamos seu projeto de código aberto para ver se ele atende a todos os requisitos do programa de licença de código aberto do JetBrains.
Temos que informar que, de acordo com as regras do nosso programa, se o projeto fornecer serviços pagos (treinamento, consultoria etc.), não podemos emitir licenças gratuitas em termos gerais.
Como posso ver no site do seu projeto, ele fornece alguns serviços comerciais ( http://www.reinforced-sc.com/Info/Contact ), portanto, infelizmente, não poderei fornecer licenças de código aberto gratuitas para o seu projeto.

Em suma, omitindo os detalhes. Essencialmente, eles não gostaram disso no meu site (visitado por 3.5 anonymus); escrevi que estava pronto para fornecer conselhos comerciais e suporte comercial individual para qualquer um dos meus projetos (de dois, hehe). Nem o custo dos serviços, nem quaisquer condições específicas - simplesmente, eles dizem, "se você precisar de repente - você escreve, nós concordaremos". Como você sabe, é claro, nenhuma proposta foi recebida. O que eu sou um funcionário da JetBrains e tentei explicar em uma breve correspondência. Por fim, recebi esta resposta:


Se o seu projeto não fornecer serviços comerciais, remova a seção comercial do site e deixe-me saber quando você o fizer - eu emitirei uma licença de código aberto para você.

"Bem, não importa", pensei, "significa que tenho de remover informações sobre a abertura de ofertas comerciais do site em troca de US $ 200 (o custo de uma licença para o ReSharper) por ano? não é necessário. " E ele não continuou o diálogo.


Obviamente, existem muitas perguntas: primeiro, quanta mana celestial é recomendada para uso durante o desenvolvimento, para não engordar? se meu projeto é usado na empresa em que trabalho, mas o desenvolvo no meu tempo livre - isso é considerado a prestação de serviços comerciais? Em segundo lugar: se meu projeto não é usado nos negócios - é inútil? O JetBrains está pronto para financiar projetos sem valor? e se eu indicar meu projeto de código-fonte aberto no currículo e isso aumentar minhas chances de ser contratado - isso também é um uso comercial? Então, também não pode ser indicado no currículo? Mas também acontece que as empresas apóiam o colaborador com informações - isso também é dinheiro apenas de uma forma diferente? Precisa esclarecer! Eu não entendo nada.


Em geral, como você sabe, eu enfrentei a tarefa de promoção e relações públicas sozinho. A primeira ideia que me veio à mente foi escrever como usar tudo. Aqui eu decidi trapacear e combinar útil com útil - escrevi o primeiro artigo sobre RT em uma revista nerd (para a qual UFO foi convidado). A idéia não era tanto no PR "eu fiz", mas em como colocar pelo menos alguma documentação em russo no hub. Meus colegas são todos iguais da Rússia, então precisavam de pelo menos um pequeno manual, mas não queriam explicar o mesmo para todos por correspondência ou por voz. Assim, nasceram os três primeiros artigos, que foram recebidos friamente pela platéia. Isso é compreensível - é improvável que eles tenham sido úteis para alguém da comunidade habr, então não me preocupo com isso.


Sobre a documentação


A ideia de que seria bom dar às pessoas qualquer conhecimento sobre como usar minha estrutura não me deu descanso até que eu finalmente a formulasse desta forma:


Aqui está a documentação: é inútil sem um código de projeto e o código do projeto é inútil sem ele.

Ideia maravilhosa, mas eu sabia muito pouco sobre escrever documentação. Além de mechikov e piadas sobre código não documentado, o pensamento anterior era que era necessário usar verbos para descrever métodos, e os construtores não precisam ser documentados. Sobre isso, meu conhecimento, talvez, estava esgotado. Criei a primeira versão do README , preenchi a descrição do projeto e comecei a pensar.


Como uma abordagem amadora escreve documentação? Obviamente, através do doxygen, o que mais um programador pode pensar? Mal disse o que fez. Meu objetivo era amordaçar o XMLDOC (é como javadoc, apenas em C #) para que o assembly no Release não divulgue "a falta de comentários para membros publicamente visíveis".


- 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/pt435878/


All Articles