Çin'de ikinci sınıf öğrencisi olan ve web geliştirme konusunda tutkulu biriyim. İlk yılımda üniversitemizdeki bir teknik kulübe katıldım. Bu kulüp, kodlamaya ve açık kaynağa ilk adımımdı. Kulüpte, kodlamaya bayılan, benimle aynı fikirlere sahip bir grup iş ortağıyla tanıştım. 2023'ün başlarında Google Summer of Code'u onlardan öğrendim. Google tarafından düzenlenen bu küresel program, öğrencileri açık kaynak kuruluşlarıyla bir araya getirir ve açık kaynak etkinliklerine katılarak yaz tatillerini iyi değerlendirmeleri konusunda onlara rehberlik eder.
Denedim ve başvurumu gönderdim. Neyse ki kabul edildim. Chrome Uzantısı Örnekleri deposuna katkıda bulunduğum yaz unutulmaz ve değerliydi. Tabii ki çok şey de öğrendim: Etkili iletişim, kodlama becerileri ve planlama becerileri bunlardan bazıları.
GSoC 2023 sona ererken GSoC'daki deneyimlerimden bazılarını paylaşmak isterim. Bu gönderide, GSoC'ye kendi katılımım üzerinden genel süreci kısaca tanıtacağım. Umarım faydalı olur.
GSoC'ye nasıl katkıda bulunduğumun hikayesi
Chromium GSoC 2023 projesine başvurdum. Bu projede ana görevim, mevcut Chrome uzantısı örneklerini ilgili bazı komut dosyaları ve dokümanlar da dahil olmak üzere Manifest V3'te çalışacak şekilde yükseltmekti.
Başlangıçta
GSoC'den ilk olarak Şubat 2023'te haberdar oldum ancak henüz başvurmak istediğimden emin değildim. O zamanlar birkaç endişem vardı:
- İçe dönük biriyim ve ana dilim İngilizce değil. Bu nedenle, mentorlarla iletişim kurmakta zorluk yaşayabilirim.
- GSoC toplulukları dünyanın her yerinden katılımcı barındırır ve saat dilimi farklılıklarıyla başa çıkmak zor olabilir.
- GSoC, rekabetçi olabilecek kadar tanınmış bir program olduğundan şansımın düşük olduğunu düşünüyorum.
Ancak bunların hiçbirinin sorun olmadığını rahatlıkla söyleyebilirim.
Hikayemi anlatmadan önce 2022'nin başlarında başıma gelen bir olaydan bahsetmek istiyorum. Bu olay, GSoC'ye katılma fırsatı da oldu. Manifest V2 tabanlı bir tarayıcı uzantısını Manifest V3'e taşımak istedim. Taşıma işlemini tamamlamak için dokümanlara başvurmam ve her API değişikliğini anlamam gerekiyordu. Ayrıca, referans olarak kullanılabilecek alakalı örnekler olup olmadığını aramam gerekiyordu. Yeni API'yi anlamak ve kodu aktarmak benim için oldukça zor.
Bu nedenle, GSoC proje listesine göz atarken MV3 ile ilgili fikri yakaladığımda çok heyecanlandım. Manifest V3 uzantı örneklerini iyileştirmeye ve gelecekteki geliştiricilere bir kolaylık sağlamak için katkıda bulunmak istedim.
Mart ayında, sorumlu mentorlardan biri olan Oliver'a niyetimin ne olduğuna dair kısa bir e-posta gönderdim:
GSoC projesine katılma başvurusu
Merhaba,
Çin'de bilgisayar mühendisliği lisans öğrencisiyim. GSoC'ta Chrome Uzantıları Örnekleri ile ilgili projeden haberdar oldum ve Manifest V3 Örnekleri'ni iyileştirmek istedim. API örnekleri üzerinde çalışma konusunda çok fazla deneyimim yok ancak web geliştirme ve MV3 uzantısı geliştirme konusunda deneyimim var (https://github.com/daidr/paimon-webext). Bu deneyimler, MV3 API örneklerinin önemini anlamama yardımcı oldu. Bu nedenle hem öğrenmek hem de katkıda bulunmak istiyorum. Can I still apply for this project?
Teşekkürler.
Çok geçmeden Oliver ve Ali'den (Oliver'ın patronu) bir yanıt aldım. Sorularımı yanıtladılar ve GSoC'nin belirli kuralları ve zaman çizelgesi hakkında ayrıntılı bilgi verdiler. Ayrıca benimle birçok değerli referans materyali paylaştılar.
Bu, ilerleme kararlılığımı güçlendiren bir destek oldu. GSoC 2024 veya başka bir açık kaynak etkinliğine katılmak istiyorsanız ilk adımı atmak çok önemlidir. Hiç tereddüt etmeyin ve cesurca deneyin.
Başvuruda bulunmadan önce projenin kodunu kontrol ettim ve dokümanları gözden geçirdim. GSoC, katılımcıların toplulukla tanışması için yaklaşık bir ay süren bir topluluk bağ kurma dönemi sunsa da önceden edindiğim bilgiler, baskıyı azalttı ve daha hedefli bir teklif yazmamı sağladı.
Proje tarafından sağlanan başlangıçtaki hataları çözmeye çalıştım. Bu sorunlar nispeten basitti ve projeyi hızlıca anlamama yardımcı oldu. Mentorum Oliver'a (o zamanlar mentorum değildi) minnettarım. Açıklığa kavuşturulması gereken bir konu olduğunda e-postalarıma hemen yanıt verdi ve sorunlarımı sabırla çözdü. Teklif yazarken sorunla karşılaşırsanız iyileştirme gerektiren alanlar olup olmadığını görmek için teklifinizi mentorunuza da gönderebilirsiniz.
Kabul edilme
Başvurudan önce yapılması gereken son işlem teklif yazmaktır. Teklif, başvuru formuna ek olarak fikirler, hedefler ve bir zaman çizelgesi içermelidir. Çalışmak istediğiniz projeye bağlı olarak teklif için ek bir şablon sağlanabilir. Referans olarak kullanabileceğiniz birçok hazır teklif örneği internette mevcuttur.
Taslağı tamamladıktan sonra geri bildirim almak için mentoruma gönderdim. Başvuru gönderildikten sonra uzun bir süre beklemeniz gerekir. Mayıs ayının başlarında kabul edildiğime dair bir bildirim aldım.
Kod Çalışması
İlk uyum sağlama döneminde, ilk aşamada kalan hataları giderdim ve öğrenmem gereken yeni beceriler olup olmadığını kontrol ettim. Geri kalan zamanım ise dokümanları okuyarak geçiriyorum.
Mentörümle yaptığımız görüşmenin ardından, görevlere ayrılan süreyi daha makul hale getirmek için bazı hedefleri düzenledik. Ayrıca, tüm API örneklerini listeleyen ve geliştiricilerin ihtiyaç duydukları örnekleri hızlıca bulmalarına yardımcı olacak temel filtreler sunan yeni bir developer.chrome.com sayfası oluşturma fikrini de ele aldık. Bu benim için oldukça karmaşık bir görevdi. Projeyi tanımlamak ve bir ürün gereksinimleri belgesi (PRD) yazmak için mentörümle birlikte epey zaman harcadık.
Bu daha büyük görev için, örnekler deposunda depoyu tarayacak ve uzantı örneklerinin ve kullandıkları API'lerin listesini içeren bir JSON dosyası oluşturacak otomatik bir komut dosyasına ihtiyacımız olduğuna karar verdik. developer.chrome.com doküman deposu artık sayfa oluşturmak için bu dosyayı kullanıyor.
İlk olarak, örnek kodun soyut söz dizimi ağacını analiz etmek ve kullandığı API'leri belirlemek için Babel'i kullanmayı düşündüm. Bu fikri danışman hocamla paylaştıktan sonra, daha önce benzer bir konu üzerinde çalıştığını öğrendim. Bu da bu yaklaşımın uygulanabilirliğini doğruluyordu. Kodu tamamladıktan sonra, danışmanım ve ekibinin diğer üyeleri kod segmentasyonuna dikkat etme, kod stilini standartlaştırma ve işlevleri doğru şekilde belgeleme gibi konularda değerli öneriler sundu.
Büyük ve küçük birkaç incelemeden sonra kod başarılı bir şekilde birleştirildi. İleti dizisinin tamamını GitHub'da bulabilir veya canlı sayfayı görüntüleyebilirsiniz.
Sonuç
GSoC'nin bana ne kazandırdığını sorarsanız ilk olarak tabii ki tarayıcı uzantısı API'leriyle ilgili bilgileri anlamak olduğunu söyleyebilirim. Dokümanları okuyup yeni örnekler yazarak çeşitli tarayıcı uzantısı API'leri hakkında ayrıntılı bilgi edindim.
Ayrıca, GSoC'a kabul edilmeden önce çok az bilgi sahibi olduğum birçok beceriyi (ör. kapsamlı bir kod inceleme sürecini takip etme ve PRD oluşturma) edindim. Ayrıca iş akışlarını otomatikleştirmek için GitHub işlemlerini kullanmaya başladım ve tüm uzantı örneklerini taramak ve kullanılan API'leri izlemek için Babel'i nasıl kullanacağımı öğrendim. Ayrıca, Nunjucks şablon motoruyla ilk deneyimimi yaşadım. Bu beceriler programlama için çok önemli. Bunları öğrendiğim için çok mutluyum. Açık kaynak topluluklarına katılmak beni mutlu ediyor.
Bu yaz bana birçok silinmez anı bıraktı. Kodlama beni çok mutlu ediyor. Bana yol gösteren ve ilginç bilgiler öğreten sabırlı mentorlarla karşılaştım. Bu sayede deneyimim zenginleşti.
Bilgisayar bilimleri alanındaki bilgi sonsuzdur. Kendimi diğerleriyle karşılaştırdığımda, açık kaynak hakkındaki bilgimin buzdağının yalnızca görünen kısmı olduğunu fark ettim. Ancak her katkı değerlidir. GSoC'un, açık kaynak topluluğuna katılmak için mükemmel bir başlangıç noktası olduğunu düşünüyorum.
Ayrıca, deneyimimin gelecekte açık kaynak etkinliklerine katılım için referans sağlayabileceğini umuyorum.
Google Summer of Code'a katılmak isteyenler için önerilerimden bazıları şunlardır:
- Size uygun bir fikir seçin: Fikir ararken öncelikli olarak ilgi alanlarınızı, ardından da becerilerinizi göz önünde bulundurmanız gerektiğini düşünüyorum. Bu strateji, katkı süreci boyunca hevesinizi korumanıza olanak tanır.
- Nicelikten çok kalite: GSoC'a kabul edilme şansınızı artırmak için birçok teklif gönderebilirsiniz. Ancak insan enerjisi sınırlı olduğu için kalitenin daha önemli olduğunu düşünüyorum. İki veya üç fikre odaklanmak, sonuçta daha yararlı olabilir.
- Yeni şeylerden korkmayın: Daha önce bir projede kullanmadığınız teknolojileri denemekten çekinmeyin. Bilmediğiniz teknolojileri tanımak için yaklaşık bir ayınız, bunları uygulamak için ise tüm yaz ayınız var. Denemekten çekinmeyin.
- Projeyle önceden tanışın: Örneğin, geliştirme dokümanlarını okuyun, önceki taahhüt geçmişine ve sorunlara bakın, geçmiş çekme isteklerine göz atın. Proje hakkında önceden genel bir fikir edinmek, daha kapsamlı bir teklif yazmanıza yardımcı olur.
- İletişimi sürdürün: Mentörünüzle düzenli olarak iletişim kurun ve başvurudan önce veya kabul edildikten sonra karşılaştığınız sorunlarla ilgili soru sormaktan çekinmeyin. Çoğu mentor, sorunları çözmenize yardımcı olmaya hazırdır. Bu sayede ilerlemenizi de takip edebilirler.
Bu e-postayı okuduğunuz için teşekkür ederiz.