Dahulu kala, pada tahun 2014, saya membuat sebuah utilitas kecil untuk saya sendiri untuk meng-overclock tampilan C # ke dalam kode TypeScript. Dia menyelamatkan saya banyak waktu dan saraf. Maka, pada bulan September 2015, saya memutuskan untuk meletakkan "eksperimen di atas lutut" dalam bentuk yang dapat dicerna dan menuangkannya ke GitHub. Maka mulailah partisipasi amatir saya dalam pengembangan perangkat lunak open source. Waktu berlalu. Jadi, kemarin di repositori dengan proyek ini, akhirnya, ulang tahun, komit ketiga muncul. Sehubungan dengan peristiwa penting ini, saya ingin berbagi pengalaman amatir saya tentang apa yang harus Anda hadapi jika Anda tiba-tiba berpikir untuk mengembangkan sesuatu βuntuk kepentingan pengembangan industriβ. Saya akan menguraikan beberapa tokoh, menceritakan beberapa kisah keren, dan juga membagikan kesan saya tentang bagaimana rasanya menulis dan mendukung proyek sumber terbuka tanpa ibu, ayah, dan pinjaman dukungan perusahaan, pembayaran dan ... dan waktu luang. Ayo di bawah kucing, duduk, kita mulai.
"Lakukan apa yang baik"
Untuk memulainya, ada lebih dari 90 juta repositori di GitHub. Beberapa dari mereka diketahui, beberapa tidak terlalu, beberapa umumnya pribadi. Mengingat popularitas massal, Github mulai digunakan oleh siswa untuk tugas, guru untuk kuliah, penulis buku untuk tutorial, dan bahkan penggemar untuk undang-undang . Bayangkan saja apa jurang kode dan proyek sialan ini! Namun, saya meletakkan sebotol cognac bahwa jika seorang jurnalis melekat pada Anda sekarang dan meminta Anda untuk menyebutkan repositori terkenal, maka begitu saja Anda akan menelepon ... yah, sekitar 15-30. Apa artinya ini? Ini berarti bahwa GitHub adalah jagat raya produk perangkat lunak, yang sebagian besar, saya yakin, hanya diketahui oleh penulisnya. Dan mungkin 5-10 untuk teman-teman mereka.
Menjadi lebih atau kurang terlihat di kerumunan ini cukup sulit, saya katakan.
Bahkan jika Anda mencuri data kartu bank dari semua pengguna dunia dan mempostingnya di GitHub, maka saya yakin bahwa Anda akan dilarang dan dituntut tidak ada yang akan memperhatikannya . Mengapa saya mengatakan hal-hal yang begitu jelas, Anda bertanya? Dan di sini ... sial mereka tidak jelas! Khusus untuk penulis baris ini :) Terutama 3 tahun yang lalu. Lalu dengan naif saya berpikir bahwa itu cukup untuk melakukan sesuatu yang benar-benar berguna, menunjukkan tag, menulis README dan orang-orang akan menemukan semuanya sendiri, mengunduh semuanya sendiri. Nah, serius, karena semacam pad-kiri , yang pada dasarnya terdiri dari 47 baris kode mencetak seribu bintang, maka alat saya adalah sesuatu yang secara obyektif menyederhanakan pengembangan - well, 300 akan diketikkan, bukan?
Mmm ... tidak. Sayangnya, ini tidak berhasil. Pad kiri dibuat pada 2014 dan jelas tidak diketahui siapa pun hingga peristiwa terkenal 2016 . Jika Anda melihat grafik dari distribusi bintang-bintang, maka kita dapat melihat kenaikan hampir 90 derajat hanya pada waktu yang sangat disayangkan. Jelas ada beberapa kesimpulan sedih dari kisah yang luar biasa ini:
Tanpa pemasaran yang tepat, ide terbaik Anda di dunia akan luput dari perhatian.
PR hitam juga PR.
Tidak selalu jumlah bintang yang gila menunjukkan bahwa proyek ini bagus.
Tapi tidak semuanya buruk. Jika Anda sudah siap untuk mengalami depresi mengenai hal ini, maka saran saya adalah mengesampingkan sapu tangan dan bantal terisak-isak.
Lebih baik lakukan sesuatu yang bermanfaat. Pertama-tama - berguna untuk diri sendiri.
Perkirakan tanpa produk perangkat lunak mana hidup Anda tidak menyenangkan. Di sini Anda secara pribadi membaca posting ini. Apa aplikasi, kerangka kerja, layanan neraka apakah kamu hilang Di tempat kerja atau dalam kehidupan sehari-hari Anda. Sudahkah Anda menemukan jawabannya? Bagus Hammer di google dan jika dari mengeluarkan atas permintaan Anda itu meledak dengan melankolis dan cadel - silakan! Mulai repositori, buka IDE dan tulis. Tulis apa yang Anda impikan, kumpulkan, dan lay out. Jawabannya sederhana - jika proyek Anda secara khusus menguntungkan Anda, maka di seluruh dunia, kemungkinan besar, akan ada seribu atau dua orang yang juga akan membantu dan yang akan berterima kasih kepada Anda. Saya yakin bahwa untuk pertama kalinya Anda akan memiliki lebih dari cukup banyak pemirsa seperti itu. Maka terserah pada hal kecil - untuk menyampaikan prestasi mereka kepada semua orang yang luar biasa ini dan tidak untuk memercik di sepanjang jalan.
PR tanpa celana
Saya mendengar bahwa beberapa perusahaan memiliki praktik ini. Jika pada saat wawancara, kandidat menyebutkan proyek open source-nya, maka paragraf berikutnya mereka mulai menyalibkannya dengan topik "berapa banyak bintang?", "Berapa banyak unduhan?", "Berapa banyak proyek langsung yang digunakan?". Jadi, saya menyatakan bertanggung jawab kepada Anda: Anda harus mengirim penanya dengan gerakan cepat dan tegas, bangun dan tinggalkan wawancara, selamanya lupa nama perusahaan ini dan beri tahu teman Anda tentang hal itu. Jika manajer (atau siapa pun yang mewawancarai Anda di sana) muncul dengan pertanyaan seperti itu, maka dengan probabilitas yang mendekati absolut, ia tidak pernah memiliki masalah dengan pengembangan perangkat lunak bebas, ia belum pernah mendengar tentang pemasaran, dan secara keseluruhan sedikit memberikan arti penting pada suara yang dibuatnya. . Bekerja dengan ini tidak akan berhasil.
Menyedihkan, tetapi tampaknya fakta: menurut pengamatan saya, di balik proyek-proyek populer dan skala besar, entah bagaimana perusahaan berdiri.
Misalnya, dalam bentuk pembiayaan pengembangan langsung: jika proyek dilakukan selama jam kerja, maka itu dibayarkan secara de facto. Ya, ya, bahkan jika Anda memiliki "proyek hari Jumat untuk Anda" - apa, menurut Anda itu tidak sesuai anggaran? Atau dalam bentuk dukungan informasi (artikel, konferensi, video). Baik, atau dalam bentuk dukungan oleh "staf", ala "Vasya, pergi bantu Oleg untuk membuat fitur dalam proyeknya." Dan ini belum lagi kasus-kasus yang sangat jujur ββdalam pembiayaan pengembangan sumber terbuka seperti EntityFramework atau .NET Core, ketika ada seluruh departemen yang terlibat dalam proyek-proyek tersebut. Atau sekaligus (di sini teori konspirasi dapat mengajukan pertanyaan "siapa yang diuntungkan dari ini," tetapi kita akan sampai pada itu).
Perusahaan memberi saya sumber daya, kecuali pengujian gratis atas perkembangan saya pada orang yang masih hidup. Dan tidak, saya tidak mengeluh - saya sendiri berkeras akan hal ini, sehingga semua hak dan kendali atas pengembangan tetap ada pada saya. Dan untuk perusahaan dengan hubungan kontraktor yang telah menghubungkan saya selama 4 tahun terakhir, TI bukanlah bisnis inti. Tidak nyaman mengalihkan perhatian orang. Secara umum, intinya adalah sebagai berikut: perusahaan memperlakukan dengan pengertian, mendukung secara moral dan menyediakan sistemnya untuk memeriksa dan menjalankan proyek pada pengguna langsung. Sebagai gantinya, ia menerima hak prioritas untuk mendukung dan perbaikan bug, serta konsultasi, implementasi dan pelatihan staf. Bozhechki, saya mengucapkan kata-kata integrator utama, meskipun dalam proyek saya hanya ada sekitar 5 ribu baris (tanpa tes).
Penyimpangan liris tentang bantuan perusahaanOh, ada kasus yang menarik. Saya membeli studio 2015, Edisi Komunitas 2017, tetapi selain itu saya menggunakan ReSharper dari JetBrains. Dan saya juga membelinya. Antara lain, saya juga memiliki akun di Azure, di mana untuk uang nominal ada situs web sederhana dengan informasi tentang saya, tautan ke proyek dan dokumentasi. Jadi begitulah. JetBrains memiliki program lisensi gratis untuk pengembang open source. Yah, saya berpikir - berikan, saya akan memperbaikinya. Sedikit uang, tapi saya akan menghemat. Saya akan memiliki hadiah ReSharper. Kenapa tidak Saya menulis surat ke alamat yang diminta. Seperti, begitu dan begitu. Saya melakukan proyek ini dan itu, semacam open source. Berikan, kata mereka, lisensi. Jawabannya begini:
Kami telah memeriksa proyek Open Source Anda untuk melihat apakah itu memenuhi semua persyaratan Program Lisensi Open Source JetBrains.
Kami harus memberi tahu Anda bahwa sesuai dengan aturan program kami, jika proyek menyediakan layanan berbayar (pelatihan, konsultasi, dll.), Kami tidak dapat mengeluarkan lisensi gratis dengan ketentuan umum.
Seperti yang saya lihat di situs web proyek Anda, ia menyediakan beberapa layanan komersial ( http://www.reinforced-sc.com/Info/Contact ), oleh karena itu, sayangnya, saya tidak akan dapat memberikan lisensi open source gratis untuk Anda proyek.
Singkatnya, menghilangkan detail. Pada dasarnya, mereka tidak suka itu di situs saya (yang dikunjungi oleh 3,5 anonimus), saya menulis bahwa saya siap untuk memberikan saran komersial dan dukungan komersial individu untuk salah satu proyek saya (dua, hehe). Baik biaya layanan, maupun persyaratan khusus - cukup, kata mereka, "jika Anda tiba-tiba perlu - Anda menulis, kami akan setuju." Seperti yang Anda tahu, tentu saja, tidak ada proposal yang diterima. Apa yang saya seorang karyawan JetBrains dan mencoba menjelaskan dalam korespondensi singkat. Akhirnya saya mendapat jawaban ini:
Jika proyek Anda tidak menyediakan layanan komersial maka silakan hapus bagian komersial dari situs web dan beri tahu saya setelah Anda melakukannya - saya kemudian akan mengeluarkan lisensi open source untuk Anda.
"Yah, sudahlah," pikir saya, "itu berarti saya harus menghapus informasi tentang keterbukaan untuk penawaran komersial dari situs dengan imbalan $ 200 (biaya lisensi untuk ReSharper) per tahun?! Tidak, kawan, ini tawaran yang biasa saja. Terima kasih tidak perlu. " Dan dia tidak melanjutkan dialog.
Tentu saja ada banyak pertanyaan: pertama, berapa banyak surgawi yang direkomendasikan untuk digunakan selama pengembangan, agar tidak menjadi gemuk? jika proyek saya digunakan di perusahaan tempat saya bekerja, tetapi saya mengembangkannya di waktu senggang - apakah ini dianggap sebagai penyediaan layanan komersial? Kedua: jika proyek saya tidak digunakan dalam bisnis - apakah itu tidak berguna? Apakah JetBrains siap untuk mendanai proyek yang tidak berharga? dan jika saya menunjukkan proyek opensource saya di resume dan ini meningkatkan peluang saya untuk dipekerjakan - apakah ini juga penggunaan komersial? Jadi, bisakah itu juga tidak ditunjukkan dalam resume? Tetapi juga terjadi bahwa perusahaan mendukung kontributor secara informal - apakah ini juga uang hanya dalam bentuk yang berbeda? Perlu diklarifikasi! Saya tidak mengerti apa-apa sama sekali.
Secara umum, seperti yang Anda tahu, saya menghadapi tugas promosi dan PR sendiri. Gagasan pertama yang muncul di benak saya adalah menulis bagaimana menggunakan itu semua. Di sini saya memutuskan untuk menipu dan menggabungkan yang berguna dengan yang berguna - saya menulis artikel pertama tentang RT di majalah geek (yang diundang UFO). Idenya bukan pada PR "I do", tetapi bagaimana menempatkan setidaknya beberapa dokumentasi berbahasa Rusia di hub. Rekan-rekan saya semuanya sama dari Rusia, jadi mereka membutuhkan setidaknya manual kecil, tetapi tidak ingin menjelaskan hal yang sama kepada semua orang dalam korespondensi atau dengan suara. Jadi, tiga artikel pertama lahir, yang diterima dengan agak dingin oleh para hadirin. Ini bisa dimengerti - sepertinya tidak berguna bagi seseorang dari komunitas habr, jadi saya tidak khawatir tentang ini.
Tentang dokumentasi
Gagasan bahwa akan menyenangkan untuk memberi orang pengetahuan tentang cara menggunakan kerangka kerja saya tidak memberi saya istirahat sampai saya akhirnya merumuskannya dalam bentuk ini:
Inilah masalahnya dengan dokumentasi: tidak ada gunanya tanpa kode proyek, dan kode proyek tidak berguna tanpa itu.
Ide bagus, tapi saya tahu sedikit tentang menulis dokumentasi. Selain mechikov dan lelucon tentang kode tidak berdokumen, pemikiran belakangnya adalah bahwa perlu menggunakan kata kerja untuk menggambarkan metode, dan konstruktor tidak perlu didokumentasikan. Tentang ini, pengetahuan saya, mungkin, habis. Saya membuat README versi pertama , mengisi deskripsi proyek dan mulai berpikir.
Bagaimana pendekatan amatir menulis dokumentasi? Tentu saja, melalui doxygen, apa lagi yang bisa dipikirkan programmer? Tidak lebih cepat dikatakan daripada dilakukan. Tujuan saya adalah untuk muntah XMLDOC (seperti javadoc, hanya dalam C #) sehingga majelis di Release tidak memberikan "tentang komentar yang hilang untuk anggota yang dapat dilihat secara publik".
- 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.
!