Yazılım Gündemi - 17
4-10 Kasım 2019

İçindekiler

yazilim-gundemi-banner.png

< Önceki Gündem | 4-10 Kasım 2019 | Sonraki Gündem >

TeknoSeyir'de Oku

1 GitLab, önemli pozisyonlar için ülke kısıtlamasına gitmeyi tartışıyor

gitlab-rusya-cin-engel.png

Aslında tartışma yeni değil ilgili issue sayfasında da görülebileceği üzere yaklaşık 3 hafta önce başlamış fakat yeni gündeme geliyor. Tartışmanın başlama nedeni ise kurumsal müşterinin veri güvenliklerine ilişkin ilettiği kaygılar. Bu doğrultuda GitLab da, Rusya ve Çin gibi ülkelerden şu iki pozisyon için insan kabul etmeyecek: Site Güvenilirlik Mühendisi (Site Reliability Engineer) ve Destek Mühendisi (Support Engineer). Ayrıca bu engelleme, güvenlik takımını da etkiliyor. Bu iki pozisyondaki kişiler müşterilerin tüm verilerine erişebiliyormuş. Bu nedenle, ilgili ülkelerdeki kişilerin bu rollerde olması istenmiyor.

Çalışanların yaşadığı ülkelere göre izin sisteminin oluşturulması da ilgili kişiler için bir "ikinci sınıf vatandaş" algısı oluşturup, kendilerini rahatsız hissetmelerine yol açacağı için istenmiyor. Şimdilik en "insani" çözümün bu olduğunu söyleyen GitLab yetkilisi, şu anda bu engelleme kabul edilirse bu yolla hiçbir çalışanın etkilenmeyeceğini de belirtiyor.

Bu ülkelerden ilgili pozisyonlarda insan kaynağını alınmamasının yanı sıra eğer bu konu kabul edilirse mevcut çalışanlar da bu listedeki ülkelere taşınamayacaklar. Eğer taşınmak isterlerse işten ayrılmak zorunda kalacaklar.

Diğer açıdan bakacak olursak ismi geçen ülkelerin casusluk faaliyetleri de sürekli gündemde olduğu için (hatta bu tartışma da yine Çin'in siber ajanlarıyla ilgili bir raporun yayınlanmasından sonra başladı) kurumsal müşterilerin kaygıları da çok haksız sayılmaz. Üstelik bu engelleme yavaş yavaş bir sektör pratiği haline de gelmeye başlamış. Maalesef kurunun yanında yaş da yanıyor.

Bu hafta boyunca HackerNews ve Reddit gibi bir çok platformda tartışılan bu konu elbette ilgili issue sayfasında da tartışılmaya devam etti. Bu tartışmalar sırasında Candice Ciresi isimli GitLab'ın Global Risk ve Uyum Direktörü de aynı issue içerisinde istifa ettiğini paylaştı fakat sonra bu yazı GitLab tarafından kurallara uymadığı gerekçesiyle kaldırıldı. Yani bir nevi sansür uygulandı. GitLab böyle bir davranış sergilemeseydi, "müşterilerinin kaygılarını gidermeye çalışıyor" gözüyle bakmaya devam edecektim fakat böylesi sansürcü bir yaklaşımı GitLab'a yakıştıramadım.

gitlab-istifa-1.png

Şekil 3: Candice Ciresi'nin ilk gönderdiği mesaj (bir takipçiye giden mail)

gitlab-istifa-2.png

Şekil 4: GitLab'ın müdahalesi

Daha önceki yazılım gündemi yazılarından birinde de dediğim gibi, artık internete bağlandığın konumun bir önemi olmadığı dönemler eskide kaldı (belki de öyle bir dönem hiç olmadı, ambargo uygulanan bir ülkede olmadığımız için biz fark edemedik), günümüzde maalesef hangi ülkeden internete çıktığın önemli konulardan biri haline geldi.

Siz bu konuda ne düşünüyorsunuz? Böyle bir engelleme o ülkelerde yaşayan ya da vatandaşı olan kişilere haksızlık mı, yoksa günümüz siber güvenlik çağında bir mecburiyet mi? Yorumlar kısmında konuşalım.

2 GitHub Sponsors özelliği 30 ülkede betadan çıktı

Yaklaşık 6 ay önce GitHub, Sponsors özelliğini beta olarak duyurmuştu. Bugün ise yeni bir blog yazısı ile bu özelliğin 30 ülke için beta'dan çıktığını duyurdular. Ülkelerin listesine bu adresten bakabilirsiniz fakat sizi yormadan ben söyleyeyim, Türkiye bu ülkeler arasında değil.

GitHub'ın yeni Sponsors özelliği için aslında bir nevi dahili Patreon sistemi diyebiliriz. Aynı Patreon'da olduğu gibi kullanıcılar destek olmak istedikleri projelere abonelik yöntemi ile 'sponsor' oluyorlar. Proje sahipleri isterlerse farklı abonelik seviyeleri (ayda 1 dolar, ayda 5 dolar vb.) de oluşturabiliyor.

Eğer betadan çıkan 30 ülkenin birinde değilseniz, sizin ülkenize geldiğinde haberdar olmak bekleme listesine kayıt olup, Beta programı için başvuru yapabilirsiniz. GitHub, "resmi olarak varlık gösterdiğimiz diğer ülkelerde de bu özelliği açmak için çalışıyor" diyor fakat Türkiye'de resmi olarak varlar mı, bilgim yok ama umarım ülkemiz için de aktif olur.

Beta programındaki bazı proje sahipleri de şöyle bir kutlama videosu çekmişler.

Güzel bir özellik, umarım açık kaynak ve özgür yazılım topluluğunun gelişmesine vesile olur.

3 GitHub yıllık Octoverse raporunu yayınlandı

GitHub, her yıl olduğu gibi bu yıl da GitHub'da 1 yıl boyunca olan bitenleri rapor haline getirdi ve yayınlandı. Bu hafta bir blog yazısı yazarak yeni Octoverse raporlarını duyurdular. Şimdi isterseniz rapordan birkaç başlığı birlikte inceleyelim:

3.1 Topluluk

2019 yılı boyunca:

  • GitHub'a toplam 10 milyon yeni kullanıcı katılmış ve toplam da 40 milyon üzeri kullanıcı sayısına çıkılmış.
  • 44 milyon yeni depo yaratıldı ya da "fork" edildi ve 2018'e göre %44 daha fazla geliştirici ilk deposunu yarattı
  • 87 milyon pull request kabul edilmiş ve 2018'e göre %28 daha fazla geliştirici ilk pull request'ini oluşturmuş.
  • 20 milyon issue kapatılmış.
  • 2.9 milyon organizasyon sayfası oluşturulmuş.

3.2 Ülkeler

github-ulke-kullanim.png

Şekil 5: En çok açık kaynak kullanan (fork ve clone sayısına göre) ülkeler

github-ulkeler-acik-kaynak.png

Şekil 6: (SOL): Açık kaynak proje sayısının artış oranına göre sıralama (SAĞ): Açık kaynak katkı yapan sayısının artış oranına göre sıralama

Açıkcası bu sıralama beni şaşırttı çünkü önceki yazılım gündemi yazılarından hatırlayacağınız üzere GitHub, Amerika'nın yaptırımlarını uygulamaya başlamış ve İran'lı geliştiricilerin hesaplarına bazı kısıtlamalar getirmişti (bkz: Yazılım Gündemi - 3). Buna rağmen İran'ın bu listede ikinci sırada yer alması şaşırtı beni. Gerçi bu olay Temmuz ayında gerçekleşti ama demek ki bu olaydan önce yaratılan açık kaynak depolar bile %44 oranını sağlamış.

Sağdaki sıralama da beni bir o kadar şaşırttı. Ne yalan söyleyeyim listede Türkiye'yi görmeyi beklemiyordum. Diğer ülkelere göre alt sıralarda olsak da, açık kaynağa katkı yapanlar sayısındaki artış sevinmeme yetiyor. Umarım ilerleyen yıllarda daha da artar.

3.3 Programlama Dilleri

github-populer-diller.png

Şekil 7: Popüler ilk 10 programlama dili sıralaması

Gelelim popüler ilk 10 programlama dilleri sıralamasına. JavaScript 2014'den beri gelen liderliğini koruyor fakat Java, "İkinci en popüler programlama dili" unvanını Python'a kaptırıyor. PHP ise dördüncülük unvanını kimseye bırakmıyor. Listenin devamında ise C# ve C++ arasındaki çekişmeli mücadeleyi görmekteyiz. Ardından geçtiğimiz senelerde ilk 10'a girmeyi başaran TypeScript'in yerini koruduğunu görürken; Shell ve C arasında bir değiş tokuş gerçekleştiğini gözüküyor ve son olarak zaman içerisinde popülaritesinin düşüşüyle beni şaşırtan Ruby dilini onuncu sırada görmekteyiz.

Burada şu uyarısı yapmadan geçemeyeceğim: Bu listelerin projenize uygun dili seçme aşamasında sizi etkilemesine izin vermeyin. Sonuçta programlama dilleri birer araç ve biz de yapacağımız işe en uygun aracı seçip onu kullanıyoruz. Sırf popüler diye bir programlama dilini seçmek ileride teknik anlamda sizi zora sokabilir.

4 Microsoft, Visual Studio Online hizmetini duyurdu

Yaklaşık birkaç senedir uzaktan kod yazmaya olanak sağlayan hizmet ve araçların sayısındaki yükseliş gözüme çarpıyordu ki Microsoft da bu alanda bir şeyler görmüş olacak ki Visual Studio Code yazılımını, Visual Studio Online olarak uzaktan tarayıcı üzerinden çalışacak hale getirmiş ve Azure ekosistemine yeni bir parça daha eklemiş.

Denemek için online.visualstudio.com adresinden bir geliştirme ortamı oluşturmaya çalıştım fakat aktif bir Azure aboneliği istiyor. 1 aylık bedava Azure aktifleştirmeye çalıştım fakat o da kredi kartı bilgileri isteyince vazgeçtim. Aslında bu yıl içerisinde yayınlanmış ve sonradan coder.com isminde bir girişime dönüşmüş, şu açık kaynak çözüm de sanırım fikir vermesi açısından denenebilir: https://github.com/cdr/code-server. Sonuçta Microsoft'un kendisi de yine VS Code yazılımının alt yapısını kullanarak bu hizmeti oluşturdu. Yalnız şöyle bir şey var, ben Firefox ile açmaya çalıştığımda çok kısa bir "tarayıcınız şimdilik desteklenmiyor" deyip hemen ana sayfaya yönlendirdi. Chrome ile deneyince açıldı. İlginç…

Yalnız bu yeni hizmetin ismi konusunda biraz kafam karışık. Microsoft'un zaten Visual Studio Online isminde bir GitHub ve GitLab benzeri kod barındırma hizmeti sunduğu bir servisi vardı. [kullanıcı_adın].visualstudio.com şeklinde bir alan adresi veriyordu ve orada aynı GitHub gibi kodlarınızı barındırıp, issue açıp, proje yönetebiliyordunuz. Hatta ben 2013 yılında birtakım projelerim için kullanıyordum fakat görünen o ki Microsoft, bu isimi daha çok uygun olan bir projeye aktarmış. Benim kullandığım hizmetin ismi de Azure DevOps olmuş sanırım. Gerçi emin de değilim uzun zamandır Microsoft teknolojilerinden uzak olduğum için bu isim değişikliğinden haberim olmamış da olabilir.

Bu konu hakkında siz ne düşünüyorsunuz? Bu şekilde geliştirme ortamınızı buluta taşımak ister misiniz, yoksa "yok arkadaş ben kendi bilgisayarımda tutarım her şeyimi" diyenlerden misiniz? Ben şahsen ikincisiyim. Belki biraz geri kafalılık da sayılabilir bilmiyorum ama tarayıcı üzerinden kod yazmak bana biraz garip geliyor. Ayrıca Levent Abi'nin söylemini tekrar hatırlatmakta fayda var: "Bulut dediğin başkasının bilgisayarıdır. Bir gün gelir de, 'sana hizmet vermiyorum' derse kalırsın öyle ortada" (bkz: Yazılım Gündemi - 3). Bu doğrultuda endişelerimin de haklı olduğunu düşünüyorum.

5 Git 2.24 sürümü duyuruldu

Artık versiyon kontrol sistemlerinin lideri haline gelen Git, bu hafta içerisinde 2.24 numaralı sürümünü duyurdu. Birkaç değişikliği birlikte inceleyelim:

5.1 Yeni özellik makroları

Git çok uzun zamandır hem global hem de sadece depo bazında ayarlar yapmamıza izin veren git config ile kullandığımız ayar alt sistemine sahip. Hem kendinizi tanıtmak için hem de bazı özellikleri açıp kapatabilmek ya da özelleştirmeler yapabilmek için .gitconfig isimli dosyası komut yardımıyla ya da elle düzenlememiz gerekiyor. Fakat bazen yeni gelen bazı özellikleri keşfetmek ve ayar yapmak bazen fazla zaman alıcı olabiliyor. Bu yüzden artık Git geliştiricileri bazı yeni özellikler için makro sistemi geliştirler ve şöyle bir komut ile özellikleri açıp kapatabileceğiz:

$ git config feature.manyFiles true

Bu komutu çalıştırdığınızda Git sizin için o özellikle ilgili ayarları düzenliyor. Bu makrolar Git geliştiricileri tarafından önceden belirlenmiş olarak geliyor.

5.2 Tarihçeyi yeniden yazmak için alternatif araçlar

Projelerde çalışırken, her ne kadar yapılması tavsiye edilmese de bazen belirli nedenler ötürü Git tarihçesini yeniden yazmamız gerekebiliyor. Mesela bir dosyayı tüm commit'lerden silmek gibi. Şimdiye kadar bunun için git filter-branch aracı kullanıyorduk, fakat bu aracın kullanımı biraz karışık olabiliyordu. Bu nedenle Git geliştiricileri yeni bir araç geliştirdiler: git filter-repo. Bu araç ile:

  • git filter-repo --analyze komutu ile artık depomuz hakkındaki bazı ölçümlerle ilgili bilgiler alabileceğiz. Mesela kaç tane obje olduğu, en büyük dosyaların ya da klasörlerin hangileri olduğu gibi. Bunun gibi bilgiler veren başka bir araça göz atmak isterseniz: git-sizer
  • --path-{glob-regex} ile artık tarihçeyi sadece belirli bir dizin için değiştirken glob ve regex kullanabileceğiz.
  • Diğerine göre daha genişletilebilir bir araç olduğu için artık kendimiz bazı alt komutlar ekleyebileceğiz. Demo için şu adresdeki depoya göz atabilirsiniz: newren/git-filter-repo

Diğer özellikler ve yenilikler için GitHub'ın yayınladığı bu blog yazısı çok faydalı olabilir. Ben de bundan faydalandım.

6 Google, Android 11'de AsyncTask API'sini kaldırmaya hazırlanır

Asenktron işler, programlamanın hemen her alanında işimize çok yarayan ve gerekli olan yapılar. Çünkü bir web sunucusundan veri çekerken kullanıcıların ekranlarını dondurmak istemeyiz. Android tarafında da bu tarz asenkron işler için Google tarafından sisteme eklenmiş bir API var. Android geliştirmede pek deneyimim olmasa da xda-developers sitesindeki yazıdan anladığım kadarıyla bu API biraz sorunluymuş. Şöyle ki bazı durumlarda asenkron iş tamamlandığında uygulamanın ilgili görsel tarafı artık var olmayabilir (kullanıcı başka bir ekrana geçmiştir vs.) fakat AsyncTask API'si bunu kontrol etmediği için uygulamanın çökmesine yol açabiliyor. Elbette siz manuel olarak bazı kontroller ekleyebilirsiniz ama bu sefer de kod tekrarı gibi şeyler oluşabiliyor. Bu gibi nedenlerden dolayı Google da, sanırım fazla da kullanılmayan bir API olduğu için, bunu deprecate etmeye karar verdi. Bu ifadeyi Türkçe'ye tam nasıl çeviririz bilemiyorum ama biraz açmak gerekirse: API tam olarak kaldırılmayacak ama artık desteklenmeyecek ve kullanılması da tavsiye edilmeyecek. Zaten xda-developers sitesindeki yazıdan anladığım kadarıyla pek tercih edilen de bir API değilmiş. Android geliştirici arkadaşlar da doğrulayabilirler sanırım. Çoğu geliştirici onun yerine daha esnek RxJava ya da Kotlin tarafında Coroutines kütüphanelerini kullanıyor.

Android geliştiricisi arkadaşlar için pek büyük bir kayıp sayılmasa da kullanan arkadaşlar varsa artık yeni kütüphanelere geçmelerini tavsiye ederim.

7 Gradle 6.0.0 yayınlandı

Yazılım geliştirme süreçlerinin evrildiği hal itibariyle artık 3. parti kütüphaneler olmadan çözümler geliştirmek pek mümkün gözükmüyor. Haliyle biz de bu 3. parti kütüphaneleri ve derleme işlemlerini yönetmek için araçlara ihtiyaç duyduk. İşte Gradle da bu araçlardan birisi. Her ne kadar C++ ve JavaScript gibi dillerde desteği olsa da daha çok Java ekosisteminde ve Android uygulama geliştirme alanlarında daha çok tercih edilen bir araç. Bu hafta itibariyle de 6.0.0 sürümünü duyurdu. Bu sürümde duyurulan bir değişikliği birlikte inceleyelim:

7.1 Java ve Groovy için daha hızlı derleme

Direkt bir örnekle açıklamak gerekirse:

class A {}

class B {
    static void foo() {
        A a1 = new A();
    }
}

class C {
    void bar() {
        B.foo();
    }
}

Buradaki her sınıfı ayrı bir dosya olarak düşünün. Gradle'ın önceki sürümlerinde A sınıfında bir değişiklik olduğunda tüm diğer dosyalar da yeniden derleniyordu fakat artık sadece A ve B sınıfları derlenecek. Çünkü A sınıfın değişmesi C sınıfını doğrudan ilgilenmiyor. O sadece B sınıfındaki bir fonksiyonu çağırıyor. Böylece derlenecek dosya sayısındaki azaltma da derleme hızlarını olumlu olarak etkiliyor.

Diğer özellik ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

8 Visual Studio Code Ekim 2019 sürümü duyuruldu

vscode1-40.png

9 Anket: Türkiye Açık Kaynak Platformu Talep Analizi Anketi

Türkiye Açık Kaynak platformu çalışmaları devam ediyor. Konu başlığına eklediğim ankete katılarak fikir ve önerilerinizi paylaşabilirsiniz. Türkiye Açık Kaynak Platformu hakkında ümitliyim, umarım yakın zamanda bir şeyler ortaya çıkar.

10 Yaklaşan Etkinlikler

Etkinlik İsmi Yeri Tarihi
2020 ve Sonrası için Yazılım Test Trendleri Ankara 14 Kasım 14:00
Flutter ile İlk Mobil Uygulamanızı Yazın İstanbul 15 Kasım 19:00
Cyber Security Summit İstanbul 16 Kasım 09:00
TensorFlow World Extended Ankara Ankara 16 Kasım 13:00

11 Diğer Haberler

12 Lisans

Tarih: 10 Kasım 2019

Yazar: Eren Hatırnaz

Oluşturuldu: 2021-01-24 Sun 22:46

Validate