paint-brush
Stick ut från andra utvecklare genom att bidra till öppen källkodförbi@empiree361
Ny historia

Stick ut från andra utvecklare genom att bidra till öppen källkod

förbi Oleg Dubovoi7m2024/12/28
Read on Terminal Reader

För länge; Att läsa

Om du verkligen älskar programmering och vill växa som utvecklare, sträva efter att skapa något eget – oavsett om det är ett litet bibliotek eller en tjänst.
featured image - Stick ut från andra utvecklare genom att bidra till öppen källkod
Oleg Dubovoi HackerNoon profile picture


Hej alla! Jag vill dela med mig av min erfarenhet av att utveckla ett bibliotek med öppen källkod, prata om processen och inspirera dig att skapa dina egna projekt.

Förhistoria

På våren, när jag tittade på en av Yegor Bugaenkos strömmar - inspirerades jag av idén om utveckling med öppen källkod. Yegor hävdade att om du vill gå längre än att vara en vanlig utvecklare och bli en mer eftertraktad och unik specialist, måste du skapa något eget. Oavsett om det är en bok, en blogg, ett bibliotek eller till och med ett ramverk låter sådana projekt dig sticka ut bland många andra utvecklare, särskilt på dagens IT-marknad. Detta visar inte bara din professionalism utan visar också på genuint engagemang i utvecklingen av området.


Allt detta fick mig att tänka: hur sticker jag egentligen ut bland andra utvecklare? Trots år av arbete inom IT och deltagande i olika projekt, hade jag fortfarande inget eget — något som kunde visa upp min unikhet och professionalism.

Söker efter idéer

Jag återbesökte mina gamla husdjursprojekt på GitHub, men insåg snabbt att inget av dem var riktigt betydande. Så jag bestämde mig för att börja om från början och skapa något nytt. Full av motivation och entusiasm började jag fundera på vad jag skulle kunna skriva som skulle efterfrågas, åtminstone bland en liten publik, och som skulle matcha min kompetens.


Under två eller tre dagar analyserade jag idéer för mitt projekt med öppen källkod. Ju mer jag funderade, desto mer verkade det som att allt redan hade skrivits, och att det som ännu inte hade förverkligats skulle vara omöjligt att uppnå ensam. Låt mig säga direkt: detta är ett missvisande perspektiv. Låt det inte förstöra din potential. Ja, mycket har redan skapats, men det är ingen anledning att ge upp och överge tanken på att skapa något eget.


Nu ska jag förklara varför:

  • Det finns alltid en chans att fånga en trend och skapa ett verktyg eller en tjänst som snabbt blir populär. Till exempel under covid-19-pandemin utvecklades webbplatser som gav realtidsstatistik över infektioner och de senaste nyheterna. För närvarande ser vi en trend mot AI-tjänster, som fortsätter att ta fart. Allt som krävs är att ta vara på ögonblicket och erbjuda en lösning som efterfrågas under den perioden.
  • Det är inte nödvändigt att vara den första i en nisch för att erövra den. Låt oss ta Discord som ett exempel: det dök upp 2015 när det redan fanns etablerade spelare som TeamSpeak, Ventrilo, Skype och RaidCall. Ändå blev Discord inom bara några år ledande inom sitt segment. Nyckeln är inte nyheten i idén, utan hur effektivt du tar itu med ett befintligt problem.


Den viktigaste aspekten av att skapa något nytt är att identifiera ett verkligt problem och erbjuda en lösning. Detta kan vara en global utmaning eller en liten men betydande fråga som behöver förbättras. Det är avgörande att förstå vilka svårigheter andra utvecklare eller vanliga användare möter och hur du kan hjälpa dem att övervinna dessa utmaningar.


Efter ytterligare reflektion kände jag en önskan att skapa något användbart för .NET-gemenskapen — ett litet bibliotek som kunde underlätta projektutveckling. Eftersom mitt primära fokus är .NET, bestämde jag mig för att koncentrera mig på det jag redan kan och gör bra. En idé som kom att tänka på var att skapa ett bibliotek för att spåra ingångshändelser från tangentbordet och musen.


En månad innan dess, när jag arbetade med en skrivbordsapplikation för Windows, stod jag inför uppgiften att spåra tangenttryckningar på tangentbordet för att utföra vissa åtgärder. Huvudnyansen var att den behövde fungera oavsett om vår applikation var aktiv. Eftersom det inte fanns några färdiga lösningar vid den tiden, använde jag inbyggda P/Invoke -anrop och uppnådde framgångsrikt det önskade resultatet. I det ögonblicket ansåg jag inte att andra utvecklare också kunde möta det här problemet och att ett litet bibliotek som tar itu med det här problemet kan vara ganska användbart.


Ja, det är inte ett bibliotek som kommer att förändra någons liv, men det är det första steget mot att skapa något eget. Det är en möjlighet att få värdefull erfarenhet och ägna tid åt att engagera mig i något jag verkligen brinner för, och det är därför jag bestämde mig för att vidta åtgärder.

Utveckling

Det första steget var att brainstorma idéer för den funktionalitet mitt bibliotek skulle ha. Jag ville att dess kapacitet skulle vara så bred som möjligt samtidigt som den förblir tillgänglig och användarvänlig. Mitt mål var att användaren inte skulle behöva skriva mer än 3-5 rader kod i de flesta scenarier.


Under brainstormingsprocessen kom jag på idén att det inte bara skulle vara möjligt att spåra input utan också att kontrollera den. Med kod kan man till exempel simulera knapptryckningar eller tangentkombinationer, flytta muspekaren, inaktivera vissa tangenter så att systemet inte skulle svara på deras tryck, eller till och med ändra tangentbindningar. Alla dessa funktioner implementerades gradvis genom uppdateringar.


Så snart jag slutfört uppsättningen funktioner började jag entusiastiskt utvecklingen. Att skriva koden var inte särskilt utmanande, men jag fokuserade på dess struktur och renhet så att andra utvecklare lätt kunde förstå vad som gjordes och varför. Under utvecklingsprocessen genomförde jag global refactoring flera gånger, ändrade organisation och namn, samt extraherade delar av koden i separata klasser. Jag ägnade särskild uppmärksamhet åt att separera plattformsberoende kod (eftersom jag planerade att skapa en plattformsoberoende lösning i framtiden) från själva bibliotekskoden. Detta skulle förhindra behovet av att skriva om hela kodbasen när man flyttar bort från P/Invoke. Jag tog mig också tid att lägga till XML-kommentarer så att användare av biblioteket kunde förstå vad varje metod eller klass gör.


Efter att ha slutfört den första versionen av biblioteket laddade jag upp den till NuGet (pakethanteringssystemet för .NET-plattformen, liknande npm eller pip). Jag ville få lite feedback för att förstå om någon var intresserad av det här projektet och vilken riktning jag skulle ta härnäst. Innan jag marknadsför mitt bibliotek bestämde jag mig för att skapa en README- fil i GitHub-förvaret, inklusive information om bibliotekets mål och en kort guide om hur man använder det.



De första användarna

Jag bestämde mig för att söka efter mina första användare på Reddit . Efter att ha hittat flera lämpliga gemenskaper skrev jag ett kort inlägg med titeln " Open Source C# Library for Handling Keyboard/Mouse Events in Windows UI Apps " Det var lite stressigt, och ärligt talat, jag förväntade mig inte några signifikanta resultat. Det lönade sig dock överraskande nog. Ett av inläggen fick cirka 14 000 visningar och cirka 30 kommentarer med positiv feedback. Det var en otrolig känsla som jag önskar att alla kunde uppleva: insikten om att tiden som lades ner på projektet inte var förgäves. Även om jag inte skapade något banbrytande, förstod jag att det finns människor som tycker att det verkligen är användbart och som är villiga att stödja mina ansträngningar.


Efter att ha samlat all feedback bestämde jag mig för att fortsätta utvecklingen och hålla kontakten med de mest intresserade användarna som lämnat kommentarer. Jag kommunicerade aktivt med dem och lyssnade på deras önskemål om funktionalitet de skulle vilja se. Under nästa månad släppte jag flera små uppdateringar och fokuserade sedan om på att locka användare.


På GitHub finns det en speciell typ av arkiv som kallas "awesome" — det här är samlingar av länkar och resurser sammanställda om specifika ämnen, till exempel awesome-dotnet . Mitt mål var att marknadsföra mitt bibliotek i vart och ett av dessa arkiv. Även om detta inte var en lätt uppgift — ett bibliotek med 10-15 stjärnor på GitHub lockar inte så mycket intresse — lyckades jag ändå komma in på flera av dem. Detta ökade användartrafiken avsevärt och uppmärksammade mitt projekt.

Samhällets bidrag till utvecklingen

Under den fortsatta utvecklingen stötte jag på många små uppgifter som jag ibland saknade lust och ork att genomföra. Så jag bestämde mig för att dra fördel av en av fördelarna med utveckling med öppen källkod — att locka entusiaster som var villiga att hjälpa till med dessa uppgifter. För att göra detta vände jag mig till tjänsten Up-for-Grabs , som tillhandahåller en lista över arkiv med öppen källkod med aktiva problem för de som vill bidra. Efter att ha lagt till mitt arkiv och skapat flera problem fick jag omedelbart förfrågningar om hjälp.

Efter att mitt bibliotek laddats ner mer än tusen gånger bestämde jag mig för att aktivt arbeta med dokumentationen. Sedan den första uppdateringen har bibliotekets funktionalitet ökat avsevärt, och exemplen i README -filen räckte inte längre. Av alla möjliga alternativ valde jag det enklaste och mest tillgängliga: jag skapade en separat Markdown-fil och detaljerade alla klasser som erbjuds av biblioteket. Jag bestämde mig också för att skriva en liten guide för avancerade användare som vill dra full nytta av bibliotekets möjligheter. Till min förvåning nådde en kille som specialiserat sig på att skriva teknisk dokumentation ut till mig och erbjöd sin hjälp. Han hjälpte mig att strukturera materialet korrekt och beskriva alla detaljer korrekt. Med hans hjälp slutförde vi snabbt denna uppgift.

Utveckling med öppen källkod är ett utmärkt tillfälle att träffa och utöka ditt nätverk med andra programmerare. Hittills har nio personer från olika länder bidragit till biblioteket, inklusive USA, Australien, Argentina, Kanada, Tyskland, Polen och andra. De har hjälpt till med att skriva funktionalitet, enhetstester och dokumentation. Dessutom har det varit ett underbart utbyte av erfarenheter och trevlig kommunikation. Kanske med några av bidragsgivarna kan vi starta ett nytt projekt tillsammans.

Trots att jag har ett jobb och andra åtaganden vill jag fortsätta utvecklingen och släppa en fullversion med de funktioner som jag anser bör finnas med i biblioteket. Mina framtida planer inkluderar att göra det plattformsoberoende och frikoppla det från specifika UI-ramverk.

Slutsats

Avslutningsvis skulle jag vilja sammanfatta allt jag har sagt. Var aldrig rädd för att prova något nytt och stå inte stilla. Om du verkligen älskar programmering och vill växa som utvecklare, sträva efter att skapa något eget – oavsett om det är ett litet bibliotek eller en tjänst. Man vet aldrig vart det kan leda. Under hela utvecklingen av detta bibliotek fann jag glädje inte bara i programmering utan också i att träffa människor och skapa nya kontakter. Jag planerar att fortsätta engagera mig i utveckling med öppen källkod, inte bara genom att främja mina egna projekt utan också genom att bidra till samhällsbibliotek – det här är också en fantastisk upplevelse.


För den som vill börja ägna sig åt utveckling med öppen källkod rekommenderar jag den här guiden !


Om du gillade det här inlägget skulle jag vara tacksam om du kunde stödja biblioteket med en stjärna på GitHub!


LinkedIn / GitHub

L O A D I N G
. . . comments & more!

About Author

Oleg Dubovoi HackerNoon profile picture
Oleg Dubovoi@empiree361
Software Engineer from Vienna. Passionate about open-source. Coding since childhood.

HÄNG TAGGAR

DENNA ARTIKEL PRESENTERAS I...