Google Summer of Code ve Chrome Uzantıları

Çin'den ikinci sınıf öğrenciyim ve web geliştirme konusunda tutkuluyum. İlk yıl, üniversitemizdeki bir teknik kulübe katıldım. Kodlama ve açık kaynakla tanıştığım bu kulüple tanıştım. Kulüpte, kodlamayı seven benzer fikirlere sahip bir grup iş ortağıyla tanıştım. 2023'ün başında Google Summer of Code'u onlardan öğrendim. Google tarafından organize edilen bu küresel program, öğrencileri açık kaynak kuruluşlarla bir araya getirir ve açık kaynak etkinliklere katılarak yazlarını iyi değerlendirmeleri için onlara rehberlik eder.

Denemek için başvurumu gönderdim. Neyse ki kabul edildim. Chrome Extension Samples deposuna katkıda bulunarak geçirdiğim yaz hiç unutulmaz ve değerli oldu. Tabii ki birçok şey öğrendim: etkili iletişim, kodlama becerileri ve planlama becerileri gibi pek çok şey öğrendim.

GSoC 2023 sona eriyorken, GSoC'deki deneyimlerimden bazılarını sizinle paylaşmak istiyorum. Bu gönderide sizlere yardımcı olabileceğimi umarak kendi katılımlarım üzerinden GSoC'nin genel süreci hakkında kısaca bilgi vereceğiz.

GSoC'ye nasıl katkıda bulunduğumun hikayesi

Chromium GSoC 2023 projesine başvurdum. Bu proje kapsamında asıl görevim, mevcut Chrome uzantısı örneklerini, bazı ilgili komut dosyaları ve dokümanlarla birlikte Manifest V3'te çalışacak şekilde yükseltmek.

En Başta

GSoC'den ilk kez Şubat 2023'te haberdar oldum ancak başvurmak istediğimden henüz emin değildim. O zamanlar birkaç endişem vardı:

  • İçe dönük biriyim ve ana dilim İngilizce değil. Bu yüzden mentorlarla iletişim kurmak zor olabilir.
  • GSoC toplulukları dünyanın dört bir yanından gelir ve saat dilimi farklarıyla başa çıkmak zor olabilir.
  • GSoC o kadar tanınmış bir program ki rekabet gücümün düşmesine neden oluyor.

Ancak bunların hiçbirinin sorun oluşturmadığını rahatlıkla söyleyebilirim.

Hikayemi anlatmadan önce, 2022'nin başında başıma gelen bir şeyden bahsetmek istiyorum. Bu olay, GSoC'ye katılmam için de bir fırsattı. Manifest V2'ye dayalı bir tarayıcı uzantısını Manifest V3'e taşımak istemiştim. Taşıma işlemini tamamlamak için dokümanlara bakmam ve her API değişikliğini anlamam gerekti. Ayrıca referans için alakalı örnekler olup olmadığını da araştırmam gerekti. Yeni API'yi anlamak ve kodu aktarmak benim için oldukça zordu.

Bu nedenle, GSoC proje listesine göz atarken ve MV3 ile ilgili fikre rastlarken çok heyecanlandım. Manifest V3 uzantısı örneklerini iyileştirmeye katkıda bulunmak ve gelecekteki geliştiricilere kolaylık sağlamak istiyordum.

Mart ayında, sorumlu akıl hocalarından Oliver'a amacımla ilgili kısa bir e-posta gönderdim:

GSoC projesine katılım başvurusu

Merhaba,

Çin'den bilgisayar bilimleri lisans öğrencisiyim. GSoC'de Chrome Uzantı Örnekleri ile ilgili proje hakkında bilgi edindim ve Manifest V3 Örneklerini iyileştirmekle ilgileniyordum. API Örnekleri üzerinde çalışma konusunda çok fazla deneyimim yok ancak web geliştirme ve MV3 uzantısı geliştirme (https://github.com/daidr/paimon-webext) konusunda deneyimim var. Bu da MV3 API örneklerinin önemini anlamamı sağladı. Bu yüzden hem öğrenmek hem de buna katkıda bulunmak istiyorum. Yine de bu proje için başvuruda bulunabilir miyim?

Teşekkür ederiz.

Kısa bir süre sonra 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 malzemesi paylaştılar.

Kola darbeyle ilerleme kararlılığımı güçlendirdi. GSoC 2024 veya başka herhangi bir etkinlik gibi yaklaşan açık kaynaklı etkinliklere katılmak istiyorsanız ilk adımı atmak çok önemlidir. Kararsızlıkla deneyin ve cesurca deneyin.

Başvurmadan önce projenin kodunu kontrol ettim ve belgelere hızlıca göz attım. GSoC, katılımcıların toplulukla tanışmaları için yaklaşık bir aylık bir topluluk bağ kurma dönemi sağlasa da, önceden edindiğimiz bilgiler baskıyı azalttı ve hedefi daha iyi belirlenmiş bir teklif yazmama olanak tanıdı.

Projenin sağladığı başlangıç hatalarını çözmeyi denedim. Bu sorunlar nispeten basitti ve projeyi hızla anlamama yardımcı oldu. Mentorum Oliver'a minnettarım (ancak o zamanlar mentorum değildi). İhtiyacım olduğunda e-postalarıma hemen yanıt verdi ve sorunlarımı sabırlı bir şekilde çözdü. Teklif yazarken sorunlarla karşılaştığınızda, iyileştirilmesi gereken alanlar olup olmadığını görmek için teklifi mentorunuza da gönderebilirsiniz.

Kabul edilme

Başvurmadan önce yapılması gereken son şey, teklif yazmaktır. Teklif, başvuru formunun yanı sıra fikirler, hedefler ve bir zaman çizelgesi içermelidir. Üzerinde çalışmayı düşündüğünüz projeye bağlı olarak, teklif için size ek bir şablon sağlanabilir. Birçok hazır teklif örneğini internette referans olarak bulabilirsiniz.

Taslağı tamamladıktan sonra geri bildirimi için mentoruma gönderdim. Başvuru gönderildikten sonra uzun bir süre bekler. Mayıs ayının başlarında kabul edildiğime dair bir bildirim aldım.

Kod Çalışması

İlk bağ kurma döneminde, önce kalan başlangıç hatalarıyla uğraştım ve öğrenmem gereken yeni beceriler olup olmadığını kontrol ettim. Zamanımın geri kalanını belgeleri okuyarak geçiriyorum.

Mentorumla yaptığım görüşmeden sonra, görevlere ayrılan zamanı daha makul hale getirmek için bazı hedefleri düzenledik. Ayrıca, tüm API örneklerini listeleyen ve geliştiricilerin gerekli örnekleri hızlı bir şekilde bulmalarına yardımcı olacak temel filtreleri sağlayan yeni bir developer.chrome.com sayfası oluşturma fikrinden bahsetmiştik. Benim için oldukça karmaşık bir işti. Bu nedenle mentorumla birlikte projeyi tanımlamamız ve bir ürün gereklilikleri belgesi (PRD) hazırlamamız epey zaman aldı.

Daha kapsamlı olan bu görevde, örnek deposunda depodan geçip uzantı örnekleri ve kullandıkları API'lerin listesini içeren bir JSON dosyası oluşturmak için örnek deposunda otomatik bir komut dosyasına ihtiyacımız olduğuna karar verdik. developer.chrome.com dokümantasyon deposu artık bu dosyayı bir sayfa oluşturmak için kullanıyor.

İlk olarak örnek kodun Soyut Söz Dizimi Ağacı'nı analiz etmek ve kullanılan API'leri belirlemek için Babel'i kullanmayı düşündüm. Bu fikri mentorumla paylaştıktan sonra onların da daha önce benzer bir şey üzerinde çalıştıklarını öğrendim ve bu yaklaşımın uygulanabilirliğini onayladım. Kodu tamamladıktan sonra mentorum ve ekibindeki diğer üyeler kod segmentasyonuna dikkat etme, kod stilini standartlaştırma ve işlevleri doğru şekilde belgeleme gibi değerli öneriler sundu.

Büyük ve küçük birçok incelemeden sonra kod başarıyla birleştirildi. İleti dizisinin tamamını GitHub'da bulabilir veya canlı sayfayı görüntüleyebilirsiniz.

Özet

GSoC'nin bana ne kazandırdığını sorarsanız, öncelikle tarayıcı uzantısı API'leriyle ilgili bilgileri anlamaktır. Dokümanları okuyarak ve yeni örnekler yazarak çeşitli tarayıcı uzantısı API'ları hakkında ayrıntılı bilgi edindim.

Buna ek olarak, GSoC'ye kabul edilmeden önce kapsamlı bir kod inceleme sürecini takip etmek ve bir PRD oluşturmak gibi çok az beceri edindim. Ayrıca iş akışlarını otomatikleştirmek için GitHub işlemlerini kullanmaya başladım ve tüm uzantı örneklerini gezmek ve kullanılan API'leri izlemek için Babel'i nasıl kullanacağımı öğrendim. Ayrıca, Nunjucks şablon motoruyla ilk deneyimim oldu. Programlama için bu beceriler çok önemli. Bunları öğrendiğim için çok memnunum. Açık kaynak topluluklara katılmak bana neşe veriyor.

Bu yaz bana unutulmaz anılar yaşadı. Kodlama beni çok içerik üretiyor. Bana rehberlik eden, ilginç bilgiler öğreten hasta mentorlarla karşılaştım ve bu sayede deneyimimi zenginleştirdim.

Bilgisayar bilimleri alanındaki bilgi sonsuzdur. Kendimi başkalarıyla karşılaştırdığımda, açık kaynak hakkındaki bilgimin buz dağının yalnızca görünen kısmı olduğunu fark ettim. Yine de her adım yardımcı olabilir. GSoC'nin açık kaynağa katılmak için harika bir başlangıç noktası olduğuna inanıyorum.

Ayrıca tecrübemin, ileride açık kaynak etkinliklere katılım için referans sağlayabileceğini umuyorum.

Google Summer of Code'a katılmak isteyen herkes için benim önerilerimden bazıları şunlardır:

  1. Size uygun bir fikir seçin: Bana göre, fikir ararken önceliğiniz ilgi alanı olmalı, onu da beceri kazandırmalısınız. Bu strateji, katkı süreci boyunca hevesinizi korumanızı sağlar.
  2. Miktardan önce kalite: GSoC'ye kabul edilme şansınızı artırmak için çok sayıda teklif gönderebilirsiniz. Ancak insan enerjisi sınırlı olduğu için kalitenin muhtemelen daha kritik olduğunu düşünüyorum. İki veya üç fikre odaklanmak, sonunda daha faydalı olabilir.
  3. Yeni şeylerden korkmayın: Bir projede çalışmadığınız teknolojileri denemekten çekinmeyin. Bilmediğiniz teknolojiler hakkında bilgi edinmek için yaklaşık bir ay boyunca toplulukla bir araya gelebilecek ve yaz boyunca bu teknolojileri uygulamaya koyacaksınız. Siz de kendinizi gösterin!
  4. Proje hakkında önceden bilgi edinin: Örneğin, geliştirme belgelerini okuyun, önceki kaydetme geçmişine ve sorunlara bakın ve geçmiş pull isteklerine göz atın. Projeyi önceden genel olarak kavramanız, daha kapsamlı bir teklif yazmanıza yardımcı olacaktır.
  5. İletişimi sürdürün: Mentorunuzla düzenli olarak iletişim kurun ve sorunlarla karşılaştığınızda ister başvuru öncesinde ister kabul edildikten sonra soru sormaktan çekinmeyin. Mentorların çoğu sorunları çözmenizde size yardımcı olmaya isteklidir; bu şekilde onlar da ilerlemenizi takip edebilirler.

Okuduğunuz için teşekkür ederiz.