Yayınlanma tarihi: 28 Ekim 2025
Ben Harsh Singh. IIT (ISM) Dhanbad'da Kimya Mühendisliği bölümünde son sınıf B.Tech öğrencisiyim. 2025'te Google Summer of Code'a (GSOC) katıldım. Bu yayında, GSoC'ye kabul edilme yolculuğumu ve bu süreçte öğrendiklerimi paylaşıyorum.
GSoC'den önce: Uzantı geliştirme hakkında bilgi edinme
İlk yılımda, diğer birçok öğrenci gibi ben de üniversitemizin resmi teknoloji kulübü olan CyberLabs'a katılmak istiyordum. Hazırlanmak için kulübe girmek üzere oluşturduğu Chrome uzantısını bana gösteren bir kıdemliyle konuştum. Bu, bildiğim standart web geliştirmeden tamamen farklıydı. Kendi tarayıcınızda komut dosyaları eklemek ve web sitelerini değiştirmek için harika bir yöntem gibi görünüyordu.
Birçok uzantı API'siyle denemeler yaptım ve hatta Manifest V2'den V3'e geçişe tanık oldum. Bu API'leri kullanarak küçük bir proje oluşturmayı başardım, CyberLabs'a girdim ve ardından üniversite hayatıyla meşgul olarak bir süre uzantı geliştirmeyi bıraktım.
Kısa süre önce Google Summer of Code'a (GSoC) başvurmayı düşünürken Chrome uzantıları API'leriyle ilgili bir projeye rastladım. Nostalji beni çok etkiledi. "Gelecekte bir gün ikinci sınıf öğrencilerinin CyberLabs'e girmek için kullanacağı bir API oluşturmak harika olmaz mıydı? That would be the best flex." Geçmişteki işlerimden dolayı uzantılarla ilgili terminolojinin çoğunu bildiğim için bu proje benim için mükemmel bir seçim.
Uygulamaya hazırlanma
Bir anlık kararla Chrome Uzantıları ekibinde Developer Relations Engineer olarak çalışan Oliver ile iletişime geçtim. Ona Chromium'un GSoC programına başarılı bir şekilde başvurmak için ne gerektiğini sordum. Birkaç gün içinde yanıt verdi. E-postası çok cesaretlendiriciydi. Kod tabanını keşfedebildiğimi ve biraz C++ yazabildiğimi görmeyi istediklerini söylüyordu.
Öncelikle makinemde Chromium'u kurdum. Bu gerçekten zorlu bir süreçti. Sonunda büyük kod tabanını kurup başarılı bir derleme elde etmek için dört tam gün ve sayısız deneme yapmam gerekti. İnternette basit bir sorun buldum (kullanıcı hareketi olmadan sidePanel.open() ile ilgili bir sorun) ve bunu düzeltmek için bir yama gönderdim. (Geriye dönüp baktığımda bunun küçük bir değişiklik olduğunu görüyorum 🙂) Oliver'a ilerleme durumumla ilgili e-posta gönderdim. Bu özelliğin desteklenmesinin planlanmadığını ancak yaptığım çalışmanın bu konudaki ciddiyetimi göstermek için yeterli olduğunu söyledi. Ardından, yan panel için getPosition yöntemini kullanmamı önerdi. Sorunu çözdüm, tekrar e-posta gönderdim ve yaklaşımımın ekibinin tartıştığı konularla uyumlu olduğunu söyleyerek çok mutlu oldu. Bu sayede, kodu anlayabileceğimi ve değişiklik yapabileceğimi bilerek projeye devam etme konusunda kendime güvenebildim.
GSoC teklifim
Sırada GSoC teklifi vardı. İlk proje açıklaması olan "SidePanel API'leri ve DNR API'leri" çok geniş kapsamlıydı. Bu nedenle, teklifimde hangi görevleri listeleyeceğimi veya nasıl bir zaman çizelgesi oluşturacağımı bilmiyordum. Bu konuyla ilgili olarak Oliver'a e-posta gönderdim ve kendisi proje açıklamasını güncellediğini yanıtladı. Sevinerek gördüm ki sidePanel.getPosition API'si de dahil olmak üzere birkaç API eklemişti.
Teklifimin temel bileşenleri arasında proje anlayışı, tasarım fikirleri, teklif öncesi çalışma ve teslimat takvimi yer alıyordu. İlgili işin kapsamlı bir şekilde anlaşıldığını gösterdiğinden görevlerimin boyutunu doğru bir şekilde belirledim. Teklifimi hazırladım ve iki kez incelettim.
Pişman olduğum bir konu var. Gelecekteki adaylar için önemli bir ipucu olarak, oluşturmayı planladığım özellikler için uygun bir tasarım spesifikasyonu eklememiştim. Örneğin, yan paneli kapatmak için bir API önerirken parametreleri belirtmeli, seçimlerimi gerekçelendirmeli, uç durumları nasıl ele alacağımı açıklamalı ve API'nin tüm tarayıcılarda nasıl standart hale getirilebileceğini anlatmalıydım. Bu, çok daha derin bir anlayış seviyesi gösterirdi.
Chromium uzantıları projesi bağlamında, yeni API tasarımlarının resmi olarak tartışıldığı WECG (WebExtensions Community Group, "wee-C-G" şeklinde telaffuz edilir) önemli bir kuruluştur. GSoC dönemi boyunca katkıda bulunanlar, API önerilerini bu gruba sunabilir. Bu nedenle, GSoC teklifinizde hazır bir tasarım fikrinin olması büyük bir avantajdır. Çünkü bu, mentorlara bu önemli adıma hazır olduğunuzu ve GSoC dönemi boyunca iyi performans göstereceğinizi gösterir.
Mayıs ayının başında kabul edildiğime dair e-postayı aldım. 🙂
GSoC sırasındaki katkılarım
GSoC dönemi harikaydı. Mentorüm Solomon inanılmaz derecede iyiydi ve her hafta verimli toplantılar yaparak beni doğru yolda tuttu. Ayrıca, sinirlendiğimde bana çok yardımcı olan bir başka katkıda bulunan Amit P. ile de tanıştım. WECG toplantılarına katılmak benim için bir dönüm noktası oldu. O seviyede işlerin nasıl yürüdüğünü gördüm ve deneyimin neden bu kadar önemli olduğunu anladım. API tekliflerimi orada tartıştım ve başka bir tarayıcı satıcısından onay aldım.
Başlangıçta birkaç değişiklik listesi açtım. Kod incelemelerinin gidip gelmesi nedeniyle ilerleme hızım yavaşladı ancak çalışmaya devam ettim. Birleştirilmiş ana katkılarım Yan Panel API'sine yönelikti:
sidePanel.getLayout()APIsidePanel.close()APIsidePanel.onOpened()vesidePanel.onClosed()etkinlikleri (Bunlar, Microsoft'un yaşam döngüsü önerisine dayanıyordu)
Commands API ile ilgili diğer CL'lerim üzerinde çalışmaya devam ediyorum (GSoC'den sonra ne kadar aktif kalacağıma bağlı olarak 🙂). Ayrıntılı dökümü, GSoC proje sayfamdaki "kodu görüntüle" bağlantısı altında bulunan nihai raporumda görebilirsiniz.
CL'lerimin neredeyse tamamını inceleyen Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz ve Andrea Orru'ya özel teşekkürler. Kodumun Chrome'un bir parçası olduğunu görmek harika bir duygu. Mentorlarım,"sahiplenme" duygumun çok güçlü olduğunu söylüyordu. Bu benim için büyük bir iltifattı.
Özet
GSoC'nin bana ne verdiğini sorarsanız sadece teknik bilgiden daha fazlasını verdiğini söyleyebilirim. Bu sayede, önemli tartışmaların yapıldığı ve birçok uzantı geliştiricisini etkileyecek olan tartışmalara katılma fırsatı buldum. Bu, gerçek dünyadaki bir uygulamada kullanılan ilk çalışmamdı. Bana rehberlik eden ve çok şey öğreten sabırlı mentorlarla tanıştım. Bu sayede tüm deneyim inanılmaz derecede zenginleştirici oldu.
Hikayemin, Chromium'a katkıda bulunmak veya Google Summer of Code'a katılmak isteyen diğer kişiler için faydalı bir referans olmasını umuyorum.
GSoC'ye başvuranlar için ipuçları
- Gerçekten beğendiğiniz bir fikir seçin. İlgi alanları en büyük önceliğiniz olmalıdır. Becerilerinizi her zaman geliştirebilirsiniz ancak işler zorlaştığında sizi devam ettirecek olan tutkunuzdur. Her iki tarafı da deneyimledim ve bana güvenin: İlginizi çekmeyen bir konu üzerinde çalışırken işler ters gittiğinde başkalarını suçlarsınız. Ancak işinizi seviyorsanız bunu aşmanız gereken bir zorluk olarak görürsünüz.
- Rekabetten korkmayın. Topluluk kanallarında kimlerin başvurduğunu gören birçok kişinin motivasyonunun düştüğünü fark ettim. Her iyi proje rekabetle karşılaşır. Güçlü yönlerinize odaklanın. Daha önce herhangi bir kitaplıkla çalıştıysanız bu kitaplığı kullanan bir proje bulun. Benzersiz deneyiminizi paylaşabileceğiniz için avantajlı olursunuz.
- Şansı kabul edin ve iletişime odaklanın. GSoC'nin biraz da şans işi olduğunu kabul edelim. Bazı popüler projeler, 1-2 pozisyon için 300'den fazla teklif alıyor. Mentorların her birini ayrıntılı olarak okuyabileceğini sanmıyorum. Bu nedenle, erken iletişim çok önemlidir. Projeye önceden dahil olun ve teklifinizin sağlam olduğundan ve konuya odaklandığından emin olun.
- Seçilmezseniz her şey bitmiş olmaz. Artık özgeçmişinizde değerli açık kaynak katkılarınız var. Bu bilgiyi, diğer yaz fırsatlarına başvurmak için kullanın. Zahmetli kısmı atlattınız.
Son olarak:
"Herkes belirli bir iş için yaratılmıştır ve bu işe duyulan istek her kalbe yerleştirilmiştir." — Rumi
Okuduğunuz için teşekkür ederiz.