- Gnutella, unutulmuş bir dosya paylaşım protokolüne daha yakın olsa da, merkeziyetsiz teknolojilerin farkında bile olmayan milyonlarca kullanıcının MP3 indirme sorununu çözdüğü gerçek bir örnekti
- 2000–2001 döneminde ABD'de internet yaygınlığı %50'ye ulaştı; ucuzlayan MP3 çalarlar, akış hizmetlerinin sınırları ve dosyaları doğrudan yönetme kültürü benimsenmeyi hızlandırdı
- Sunucusuz yapısı ve tek hata noktası bulunmaması sayesinde AOL iptal ettikten sonra bile geri döndürülmesi zorlaştı ve yıllar süren durdurma girişimlerine rağmen çalışmayı sürdürdü
- Temel yapı, HTTP dosya aktarımı ile TCP tabanlı gossip protokolünün birleşimidir; PING/PONG, QUERY/QUERYHIT ve PUSH arama, yanıt ve güvenlik duvarı aşma işini üstlenir
- Ana akımdan kaybolmasının nedeni anlık bir teknik başarısızlık değil, dönemin kullanıcı ortamının ortadan kalkmasıydı; ağ ise küçülmüş ölçekte yaşamayı sürdürdü
Gnutella'nın neden uzun süre hayatta kaldığı
- Gnutella, birçok kişinin unuttuğu bir dosya paylaşım protokolü olsa da, merkeziyetsiz teknolojileri anlamaya çalışmayan sıradan milyonlarca kullanıcının gerçek bir sorunu çözmek için kullandığı bir örnekti
- Kullanıcılar ağa token değer artışı gibi bir motivasyonla değil, MP3 indirmek için katıldı; ağ patlayıcı biçimde büyüdü, yaklaşık 10 yıl boyunca istikrarlı bir dönemde kaldı ve sonrasında azalan kullanım ile uzun bir kuyruk etkisi yarattı
- Gnutella, LimeWire gibi daha görünür projelerin altında gizli kalan kurucu teknolojiydi ve modern platformların kapalı bahçe modeli yüzünden bugün dosya sisteminin kendisini bile hatırlamayan internet kullanıcıları ortaya çıktı
- Gnutella projesi, AOL'in iptal ettiği dahili bir demonun kamusal alana sızmasıyla başladı ve sunucusuz merkeziyetsiz tasarımı nedeniyle bir kez yayımlandıktan sonra geri alınması zordu
- Gnutella, durdurma girişimlerine rağmen yıllarca çalıştı ve özgün
Gnutella.exe kopyaları bugün bile archive.org üzerinde bulunabiliyor
- Başarısız bir protokol olarak görülmesinin zor olmasının nedeni açık
- Eşzamanlı aktif kullanıcı sayısı milyonlara kadar ölçeklendi ve yaklaşık 10 yıl boyunca ana akım bir kullanım senaryosu olarak gelişti
- Ana akımdan silinmesinin nedeni protokolün kendisinin anında başarısız olması değil, Gnutella'nın doğduğu kullanıcı ortamının yok olmasıydı
- Bugün bile küçülmüş ölçekte çalışmayı sürdürüyor
Benimsenmeyi yaratan tarihsel koşullar
- 2000–2001 civarında ABD'li tüketiciler arasında internet yaygınlığı %50'ye ulaştı ve internet, meraklılara yönelik bir araç olmaktan çıkıp günlük hayatın altyapısına dönüşüyordu
- Müzik dosyası paylaşımının yaygınlaşmasının arkasında aynı anda işleyen birden fazla koşul vardı
- Müzik endüstrisi, değişen tüketici tercihlerine uyum sağlayamadı
- MP3 çalarlar ve katı hal depolama aygıtları ucuzladı ve yaygınlaştı
- Düşük hızlı çevirmeli bağlantılarda müzik akışı pratik değildi
- Disk alanı, dizinler, yedekler ve indirilen dosyaları doğrudan yönetmek, dönemin sıradan bilgisayar kullanıcıları için kabul edilebilir bir şeydi
- Bu koşullar, 2010'ların başına kadar süren dosya paylaşımının altın çağını yarattı ve LimeWire o dönemin temsilci adı olarak kaldı
- Gnutella'nın tek hata noktası yoktu, bu yüzden öldürülmesi zordu; temel protokol basit olsa da, belirtimdeki isteğe bağlı genişletmeler sayesinde kolayca genişleyebiliyordu
Protokolün temel karakteri
- Gnutella, çoğu kullanıcı için bir dosya aktarım aracıydı ama özünde blob arayan bir P2P arama motoruna daha yakındı
- İlke olarak basit bir DNS, küresel anahtar/değer metadata sorgu tablosu ya da Unreal Tournament lig eşleştirme hizmeti gibi amaçlarla da kullanılabilirdi; ancak gerçek tarihte, özellikle MP3 indirme olmak üzere arama ifadesiyle eşleşen dosyaları indirmekle hatırlandı
- Gnutella 0.6 taslak belirtimi, paylaşılan kaynakların başka kaynaklara eşleme, şifreleme anahtarları, her türden dosya ve anahtarla belirtilebilen kaynak metabilgileri dahil her şey olabileceğini söyler
- Genel kullanım akışı şöyleydi
- LimeWire, BearShare, GTK-Gnutella gibi bir Gnutella istemcisi çalıştırılırdı
- İstemci internette bir yerlerdeki birkaç eşe bağlanırdı
- Kullanıcı
LinkinPark.mp3.exe gibi bir arama ifadesi girerdi
- Sorgu eşten eşe ağın dış katmanlarına doğru yayılırdı
- Sonuçlar dünyanın farklı yerlerindeki rastgele bilgisayarlardan yavaş yavaş geri dönerdi
- Kullanıcı dosya adına bakarak sahte olup olmadığını tahmin etmeye çalışır, bağlantı hızlarını karşılaştırır ve virüs olmamasını umardı
- Bir dosya seçildiğinde istemci, kullanıcı bilgisayarından doğrudan HTTP ile parçalar indirirdi
- Yanlış dosya indirirken yeni içerik keşfetmek ya da zararlı yazılım almak mümkündü; bu tür keşfederek toplama davranışı öneri motorlarının gelişiyle birlikte kayboldu
- İstemciler genellikle dört ana işlev sunardı
- Sorgu yöneticisi: binlerce eşe yavaşça yayılan aramaları yönetirdi
- Dosya yöneticisi: paylaşılacak dizin veya yolları ve indirilen dosyaların kaydedileceği yeri belirlerdi
- Aktarım yöneticisi: çift yönlü dosya aktarımında sürdürme, bölme ve yönetim işlerini ele alırdı
- Ek özellikler: IRC sohbeti, mesaj panoları, arama sorgusu izleme, belirli ana makineleri tarama gibi özellikler içerirdi ama bunların çoğu protokolün kendisinin parçası değildi
- Gnutella ekosisteminde LimeWire gibi pazar liderleri vardı ama birden fazla istemci bir arada yaşıyordu ve bağımsız geliştiriciler istemcileri sıfırdan yazabiliyordu
- Gnutella Bun Client uygulanırken, belirtimde yer almayan birçok şey, belgelenmemiş özellikler ve ek belirtimlere dağılmış işlevler görüldü; protokol organik biçimde evrim geçirdi
HTTP ile gossip protokolünün birleşimi
- Kişisel bir bilgisayarda HTTP sunucusu açıp IP adresini duyurursanız dosya paylaşımı mümkün gibi görünür; ancak bugün NAT, güvenlik duvarları ve ev tipi ISP politikaları nedeniyle içe gelen TCP portlarını açmak zordur
- 20 yıl önce yerel makinede küçük bir HTTP sunucusu çalıştırmak ve bunu genel IP ile dışa açmak bugüne kıyasla daha sık mümkündü
- Gnutella bu ortamdan yararlanarak, gossip yapan eşlerden oluşan bir mesh içinde her katılımcının dosya barındırabilmesini sağladı
- LimeWire ile dosya indirme aşaması,
curl ya da wget ile dosya almaya benziyordu
- Sadece HTTP sunucusu kullanmak P2P dosya paylaşım ağı kurmaya yetmezdi
- O dönemde de ISP'ler her zaman kararlı statik IP sağlamıyordu
- Bugün paylaşılan IP adresi ertesi gün değişebilirdi
http://74.6.231.21:4000 gibi rastgele URL'ler muhtemelen arama motorları tarafından dizine eklenmezdi ve dizüstü bilgisayar kapağı kapanınca çevrimdışı olurdu
- Gnutella istemcileri, HTTP sunucusunun yanında TCP tabanlı bir gossip protokolü çalıştırırdı
- Diğer Gnutella katılımcılarına, paylaşılan dizinleri HTTP ile sunan eşlerden oluşan mesh içinde kendi varlığını duyururdu
- Eş adresleri, bant genişliği, gecikme ve arama sorguları gibi bilgiler mesh içinde taşınırdı
- Güvenlik duvarlarını aşmak için araçlar vardı ama modern NAT sorunlarını çözmek için daha sonra ek genişletmeler gerekti
- Gnutella düğümünün temel rolleri üç taneydi
- Yerel HTTP sunucusuyla isteyenlere dosya aktarmak
- Gossip mesajlarıyla kullanılabilir dosyaları aramak ve duyurmak
- Gerekirse güvenlik duvarını aşmak için teknikler kullanmak
- Gnutella'da merkezi bir giriş noktası ya da kullanıcı kayıt defteri olmadığından, mesh'e girdikten sonra yeni eşleri, içe gelen arama sorgularını ve diğer ağ trafiğini keşfetmeye başlardınız
Bootstrapping
- Bootstrapping, davet almadan ve ön kapı olmadan bir P2P mesh'e ilk kez girebilmek için birkaç başlangıç eşini bulma sürecidir
- Küresel Gnutella ağı, katılımcı IP adreslerinin karışımından oluşur; ana ağa bağlı güvenilir tek bir eşe bağlanmak bile çok sayıda kullanıcı kümesinin ağ trafiğini görmeye başlamanıza yeter
- Zamanla PONG mesajları aracılığıyla daha fazla eş bulunur ve eş listesi yeniden bağlanmak için diske kaydedilir
- IP değişiklikleri ve çevrimdışı durumlar nedeniyle kaydedilmiş eş listelerinin bir kısmı zamanla çalışmaz hale gelir; istemci geçerli eş bulana kadar listedeki adresleri sırayla dener
- Ağa ilk kez katılırken ya da uzun süre sonra geri dönerken yalnızca kayıtlı liste yeterli olmayabilir; bu durumda bootstrapping gerekir
- En yaygın yöntem Gnutella Web Cache (GWebCache) idi
- Gönüllüler tarafından işletilen bağımsız web sunucularının federasyonuydu; genelde CGI veya PHP betiği biçiminde küçük web uygulamalarıydı
- Bilgilerini gönüllü olarak veren Gnutella katılımcılarının IP adreslerini kaydederdi
- Geçerli sunucu kapanırsa kullanılmak üzere başka GWebCache sunucularının IP ya da alan adlarını kaydederdi
- Alternatif GWebCache sunucularının listesini sağlardı
- O anda bilinen Gnutella ağı katılımcılarının IP adreslerini sunardı
- Bazı Gnutella istemcileri önbellek sunucularına otomatik bağlanırdı; bazılarında ise IP'lerin yapılandırma dosyasına veya ayarlar menüsüne elle kopyalanması gerekirdi
- Başlangıç eşlerine bağlandıktan sonra, ağ mesajlarının içinden dolaylı olarak daha fazla eş toplandığı için önbelleğe bağımlılık azalır
- GWebCache bir merkezi darboğaz noktası değildi
- Birbirinden bağımsız birçok GWebCache sunucusu vardı
- İstemciyi GWebCache olmadan bootstrapping yapmanın da birden çok yolu vardı
- GWebCache olmasa da Gnutella daha az kullanışlı bir biçimde varlığını sürdürebilirdi
- Başlangıç eş listesi isteme örneği şöyleydi
- URL sonuna
?get=1&client=TEST&version=1 eklenirse liste alınabiliyordu, ancak çok fazla istek gönderilirse hızla rate limit'e takılıyordu
http://cache.jayl.de/g2/gwc.php
http://gweb.4octets.co.uk/skulls.php
http://midian.jayl.de/g2/bazooka.php
http://p2p.findclan.net/skulls.php
http://skulls.gwc.dyslexicfish.net/skulls.php
H|106.107.193.27:23459|88579
H|182.233.59.26:23464|88581
U|http://bj.ddns.net/skulls/skulls.php|208999
U|http://scissors.gwc.dyslexicfish.net:3709/|341201
H ile başlayan girdiler eşleri, U ile başlayan girdiler ise daha sonra kullanılabilecek yedek önbellek sunucularını gösterir
Temel mesaj türleri
- Gnutella, TCP tabanlı bir protokoldür ve içe gelen bağlantı kabul eden bir eşe bağlandığınızda önce bir handshake gerçekleşir
- İstemci
GNUTELLA CONNECT/0.4 veya GNUTELLA CONNECT/0.6 gönderir; karşı taraf olumlu yanıt verirse bağlantı kurulur ve ikili Gnutella mesajları akmaya başlar
- Tüm ikili mesajlar 23 baytlık bir başlıkla başlar
- Başlıkta mesaj kimliği, payload türü, TTL, hop sayısı ve payload uzunluğu bulunur
- TTL mesajın kalan ömrünü, hop sayısı ise şimdiye kadar kat ettiği mesafeyi gösterir
TTL + Hops, mesajın başlangıçta amaçlanan erişim menzilini ifade eder
- Uygulamada asıl çekirdek mesajlar beş tanedir
- PING: yaşayan eşleri keşfeder, payload türü
0x00
- PONG: PING'e yanıt verir, IP adresi, port ve paylaşım istatistiklerini içerir, payload türü
0x01
- QUERY: kullanıcının ya da yakındaki bir eşin başlattığı arama isteğidir, payload türü
0x80
- QUERYHIT: QUERY'ye verilen olumlu yanıttır; dosya sonuç kayıtlarını ve indirme için bağlantı bilgilerini içerir, payload türü
0x81
- PUSH: güvenlik duvarı arkasındaki yükleyiciler için geçici çözümdür; dosya sahibinden indirene doğru geri bağlanmasını ister, payload türü
0x40
BYE mesajı da vardır ama katı biçimde zorunlu değildir
- Protokol mesajları genişletme veri alanlarını destekler; böylece istemciler tüm ağı bozmadan özellik ekleyebilir
- GTK-Gnutella, küçük çekirdek protokolde bulunmayan TLS, IPv6 ve UDP gibi özellikleri destekler
Protokol genişletmeleri
- Yalnızca bu beş mesaj türünü uygulayarak çalışan bir Gnutella istemcisi yazmak teorik olarak mümkün olabilir; ancak belirtim neredeyse 30 yıllık ve ekosistem durmadı
- Gnutella, eski paketlerin içine yeni fikirler yerleştirebilmek için alan bıraktı
- GGEP (Gnutella Generic Extension Protocol), sıradan mesajların içinde genişletme verileri için genel amaçlı bir alan sunar
- HUGE (Hash/URN Gnutella Extensions), istemcilerin dosyaları yalnızca dosya adına göre değil SHA hash'ine göre de tanımlamasını sağlar
- XML genişletme payload desteğinden de söz edilir, ancak belirtim bunu geçmiş zamanlı ele alır ve modern ağ trafiğinde gözlemlenmez
- İlk tasarım küçük olsa da, büyümeyi sürdürebilecek kadar esnekti
Arama ve aktarımın çalışma biçimi
- PING/PONG mesajları düğümler arasında gidip gelen bir kalp atışı gibi çalışır
- PING'in standart 23 bayt başlık dışında zorunlu payload'ı yoktur ama isteğe bağlı GGEP genişletme verileri taşıyabilir
- PONG, yanıt veren servent'in portunu, IPv4 adresini, paylaşılan dosya sayısını ve paylaşılan kilobayt miktarını içerir
- Düğümler, PONG üzerindeki IP/port bilgisini toplayarak mesh içinde daha iyi bağlantılı üyeler olur ve bu bilgileri sonraki oturumlar için saklar
- QUERY/QUERYHIT, PING/PONG'a benzer biçimde çalışır ama eş duyuruları yerine arama trafiği taşır
- QUERY, minimum hız yani aktarım bant genişliği alanını içerir; ardından NUL ile sonlanan arama dizesi gelir
- Örnek:
beethoven.mp3
- QUERY mesajları göndericiden dışa doğru sel gibi yayılır; sonuç varsa QUERYHIT mesajları tekrar göndericiye döner
- QUERYHIT, yanıt verenin IP adresini, portunu, hızını ve sonuç kümesini içerir
- Her sonuç; dosya indeksi, dosya boyutu, dosya adı ve isteğe bağlı metadata ya da genişletmeleri içerir
- Dosya indeksi daha sonra HTTP üzerinden dosya isterken kullanılır
- Gnutella'nın flood routing yapısı nedeniyle sonuçlar yavaş gelirdi ve tamamlanması bazen dakikalar sürerdi
- LimeWire mühendisleri bunu daha ölçeklenebilir hale getirmek için dinamik sorgu yönlendirmesi geliştirdi
- Bloom filter'lar ve akıllıca ağ topolojileri kullandılar
- Bu ileri düzey yapılandırma sayesinde flood routing sorunları olmadan milyonlarca kullanıcı ölçeğine çıkılabildi
- Bugün bile ana akım istemcilerin çoğu bu sistemi uygular
PUSH ve güvenlik duvarları
- PUSH mesajı, bazı HTTP sunucularının güvenlik duvarından çıkmasına yardımcı olan bir geçici çözümdür, ancak her durumu çözmez
- Tipik HTTP'de istemci sunucuya bağlanırken, burada mantık daha çok sunucudan istemciye doğru bağlanmasını istemek gibidir
- PUSH mesajı, yükleyicinin indireni bulabilmesi için gerekli servent tanımlayıcısını ve diğer kimlik bilgilerini içerir
- İstemci doğrudan bağlanamadığı için, karşı taraftan yeniden bağlanıp dosyayı göndermesi istenir
- Ayrıntılar için Gnutella belirtimine bakılabilir
- Modern istemciler, bu tür sorunları daha doğal ele almak için ek teknikler ve UDP genişletmeleri kullanır
Geriye kalan anlamı ve başvuru kaynakları
- Gnutella, iyi bir erken dönem tasarım sayesinde milyonlarca eşzamanlı kullanıcıya ölçeklendi, engellenmekten kaçındı ve dış yardım olmadan onlarca yıl çevrimiçi kaldı
- Gerçek trafik gelir gelmez çöken bir ağ değildi; aksine Y2K kültürünün bir parçası olan bir ağın hâlâ yok olmamış olması, tasarımın ne kadar sağlam olduğunu gösteriyor
- Sonuç, Gnutella'nın silikleşmesinin asıl nedeninin onu yaratan dünyadan daha uzun süre hayatta kalması olduğuna yaklaşıyor
- Ağın kendisi, protokolle ilgili materyalleri barındıran sitelerden daha uzun süre yaşadı
-
Başvuru bağlantıları
1 yorum
Lobste.rs görüşleri
Gnutella'yı, arama terimine uyan dosyaları, genelde MP3'leri, kolayca ve bolca indirmeyi sağlamasıyla hatırlıyorum ama o “diğer şey” de vardı
Nostalji yaşatması güzel, bugünkü web'in bir canavara dönüşmüş olması ise üzücü
2000'lerin ortasında üniversite yurdu düz bir ağdı ve iTunes çok popülerdi; ağdaki herkes müziğini herkesle paylaşabiliyordu
Circuit City'den aldığım yeni 64 bit HP dizüstü bilgisayarı bir hafta içinde Evanescence ve Green Day ile doldurmuştum; artık Columbia House CD Club'a ihtiyaç kalmamış gibi geliyordu
Mezuniyetten birkaç yıl sonra biri bunu yanlış kişinin yanında ağzından kaçırınca BT resmen haberdar oldu ve sonunda kapatmak zorunda kaldılar
Sonradan fark ettim ki üniversite ağı üzerinde kurulmuş dosya paylaşım düğümlerinin “düz ağı” değil, ağın kendisi düz bir ağmış
Yine de üniversite yılları böyle şeylerle uğraşmak için eğlenceli bir dönemdi
Soulseek hâlâ epey canlı ve iyi çalışıyor
Gnutella'nın en komik yanı, GNU projesiyle hiçbir ilgisi olmamasına rağmen, GNU havalı göründüğü için adında kullanılmış olması
Gnutella'nın temel teknolojisinin, daha yeni small-web ya da Gemini benzeri içerik keşfi için ne kadar yeniden kullanılabileceğini sık sık merak ediyorum
“Başarısız oldu” demek eksik kalıyor. Genel olarak bir şey ya başarılı ya başarısız olmaz; ancak belli hedeflere göre başarılı ya da başarısız olabilir
Artık Gnutella kullanıcısı kalmamasının başlıca iki nedeni var ve ikisi de birer başarısızlık olarak görülebilir
Birincisi, Gnutella ve çeşitli yazılımlar kullanıcı gizliliğini koruma konusunda yeterince iyi değildi; bu da insanları gerçek ve algılanan risklere maruz bıraktı
İkincisi, medya dosyası dağıtım sistemi olarak çok iyiydi ama çoğu kullanıcıyı tatmin edecek kalite/fiyat dengesini sunamadı. Kullanıcıların istediği sınırsız erişimi verdi ama bunun gerçekten aranan içerik olduğunu garanti edemedi; Spotify ise ikisini de sağladı
Bu anlamda Gnutella kullanıcıları hâlâ var, sadece artık başka bir şey kullanıyorlar
*.gmidosyaları için bir arşiv oluşturmayı ve bunu bir Gnutella uzantısıyla aranabilir hâle getirmeyi, ayrıca insanların gemtext belgelerini imzalayıp yayımlayabileceği bir işaretçi sistemi düşünmüştümBu başlı başına yeni bir fikir değil ama Gemtext + Gnutella dağıtım birleşimi yeni görünüyor: https://github.com/RickCarlino/gnutella-bun-client/…
Bu yazı GPT-5.4 ile karşılıklı beyin fırtınası yapılarak ortaya çıktı; ilerisi için bir kenara bırakılmıştı ve aslında henüz paylaşmayı düşünmüyordum, o yüzden buna göre bakmakta fayda var
Gemini + Gnutella alanında ne düşündüğünü duymak isterim; beni Linkedin, Reddit, Fediverse gibi yerlerde bulmak kolay, ayrıca blogumda da iletişim bilgilerim var
OnionShare de oldukça ilginç: https://onionshare.org/
DaRkWeB'in bir parçası olabilir
Belgelerine bakınca daha çok doğrudan bağlantılı bir dosya aktarım aracına benziyor
Gnutella'nın o dönemin koşullarında uzun ömürlü olmasının nedenlerinden biri olarak, P2P arama spam'i yapmak için pek pratik bir teşvik olmaması atlanmış gibi görünüyor
Sonrasında P2P arama spam'i gerçekten ortaya çıktı
Bugünlerde IRC'de de neredeyse hiç spam olmaması bana benzer bir nedenden kaynaklanıyor gibi geliyor
Protokolün birçok bölümünün istemciye güvenmesi ilginç
GUID'nin rastgele olması gerekiyor ama kullanıcının kontrolünde olduğu için herkes GUID'yi
0000olarak ayarlayabilir. Gnutella bugün modern şekilde yeniden tasarlansa muhtemelen karmaşık bir anahtar değişim sistemi ve ED25519 anahtar tabanlı kimlik eklenirdiİlan edilen dosya sayısı, bant genişliği vb. de fiilen kullanıcının doğruyu söylediği varsayımına dayanıyor. Daha karmaşık bir protokol olsaydı muhtemelen bu tür iddiaları gerçekten doğrulamaya çalışırdı
Çok fazla anahtar imzalama ya da itibar yönetimi eklenseydi uygulaması fazla karmaşık hâle gelebilirdi; belki de başarısının sebebi sadeliğiydi. Gnutella istemcileri gerçekten yazılabiliyor
Bence birçok modern P2P projesi bu noktayı kaçırıyor. Sevdiğim bir proje olan Secure Scuttlebutt bile, türlü başarısızlık ve kötüye kullanım senaryolarını hesaba katıp neredeyse kusursuz bir şey yapmaya çalışırken, sonunda yalnızca şartname yazarının ürettiği çalışan istemcinin bulunduğu bir ekosisteme dönüşmüş gibi hissettiriyor
Aynı örnek
gemini://için de geçerli. P2P değil, federatif bir protokol ama şartnamede sorunlar ve açıklar olmasına rağmen insanlar yine de gerçekten istemciler yazdı ve tüm bu sorunlara rağmen ekosistemde epey çeşitli uygulamalar varGnutella'nın o anda öne çıkmasında, Berkeley XCF üyesi Gene Kan ile Spencer Kimball büyük rol oynadı
Spencer daha sonra Google'da çok etkileyici mühendislik işleri yaptı ve bugün veritabanı şirketi Cockroach Labs'in CEO'su
Gene ise arama şirketini Sun'a satarak erken yaşta başarı yakaladı ama ne yazık ki 2002'de çok genç yaşta trajik şekilde hayatını kaybetti