Açık Kaynak kodlu bir geliştirici olarak para kazanmak?


109

Şu anda öğrenciyim (Uygulamalı Bilgi Teknolojisi) ve programlamamızın çoğunu C # ve Java ile yapıyoruz. Nasıl geliştirici olarak açık kaynaklı para kazanabileceğimi merak ediyordum. Destek verme ya da hizmet sağlama hikayesi olduğunu biliyorum, ancak bir sysadmin değilim ve sysadmin çalışmasını sevmiyorum. Aslında gelecekteki bazı C ve C ++ 'larımı ele almayı ve düşük seviyeli gelişim göstermeyi çok isterim.

Öyleyse asıl sorum şu: Açık Kaynak kodlu yazılımın geliştirilmesiyle kazanılacak para var mı?

Düzenleme: Sadece kendi Açık Kaynak projeme başlamanın bir gereklilik olmadığını belirtiyor.


Kitabı Eric Raymond: Katedral ve Çarşı
Dipan Mehta

Açık kaynak kodlu “destek vermek / hizmet vermek” mutlaka sysadmin çalışmasını gerektirmez. Örneğin, belki de bir müşteri açık kaynak kodlu bir uygulama yaptığında, küçük bir kod kipine sahipse ve sizi bu kod kipini programlamak için işe alacaksa, ihtiyaçları için neredeyse mükemmel bulur.
James,

olası yinelenen ücretsiz, açık kaynak programları geliştirmek Neden? "Neden her şey parayla ilgili olmalı? Sizce wikipedia nasıl çalışır? Vikipedi'ye içerik koymak için kimseye ödeme yapılmaz, ancak etrafındaki en iyi ansiklopedi tartışılabilir ... Para konuşalım ..."
gnat

Herkesin bahsettiği gibi çoğu OSS geliştiricisi çabaları için para almıyor. Harika bir iş modeli. Sadece devasa şirketler tarafından OSS kullanarak kaydedilen milyarlarca dolarlık lisans ücretini düşünün. Bu şirketlerin yöneticileri, rüya görmediklerinden emin olmak için her sabah kendilerini çimdiklemeli. Her nasılsa, onlar için ücretsiz çalışacak bir insan ordusunu ikna ettiler. Modeli, diğer alanlara, gazeteciliğe ve fotoğrafçılığa genişleten yazılımlarla çok iyi çalıştı.

Yanıtlar:


105

Bu cevap, ek araştırma ve görüşlerin yanı sıra, aşağıdaki soruların cevaplarının çoğunu özetlemektedir.

özet

Açık kaynak , hem doğrudan belirli proje çalışması yoluyla hem de dolaylı olarak beceri, deneyim ve itibar kazanma yoluyla uygulanabilir bir birincil veya yardımcı iş modeli olabilir. Ayrıca ek motivasyonlar olabilir; başkalarına faydalı yazılımlar üretme memnuniyeti, “kişinin kişisel kaşınımı kaşırma” ( Eric S. Raymond'a göre iyi bir açık kaynak kodlu yazılımın ilk adımı için atılacak ilk adım ) veya normal olarak bu fikre dayanan felsefi sebepler . özgür yazılım , ya Richard Stallman tarafından savunulan copyleft yaklaşımı ya da BSD lisanslarına daha izin veren yaklaşımı .

Açık Kaynak ile para kazanmanın yolları

1. Bir şirketin sponsorluğu

Bu birkaç şekilde olabilir.

  • Kalıcı iş yüksek profilli proje üzerinde çalışmaya devam etmek. Bu muhtemelen nadir bir durumdur. Linus Torvalds , Guido van Rossum veya Theo de Raadt gibi büyük bir açık kaynaklı projenin kıdemli bir üyesiseniz , Google veya benzeri büyük bir şirket tarafından finansal olarak desteklenirken muhtemelen projeniz üzerinde çalışmaya devam edebilirsiniz. IBM . Bu destek modu nispeten nadir olmasına rağmen, bu tür bir finansmanı sağlamak için mutlaka açık kaynaklı bir süperstar olmanız gerekmez ; Birçok Linux çekirdeği geliştiricisi, kısmen veya tamamen Red Hat gibi şirketler tarafından finanse edilmektedir .
  • Belirli özellikler veya uzantılar için ödedi. Bazı şirketler , açık kaynak kodlu yazılımda, işletme işlevleri için kullandıkları belirli özelliklere sahip olmaları için ödül sunmaktadır . Çoğu zaman bu özelliğin kapalı kaynak olarak kalmasına gerek kalmaz, bu nedenle önemli kod topluma geri gönderilir. Bu, açık kaynak geliştirmenin arıcı modeli olarak tanımlanmıştır . Bazı durumlarda, ek özelliklerin tescilli kalması gerekir ancak açık kaynak kodlu bir temele dayanır. Her iki durumda da, açık kaynaklı uzmanlık, geliştirici için açık bir avantajdır.
  • Günlük iş kodunuz açık kaynaklı olabilir. İlgili bir durum, günlük işiniz sırasında bir şirket için yazdığınız kodun özelliklerinin, şirkete zarar vermeden açık kaynaklı olabileceği durumudur. Kod mevcut bir FOSS projesine dayanıyor olabilir veya olmayabilir. Genel olarak faydalı araçlar ve kütüphaneler bu yolla sık sık yayınlanabilir ve fıkra delilleri bu tür projelerin gönüllü olmaya başladıklarında genellikle hızlanabileceğini öne sürer .

2. Mevcut projelere değer katın

Bir birey veya şirket, mevcut bir açık kaynaklı projeye veya projelere değer katan birincil bir sağlayıcı olarak kendini konumlandırabilir. Mevcut projeleri paketleyerek, katmanlayarak, birleştirerek veya genişleterek hizmet veren birçok şirket örneği vardır. Genel olarak iki kategoriye ayrılırlar.

  • Destek. Enthought , bilimsel kütüphanelere odaklanan özel bir Python dağıtımını paketleyerek değer katar . Redhat ve diğer Linux dağıtımları, birçok açık kaynaklı projeyi harmanlayarak ve test ederek ve kullanımı kolay kurulum ve yükseltme mekanizmaları sağlayarak değer katıyor . Bu şirketler destek hizmetlerini birçok özel tedarikçinin yaptığı gibi satmaktadır.
  • Freemium modeli. Bu modelde, yazılım veya hizmetin temel bir sürümü ücretsizdir; ek 'premium' özellikler normalde ek ücrete tabidir. Sleepycat yazılımı ,tescilli bir lisans altında Berkeley DB için ekstra özellikler sağlamıştır. Cedega , Windows API'sini Linux altında yeniden düzenlemeyi sağlar ve serbest ve özel kodun bir karışımı olarak yayınlanır. Bu modelin açık kaynak olması gerekmez; Kuruluşlar için Gmail , hem ücretsiz (biradaki gibi) hem de premium seçenekler sunan bir hizmet örneğidir.

3. İkili lisanslama modelinde teklif kodu

Güçlü bir yaklaşım, yazılımı iki alternatif lisans altında sunmak , yazılım dağıtılırsa değişikliklerin topluluğa geri gönderilmesini gerektiren bir copyleft lisansı ve yazılımın açık kaynak kısıtlamaları olmadan kullanılmasına izin veren bir ticari lisans sunmaktır . Bu yaklaşım başarılı gibi büyük projelerde tarafından uygulanmış olan Qt ve Open Office , yanı sıra küçük bir defalık projelerine .

4. danışın

Açık kaynaklı çalışma, değerli topluluk görünürlüğü kazanmanın bir yolunu sağlayabilir.

  • Yeteneklerin sergilenmesi. Bir geliştiricinin işini ve yetkinliğini, içinde bulundukları açık kaynak projelere bakarak doğrulayabilmek , potansiyel işverenler için güçlü bir yaklaşımdır .
  • İtibar inşası. Açık kaynak kodlu bir toplulukta yüksek bir itibara sahip olmak , sizin uzmanlığınıza dayalı konuşma sözleşmeleri , eğitim talepleri veya kitap yazma teklifleriyle sonuçlanabilir.
  • Uzman olmak. Şirketlerin ihtiyaç duyduğu bir teknolojide önemli bir oyuncu olmak, o teknolojide özel danışmanlık, destek ve eğitim talep ediyor olmak anlamına gelir. Bu, uzmanlık alanınızda belirli bir iş alanı yaratılmasına neden olabilir .

5. Yardımcı kanallar

Son olarak, gelir, reklamcılık ( Stackoverflow'un yaptığı gibi), bağışlar ya da bir kullanıcının yazara maddi katkı sağlamasını engellemek amacıyla yazılımın kendisinde bulunan yazılım tekniklerinin kullanılması gibi yardımcı kanallardan elde edilebilir . Bu teknikler Açık Kaynak geliştirme modellerine özgü değildir. Örneğin, genellikle özgür olmayan tarafından kullanılan shareware ürünler.


21

Çünkü bu sistemin yaratıcısı sizsiniz, 'nihai uzmansınız'. Yazılımınızı kullanan veya kullanmak isteyen kar amacı gütmeyen şirketler, bazı danışmanlık işleri için size getirebilir. Ayrıca, ücretinin iyi olduğunu duyduğum kongrelerde konuşma hakkına sahipsin.

Kodunuzu mevcut bir projeye katkıda bulunmak, adınızı ortaya çıkarmak için de iyi bir yoldur. Ne kadar çok katkıda bulunursanız, sözleşme işi ararken o kadar fazla güvenirsiniz.


17

İşte bir örnek.

Qmail topluluğuna takılırsan, Qmail'i içten tanıyan birkaç kişi olduğunu göreceksin. Sadece birkaç tanesi haline Eğer Qmail'in işlevselliği için bir uzantı isterseniz go-adamlar. Evde oturmaları, bir Qmail eklentisi yazmaları ve paralarını almaları gereken müteahhitlik işleri alıyorlar.

Bu gidebileceğiniz bir yaşam tarzına benziyorsa, deneyin - bir yer bulun ve sözleşmeli işler yapın. Kapalı kaynak ürettiğiniz kodlara sahip olmak isteyip istemediklerine veya kodu açık kaynak olarak serbest bırakıp bırakmamalarına bağlı olarak müşterilerinize farklı terimler sunabilirsiniz, ancak bunları kullanabilirler.

Bunu bu şekilde düşünün - müşterinin sadece bu kodun olmasını istediği birçok durum var . O zaman özel olarak erişebilmelerini önemsemezler.


Taahhüt işleri düzensizdir ve bence iyi bir kariyer seçimi değil. Maaşlı bir işe (güvenilir) ya da yeni başlayana (daha iyi bir bahis olabilir) ya da bir kumar oynamak daha iyi görünüyor.
altmış ayakla durdu

15

Tecrübelerime göre, OSS yazmak sana para vermez; ama sizi çok daha değerli ve bu yüzden istihdam edilebilir kılıyor. Her ikisi de, uygulamadan edindiğiniz çok yetenekli yetenekler nedeniyle ve mevcut OSS'yi kullanabildiğiniz için, ekosisteme aşinallığınız, tekerleği yeniden yazmaktan kaçınmak için zaten orada olanları değerlendirerek çok daha az zaman harcamanıza izin verir.


11

Çoğu zaman, işletmeler arıcı modelini kullanarak para kazanırlar . Temel olarak, açık kaynak kodlu katkıda bulunanlarınız, müşterileriniz güvenilir, olgun bir ürün alırken en son ve en iyisini ücretsiz olarak kullanabiliyor. Red Hat, Novell ve Sun bu modelin varyasyonlarını kullanıyor.

Diğer bir seçenek ise danışmanlık ve eğitimdir. Belirli bir ürünü kullanma konusunda çok fazla deneyiminiz varsa (veya daha iyisi, siz onu icat ettiniz), o zaman insanlar size kullanmayı öğretmek için size para ödemeye istekli olabilirler. Canonical'ın kullandığı model budur. Bu mutlaka sizin işiniz olmadığı sürece sysadmin tipi iş yapmanız gerektiği anlamına gelmez. Sonuçta, programcılar, son kullanıcılar ve yöneticilerin de eğitime ihtiyacı var.

Üçüncüsü, bir öğrenci olarak, önümüzdeki yaz Google Yazma Kodu'nu ciddiye almalısınız .

Genel olarak, açık kaynak katkılarının buna doğrudan para kazandırıp kazanmamaya değeceğini söyleyebilirim. Bununla birlikte, kısa vadede faydaları muhtemelen fark etmeyeceğinizden korkuyorum.


10

Bu gerçekten bağlıdır. Birçoğu sadece hobi olarak açık kaynaklı bir geliştirme yapar ve günlük bir işi vardır (bu her zaman olmasa da, çoğu zaman yazılım geliştirmedir).

Bazıları açık kaynaklı projeye ilgi duyan şirketler tarafından ödenir. LWN.net, örneğin Linux çekirdek devs'lerini kimin ödediğiyle ilgili bir makale yayınladı;

http://lwn.net/Articles/222773/

Birçok şirketin Linux çekirdek gelişimini finanse ettiği ve yalnızca Linux distribütörlerinin olmadığı ortaya çıktı.

Bazı geliştiriciler aynı zamanda bir danışmanlık şirketi işletiyor ve ana çalışmalarını desteklemek veya bir vitrin olarak yazılım geliştirmeyi kullanıyor.


7

epeyce farklı yollar var

  • Başka bir şirket tarafından finanse edilir (örneğin, Guido van Rossum’a Python’un üzerinde çalışması için para ödeyen google’ı kullanın)
  • Satış destek hizmetleri
  • Satış danışmanlığı
  • Açık kaynak koduyla kendiniz için bir profil oluşturmak, konuşma, kitap yazma, iyi bir ücretli iş bulma gibi diğer şeylere yol açmasını umuyoruz
  • Örneğin, "ticari" müşteriler için ürünün ticari bir versiyonunun eğrilmesi

ve bence en büyüğü, bilgilerini genişletmek ve ürünlerinin kullanıcılarından sevilmek.


6


Açık kaynak kodlu bir ürün hakkında bir web sitesi yapın (uygulamanız, bir forum, bir destek sitesi vb.) Ve buraya bazı reklamlar yerleştirin.

Bu hile yapardı.


2
Elbette, biraz para kazanabilirsiniz, ancak reklamlarla para kazanamazsınız.

1
Google em ile biraz şans olsa da;)
Michael Durrant 2

6

Bir arkadaşım gibi istemeden açık kaynaklı yazılımlar aracılığıyla para kazandım. Benzer vakalarımız vardı, ama sadece kendim hakkında konuşacağım: açık kaynak kodlu bir VCDiff kod çözücüsü yazdım, çünkü özellik güzel görünüyordu. (Uzun lafın aslı, ancak orjinal zamanını şirket zamanında yazacaktım, ama cuma gecesi yapmayı bitirdim.)

Birkaç yıl sonra, ticari bir pakette kullanmak isteyen, ancak gerekli nitelikte olmayan bir şirkete başvurdum. Bunun için bir lisans ücreti ödemekten mutlu oldular ve bana son derece makul bir münhasır olmayan lisans verdiler. Anlaşmayı yaptık ve iki taraf da mutluydu.

Amaç hiçbir zaman para kazanmak değildi - bu sadece temelde başka bir partinin istediği bir şeyi üretmenin bir yan etkisi olarak gerçekleşti.


3
Bence önemli bir noktaya değindin: para için açık kaynağa girmiyorsun.

@ Bernard: İfadenizin Sun, Novell, Red hat, Google, IBM, Apple ve hatta Microsoft'u hariç tuttuğunu düşünüyorum.
Jason Baker,

Hayır, birey olarak demek istediğim, niyeti para kazanmak olmamalıdır. İmkansız, hatta zor veya istenmeyen bir şey değil.

@Jason - Microsoft'un hiç açık kaynağa "girdiğini" sanmıyorum.
Chris Lutz

5

Bence ortak bir senaryo onların da işlerini ödemiş olmaları. Birçok açık kaynaklı çalışma, geliştiricilerin boş zamanlarından ve ücretli çalışmalarının unsurlarından kaynaklanmaktadır.

Bir örnek, işteki belirli bir sorunu çözmek için bir çözüm oluşturmak ve diğer geliştiricilerin benzer bir senaryo ile karşı karşıya kalmasına yardımcı olmak için çözümü açmak olabilir.


4

Sadece açık kaynaklı bir yazılım projesi geliştirmek, muhtemelen size fazla para kazandırmayacak. Üstün destek sağlama, özelleştirmeler vb. Firefox, Thunderbird, Red5 ve diğer birkaç açık kaynaklı projenin uzantıları ve özel yapımlarını geliştirerek, oldukça iyi bir değişiklik yapmıştım. Yarattığımın büyük bir kısmı da açık kaynaklı topluluğa geri verilmektedir.

İkili lisanslama sistemi olasılığı da vardır. Örneğin, yazılımı GPL tipi bir lisans altında ve ayrıca ticari bir lisans satın alan bir kişinin herhangi bir değişikliği tescil ettirmesine ve kaynak kodunu serbest bırakmadan satmasına izin verilen bir ticari lisans altında yayınlayabilirsiniz.


3

Aslında kendi açık kaynaklı projenizi yaparak para kazanmak istiyorsanız, bunun oldukça uzun bir atış olduğunu düşünüyorum. Öte yandan, Red Hat, Sun, IBM, hatta Microsoft gibi şirketlerde Açık kaynak teknolojileriyle çalışmayı veya açık kaynak yazılım geliştirmeyi gerektiren çok iyi ücretli işler var.


3

Asıl sorunuzun cevabı

Açık Kaynak kodlu yazılımın geliştirilmesiyle kazanılacak para var mı ve nasıl?

Evet ve farklı yollar var. Eğer sadece bir geliştirici olmak istiyorsanız, yani kendi işinizi kurmak istemiyorsanız, başlamak için en iyi şey, sevdiğiniz projelere katılmak. Daha sonra, bunun gibi fırsatlar bulabilirsiniz: http://webapps.ubuntu.com/employment/canonical_GDOS/ (sadece başka bir "büyük" isimden bahsetmek için farklı alanlardan pek çok kişi var, MySQL).

Ardından, LinkedIn'de profilini oluşturun ve becerileriniz ve / veya ilgi alanlarınızla ilgili OSS gruplarına katılın.

Son fakat en az değil, yerel bir gruba (örneğin LUG, JUG) katılın ve posta listesini okuyun. Genellikle bu listelerde birçok iş teklifi görünür (maalesef sadece işi aldıktan sonra keşfettim ).


2

Bazı açık kaynaklı yazılım şirketleri hizmet vermektedir ve para kazanmaktadır. (Uygulama barındırma vb. Gibi) Çoğu durumda, müşterinin ihtiyacına göre bazı özelleştirmeler sağlar ve zamanla destek ve bakım sağlar.

"Bağışların" büyük bir değişiklik yapabileceğini sanmıyorum ama onlardan da bazı etkileri var.

Bu, açık kaynaklı ürünlere dayanan bir Sri Lanka şirketi için iyi bir örnek.

WSO2


2

Çok iyi tanıdığım iki başarılı, karlı açık kaynaklı şirket var:

  • SleepyCat Software, Oracle tarafından satın alınana kadar, Berkeley DB'yi destekleyerek ve geliştirerek para kazandı. Kuruculardan birinin günlük bir işi olmasına rağmen, diğeri yoktu ve bir düzine çalışanı vardı.

  • Chez Scheme , derleyicisine donanımlar ekleyerek ve derleyicisinin yerel kod sürümlerini satarak para kazanır. Tipik geliştirmeler yeni bir arka uç içerebilir; daha iddialı bir yeni gelişme, yerel bir konu paketi idi. Kurucunun (Kent Dybvig) bir günlük işi var; Kaç çalışanı olduğunu bilmiyorum. Chez, tercümanın açık kaynak olması nedeniyle sıra dışıdır, ancak derleyici değildir.

Cygnus ve Red Hat, yazılımlarının özel versiyonlarının yanı sıra "destek" satarlar ancak yazılım da verilir. Bu iş modelini gerçekten anlamıyorum.

Bu örneklerden aldığım şey, yazılımınızın sınıfında üstün olması durumunda, insanların sorunları çözmek için eşyalarını kullanmalarına yardımcı olmak için size ödeme yapacaklarıdır . Yani neredeyse danışmanlık gibi.


Bence Chez Scheme'nin tercümanı ücretsiz, ama açık kaynak değil. Sadece Chez Scheme tercümanı için ikili dosyalar gördüm. Ve google yardımcı olmadı.
Shannon Severance

2

Doğası gereği, doğrudan koddan doğrudan para kazanamazsınız - açık olduğundan. İkili lisans olabilirsiniz, ancak bu OSS topluluğunu da devre dışı bırakabilir.

Muhtemelen en kolay yolu çalışmaktır için açık kaynak yazılımlar üreten bir şirket. Kod yazmak için para alıyorsunuz ve şirket destek ya da her neyse para kazanıyor, ancak doğrudan işlerin bu tarafıyla uğraşmak zorunda değilsiniz.

Veya bir temsilci oluşturmak için OSS yazabilir ve umarım bunun arkasında sözleşmeli / tam zamanlı çalışabilirsiniz.


İkili lisanslamaya gerek yok. GPL kodunu satmanızı durduracak hiçbir şey yok. Tek sorun, alıcının kendisini satmasını veya vermesini engelleyememeniz. Kod yazma hizmetini satmak, kod olan mallardan daha iyidir .
İnce

Bu doğru değil. Gerçekten de satabilirsiniz, ancak daha sonra GPL'nin şartlarının dışına dağıtabilirsiniz (ki bu, hakkınız olan telif hakkı sahibi olarak). Bu onu kamu malı yapmaz. Bu alternatif lisansı açıkça belirtmek daha iyidir.

1

Bunu birkaç yolla yapabilirsiniz. Şu an freemium modeli popüler.
Alternatif olarak, başkalarının da açık kaynak kodlu yayınladığı gibi işleri iptal edildi. Kullandığım model, benim iş yerimde açık kaynak kullanmak ve katkılarımı ana hatta geri kazandırmak. Yönetimden katılımınız olması gerekiyor ama işe yarıyor. Ayrıca Özgürlük'teki Stallman Free'nin sözleriyle hatırla


1

Sanırım şu anda kabul edilen bir gerçek şu ki, bir kez kurulduktan sonra fiyatı, fiyatından daha değerli hale geliyor çünkü artık “zaten orada” oldu. Daha kurumsal tarzı uygulamalardan bahsediyorum.

Yazılımı satın aldığınızda birçok şirket sizi ücretlendirir, daha sonra bakım sözleşmeleriyle ayaklarınızı kapınızda tutar, sizden 7 kat daha fazla satın aldıysanız sizden daha fazla $$ kazanır. Bunun kesinlikle 30 yaşından büyük bazı özel yazılımlarla çalıştığım durum olduğunu biliyorum!

Sadece bu yazılım yüklemek için ücretsiz olur (bunu "ilk başta ücretsiz ilaçlar" iş modeli olarak düşünün). Tabii ki zorluk, iyi korunan ve çevrimiçi olarak iyi bir destek topluluğuna sahip bir proje seçmek. Fakat yine de bu, özgür olmayan yazılımla da aynıdır.

Açık kaynağa geçiş ve açık kaynak kullanımı, özel uygulamalardan çok daha kolay olma eğilimindedir, çünkü açık formatları daha sık destekleme eğilimindedirler. Özel uygulamalar genellikle onlarla birlikte kalmanızı kolaylaştırmak için kendilerine geçiş hizmetini ve diğer hizmetleri "vermez".

O / S uygulamaları ilk başta bakım sözleşmelerini gerektiren bir öğrenme eğrisine sahip olma eğilimindedir, bu yüzden $$ yapmak için birçok fırsat vardır

Bence, hiçbir iş modeli daha iyi değil, sadece farklı. Özel model sadece daha yaygın hale geliyor.


1

Burada iki soru görüyorum:

1) Geliştiriciler nasıl para kazanıyor?

Çoğu geliştirici bunu para için yapmaz. Sebepleri çok olabilir, ancak onları daraltırsak, 1'e iner.) Kaşıntı kaşıma 2) Güvenilirlik kazanmak için 3) Belirli bir dilde / alanda bilgiyi geliştirmek için.

2) İşletmeler nasıl para kazanırlar?

Genellikle destek, eğitim, belgelendirme ve geliştirmeden. Ama sonra soru ortaya çıkıyor: Ürününüz gerçekten iyi ise, o zaman fazla desteğe ihtiyaç duymaz. Bu yüzden Joel'in Consultingware dediği şey olmalı .


0

Günümüzde, bazı şirketler (çok?) Şirketleri, açık kaynaklı yazılımlara dayandığı veya açık kaynaklı yazılımlardan geldiği için açık kaynaklı yazılıma katkıda bulunmak için geliştirici öder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.