Açık kaynak yazılım nedir?
Açık kaynak yazılım , kaynak kodu herkesin incelemesi, değiştirmesi ve dağıtması için genel kullanıma sunulan yazılımdır. Açık Kaynak Girişimi yaygın olarak kabul edilen tanımı sağlar:
"Açık kaynak yazılım, herkesin inceleyip değiştirebileceği ve geliştirebileceği kaynak koduna sahip bir yazılımdır. Telif hakkı sahibi, kullanıcılara açık kaynak lisans koşullarına tabi olarak yazılımı herkese ve herhangi bir amaçla inceleme, değiştirme ve dağıtma hakları verir."
Bu tanım birkaç temel ilkeyi vurgular:
- Kaynak kodu kullanılabilirliği: Kaynak kodun tamamı yalnızca yürütülebilir ikili dosyalar değil genel olarak erişilebilir olmalıdır.
- Değiştirme özgürlüğü: Kullanıcılar yazılımı ihtiyaçlarına uyacak şekilde değiştirebilir, hataları düzeltebilir veya özellik ekleyebilir.
- Yeniden dağıtım hakları: Kullanıcılar yazılımı özgün veya değiştirilmiş biçimde başkalarıyla paylaşabilir.
- Lisans koşulları: Kullanım hakları, izinleri, kısıtlamaları ve yükümlülükleri belirten bir açık kaynak lisansı tarafından tanımlanır.
Açık kaynak yazılım, kaynak kodun gizli kaldığı ve kullanım haklarının telif hakkı sahibi tarafından sıkı bir şekilde denetlendiği özel yazılımlardan temel olarak farklıdır.
İşbirliğine dayalı açık kaynak modeli
Açık kaynak geliştirme , birden çok katkıda bulunanla işbirliğine dayalı yazılım oluşturmayı içerir:
Topluluk odaklı geliştirme
- Dağıtılmış katkıda bulunanlar: Dünyanın dört bir yanından geliştiriciler koda, belgelere, testlere ve desteğe katkıda bulunur.
- Gönüllü katılım: Katkıda bulunanların çoğu sorunları çözerek, öğrenerek, itibar oluşturarak veya kullandıkları destekleyici araçlarla gönüllü olarak katılır.
- Meritocracy: Projelerdeki etki genellikle kuruluş hiyerarşisi yerine kalite ve katkı miktarıyla ilişkilidir.
- Saydam işlemler: Geliştirme herkesin tartışmaları, kararları ve değişiklikleri gözlemlediği genel depolarda gerçekleşir.
İşbirliğine dayalı iş akışları
- Genel depolar: Kod, herkesin görüntüleyebileceği GitHub, GitLab veya Bitbucket gibi platformlarda barındırılır.
- Sorun izleme: Hatalar ve özellik istekleri genel olarak izlenir ve topluluk üyelerinin sorunları tanımlamasına ve çözüm önermesine olanak sağlar.
- Pull request incelemeleri: Katkıda bulunanlar, birleştirilmeden önce sürdürümcüler ve diğer topluluk üyeleri tarafından incelenen pull requestler aracılığıyla değişiklikleri gönderir.
- Sürüm yönetimi: Geliştiriciler, topluluk katkılarını içerecek şekilde kararlılığı ve uyumluluğu sağlayarak yayınları koordine eder.
Proje idare modelleri
Farklı açık kaynak projeleri çeşitli idare yaklaşımlarını benimser:
- Hayırsever diktatör: Tek bir kişi (genellikle kurucu) proje yönü hakkında son kararları alır (örneğin, geçmişte Guido van Rossum ile Python).
- Çekirdek ekip: Küçük bir bakımcı grubu, fikir birliği veya oylama yoluyla topluca kararlar alır.
- Temel idare: Büyük projeler genellikle yasal yapı, kaynaklar ve idare çerçeveleri sağlayan temeller (Apache Foundation, Linux Foundation gibi) oluşturur.
- Kurumsal sponsorluk: Birçok açık kaynak projesi öncelikli olarak yazılıma bağımlı şirketlerin çalışanları tarafından sürdürülür.
Açık kaynak yazılımların yaygın olarak benimsenmesi
Açık kaynak yazılım, teknolojinin tüm sektörlerinde yaygın hale gelmiştir:
Sektör benimseme istatistikleri
- Kurumsal kullanım: 90'ın üzerinde% kuruluş üretim ortamlarında açık kaynak yazılım kullanıyor.
- İnternet altyapısı: Web sunucularının çoğu Linux üzerinde çalışır (açık kaynak), Apache veya Nginx (açık kaynak) aracılığıyla içerik sunma ve PostgreSQL veya MySQL (açık kaynak) gibi veritabanlarını kullanma.
- Bulut bilişim: Büyük bulut platformları açık kaynak teknolojilerini yaygın olarak kullanır ve destekler: Kubernetes, Docker, Terraform ve diğer birçok açık kaynak araç, modern bulut altyapısının temelini oluşturur.
- Mobil cihazlar: Dünyanın en popüler mobil işletim sistemi olan Android, Linux çekirdeği üzerine kurulmuştur ve kapsamlı açık kaynak bileşenleri içerir.
Teknoloji yığını bileşimi
Modern teknoloji yığınları ağırlıklı olarak açık kaynaktır:
- İşletim sistemleri: Linux bulut altyapısını, kapsayıcıları ve birçok ekli sistemi destekler.
- Programlama dilleri: Python, JavaScript, Java, Go, Rust, Ruby, PHP; en popüler diller açık kaynaktır.
- Veritaban -ları: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch veritabanı dağıtımlarına hakimdir.
- Web teknolojileri: React, Angular, Vue.js, Express, Django, Rails web uygulaması geliştirmeyi etkinleştirir.
- Geliştirme araçları: Git, Docker, Kubernetes, Jenkins, VS Code temel açık kaynak geliştirme araçlarıdır.
Microsoft'un açık kaynak benimsemesi
Microsoft, açık kaynak yazılımlara yönelik kurumsal tutumlardaki dönüşümü örneklemektedir:
Tarihi değişim
Microsoft, açık kaynağı geçmişte özel yazılım iş modeli için bir tehdit olarak görmektedir. Şirket açık kaynağın stratejik önemini fark ettikçe bu durum son on yılda önemli ölçüde değişti.
Azure'da açık kaynak
Azure, açık kaynak teknolojilerini kapsamlı bir şekilde tümleştirir:
Diller ve çalışma zamanları: Azure python, Node.js, Java, PHP, Ruby, Go ve diğer açık kaynak dilleri birinci sınıf platform seçenekleri olarak destekler.
Veritaban -ları: Azure, PostgreSQL, MySQL, MariaDB ve Redis için yönetilen hizmetlerin yanı sıra özel teklifler sunar.
Kapsayıcı düzenlemesi: Azure Kubernetes Service (AKS), açık kaynak kapsayıcı düzenleme platformu olan yönetilen Kubernetes'i sağlar.
Geliştirme araçları: Azure DevOps; Git, Jenkins ve diğer açık kaynak araçlarıyla tümleştirilirken, GitHub (Microsoft tarafından satın alındı) açık kaynak geliştirme için dünyanın en büyük platformudur.
Veri ve analiz: Azure Apache Spark, Hadoop, Kafka ve diğer açık kaynak büyük veri teknolojilerini destekler.
.NET dönüşümü
.NET platformu, Microsoft'un açık kaynak için kapsamlı taahhüdünü gösterir:
.NET kaynağını açma: Microsoft, .NET Core'u (şimdi .NET 5+) MIT lisansı altında açık kaynak olarak yayımladı ve tüm platformu kaynak koduyla serbestçe kullanılabilir hale getirdi. .NET çalışma zamanı, kitaplıklar, derleyiciler ve araçların tümü açık kaynaktır.
Platformlar arası geliştirme: Microsoft, .NET'i açık kaynak olarak kullanarak Windows, Linux ve macOS'ta platformlar arası geliştirmeyi etkinleştirdi ve önemli ölçüde genişletildi. NET'in erişimi.
Topluluk katkıları: GitHub'da .NET depoları Microsoft dışındaki geliştiricilerden binlerce katkı alır ve şirket topluluk geliştirmelerini etkin bir şekilde gözden geçirir ve kabul eder.
Açık kaynak bağımlılıkları: ASP.NET Core uygulamaları genellikle birçok açık kaynak bileşeni içerir:
- Ön uç kitaplıkları: jQuery, React, Angular Vue.js zengin kullanıcı arabirimlerini etkinleştirir.
- Yardımcı program kitaplıkları: Newtonsoft.Json, Serilog, AutoMapper ve sayısız kişi ortak işlevsellik sağlar.
- Test çerçeveleri: xUnit, NUnit, Moq test temelli geliştirmeyi destekler.
Açık kaynak projelere katkıda bulunma
Microsoft, açık kaynak projelerine kendi projelerinin ötesinde etkin bir şekilde katkıda bulunur:
Linux çekirdeği: Microsoft, Linux çekirdeğine katkıda bulunarak Hyper-V tümleştirmesini geliştirir ve Azure altyapısını destekler.
Kubernetes: Microsoft, Kubernetes'e önemli bir katkıda bulunur ve AKS'yi destekleyen platformu şekillendirmeye yardımcı olur.
Açık kaynak girişimleri: Microsoft açık kaynak etkinliklerine sponsorluk eder, kritik açık kaynak altyapısına fon sağlar ve geliştiricileri açık kaynak projelerde tam zamanlı olarak çalışmak üzere kullanır.
Microsoft tarafından oluşturulan açık kaynak projeleri
Microsoft, mevcut projelere katkıda bulunmanın ötesinde önemli yazılımlar oluşturur ve açık kaynaklar oluşturur:
Visual Studio Code: En popüler kod düzenleyicisi, küresel bir topluluğun katkılarıyla uzantılar, temalar ve iyileştirmeler içeren açık kaynaktır.
TypeScript: Microsoft'un tür açısından güvenli JavaScript geliştirme dili açık kaynaktır ve yaygın olarak benimsenmiştir.
PowerShell Core: Microsoft'un otomasyon çerçevesi açık kaynak ve platformlar arasıdır.
.NET Foundation: Microsoft, .NET ekosistemindeki açık kaynak projelerini desteklemek ve kaynaklar, idare ve topluluk desteği sağlamak için .NET Foundation'ı kurdu.
Daha fazla bilgi için .NET Foundation web sitesinebakın.
Stratejik mantık
Microsoft'un açık kaynak benimsemesi, stratejik iş kararlarını yansıtır:
Geliştirici benimsemesi: Geliştiriciler açık kaynak araçları ve dilleri tercih eder. Microsoft, açık kaynağı destekleyerek geliştiricileri platformlarına çeker.
Bulut işletmesi: Açık kaynak iş yükleri bulut benimsemesini yönlendirir. Azure'da mükemmel açık kaynak desteği, platformu daha çekici hale getirir.
Yenilik hızı: Açık kaynak, topluluk katkılarıyla daha hızlı yeniliğe olanak sağlayarak Microsoft'un geliştirme yükünü azaltır.
Ekosistem büyümesi: Açık kaynak toplulukları, platform değerini geliştiren değerli uzantılar, araçlar ve bilgiler oluşturur.
Rekabetçi konum belirleme: Rakipler (AWS, Google Cloud) açık kaynağı kapsamlı olarak desteklediği için Microsoft'un açık kaynak özellikleriyle eşleşmesi veya aşması gerekir.
Kuruluşlar neden açık kaynak seçiyor?
Kuruluşlar birden çok nedenden dolayı açık kaynak yazılımı seçer:
Maliyetle ilgili dikkat edilmesi gerekenler: Lisanslama ücretlerini ortadan kaldırmak doğrudan maliyetleri azaltır; özellikle büyük ölçekte yazılım dağıtırken veya lisanslama maliyetlerinin müşterilere geçirileceği ürünler oluştururken önemlidir.
Esneklik ve denetim: Kaynak koduna erişim, kuruluşların yazılımları belirli ihtiyaçları karşılayacak şekilde değiştirebileceği, kritik hataları bağımsız olarak düzeltebileceği ve özellikler veya düzeltmeler için satıcı zaman çizelgelerine kilitlenmeyebileceği anlamına gelir.
Saydamlık ve güvenlik: Genel kaynak kodu güvenlik denetimlerini etkinleştirir, topluluk incelemesi güvenlik açıklarını daha hızlı tanımlar ve gizli arka kapı veya veri toplamanın olmaması güven sağlar.
Satıcının kilitlenmesini önleme: Açık kaynak yazılımlar genellikle her yere dağıtılarak belirli satıcılara bağımlılığı azaltır ve anlaşma pozisyonları iyileştirilir.
Topluluk desteği: Etkin açık kaynak toplulukları forumlar, belgeler, öğreticiler ve eş yardımı sağlar ve genellikle ticari destek kalitesiyle rekabet eder veya bu kaliteyi aşıyor.
Yenilik ve özellikler: En son teknolojiler genellikle ilk olarak açık kaynakta ortaya çıkar ve kuruluşlar satıcı yol haritalarını beklemek yerine ihtiyaç duydukları özelliklere katkıda bulunabilir.
Açık kaynak yazılımının ne olduğunu ve neden bu kadar yaygın olarak benimsendiğini anlamak, bir sonraki ünitede ele alınan açık kaynak bileşenlerini uygularken kuruluşların ilgilenmesi gereken endişeleri keşfetmeye yönelik temel bağlam sağlar.