Logo sv.androidermagazine.com
Logo sv.androidermagazine.com

Vad gaffeln är en "gaffel"?

Innehållsförteckning:

Anonim

De senaste dagarna har du antagligen hört ordet "gaffel" fler gånger än du kan räkna. Facebook gaffade detta (även om det inte gjorde det), Amazon gafflar det, Chrome-teamet gafflade hela webben, och så vidare och så vidare. Medan alla pratar om vem som förfalskar vem, är det ingen som bryr sig om att förklara exakt vad som är forking och varför så många människor har problem med det.

Forking, eller krossade, fick lite av en dålig rep för 20 år eller så sedan, eftersom det tenderade att dela upp utvecklare i separata fraktioner som inte delade koden med varandra. Under tiderna som saker som Gnu-Emacs / XEmacs var detta viktigt eftersom det inte fanns nästan lika många som kunde arbeta med dessa stora projekt med öppen källkod och att ha två grenar eller gafflar innebar att det tar längre tid att lägga till funktioner och adressera frågor för båda sidor. I vissa fall händer det fortfarande, jag är säker, men för det mesta finns det massor av utvecklare som kan fylla det tomrum som finns kvar av dem som har en separat vision och kommer att avkoda koden för att följa det. Men vissa människor glömmer aldrig, och stigmatiseringen som är kopplad till gaffelgafflarna försvinner. Efter att ha sagt allt detta kan vi inte låtsas att dåliga gafflar inte inträffar. Vi behöver bara titta förbi själva handlingen innan vi fattar våra beslut.

Jag vet att några av er där ute vet vad allt detta betyder, och försöker bara ignorera allt buller, men för många är det förvirrande. Låt oss försöka fixa det.

Vad är en mjukvaragaffel och hur påverkar den Android?

Tänk på Android en massa kod. Det finns två delar - delarna med öppen källkod, vilket är vad AOSP är, och de egna delarna som Google håller för sig själv. Om någon vill ta Google Android och göra ändringar i den kommer de att ladda ner koden som ska användas som bas och bilda sitt eget projekt med den. Samsung gör det, HTC gör det och din favorit-ROM-utvecklare kan göra det. När någon tar befintlig kod och startar ett oberoende (det är en viktig distinktion) -projekt baserat på det har de skapat en gaffel. Många utvecklare kommer att kolla in koden, redigera delar av den och sedan skicka sina ändringar uppströms i sin helhet, vilket inte är en gaffel.

Amazon höjde en hel del ögonbrynen när den gick Android för att bygga OS för Kindle Fire-linjen. Men på den öppna källsidan av saker och ting var det inte annorlunda än vad Motorola gjorde med Cliq, eller HTC gjorde med hjälten - eller vad Samsung gör nu för Galaxy-seriens enheter. Så här fungerar många stora open source-projekt. Varje leverantör (utom kanske Amazon) arbetar med samma grunder, rapporterar troligen buggar och skickar korrigeringar uppströms när de går, för att skapa sitt eget tag på slutprodukten.

Facebook gaffade inte Android. Den använde Android-avsiktssystemet (ett sätt som appar kan arbeta med varandra och dela på Android) och byggde en stor app som dessutom innehåller ett ersättningshem. Inuti sin sandlåda kan de göra vad de vill eller behöver göra, och så länge de använder Android-avsikter kan de kommunicera med resten av systemet. Om du vill bli teknisk kan HTC ha gafflat Android för att fungera bättre med Facebook Home i HTC First, eftersom det nämns några förändringar som gjordes för bättre kompatibilitet. Vi vet mer om vad de gjorde när telefonen lurar ut.

Hur som helst är gaffelkod inte alltid dåligt och förtjänar inte all negativitet som du hör när någon nämner det. Branschanalytiker Stephen O'Grady sammanfattar det snyggt Jag tror:

Det är dock värt att nämna att från ett kundperspektiv är gafflar eller varianter inte universellt dåliga. Även om de olika Android-versionerna kan representera olyckliga designbeslut från de leverantörer som ansvarar för dem, är applikationer i överväldigande majoritet av fall kompatibla från enhet till enhet, förutsatt att versionen är likvärdigt.

Att ha appar kompatibla från enhet till enhet är därför Android designades. Forkingskod gör att det inte händer. Men andra saker gör det.

Den andra sidan av forking Android

I Kina kan du köpa en telefon från en operatör som kör Android, men har inga Google-tjänster? Precis som Kindle Fire är den byggd från Googles Android-kod (ibland omodifierad) men har inte skickats in och testats för att vara Google-kompatibel och har saker som Gmail eller Google Play inkluderat. Dessa appar och de olika systemfilerna som de behöver köra är inte open source, och du kan inte bara inkludera dem utan tillstånd från Google.

Annat än en "annorlunda" (jag ska inte säga att det är "värre", bara annorlunda) användarupplevelse utan dessa appar, de kan se ut och känna precis som en Android-telefon du köper från Verizon eller AT&T. De kan också se och känna sig väldigt annorlunda, som Amazon har gjort. Men inget av detta beror på att de gafflade av Googles Android-kod - det var ett medvetet beslut att inte göra en "certifierad" enhet från Google. Google presenterar Android som en applikationsplattform och uppsättning av appramar. Att inte inkludera Googles tjänsteapplikationer gör det inte mindre till en appplattform. Naturligtvis antar vi att Google hellre vill att alla Android- och Android-baserade enheter använder Googles tjänster, men det finns ingen hård och snabb regel som säger att en leverantör måste göra det.

Att göra enheter utan Googles appar har ingenting att göra med Android-forking. Det kan göra enheter mindre önskvärda, eller en dag kan den ultimata Android-telefonen byggas utan Googles appar, men det kan hända utan att förfalska någon kod. Vi är alla skyldiga till att ha sammankopplat de två sakerna, men vi borde inte göra det.

Forking är bara en sak

Det är inte bra att OEM: er skaffar ut Android och arbetar med sitt eget projekt med koden. Det är inte illa att OEM-apparater delar ut Android och arbetar med sitt eget projekt med koden. Det är bara en sak de alla gör.

Nexus fanklubb åt sidan, du kan inte berätta för mig att Samsung eller HTC har förstört Android genom att smyga koden och bygga vidare på den. De har lagt till funktioner medan de håller allt kompatibelt så att applikationer byggda för "Android" enligt utvecklarens riktlinjer kommer att fungera bra. Och de levererar konsekvent enheter som människor vill köpa. Jag tror att det är exakt vad Google hade i åtanke för Android. De visste att så småningom skulle någon gå längre och skapa något som inte är helt "Android" kompatibelt, men det är OK. Användare av dessa enheter finns fortfarande på Internet och Googles mobila webbappar är ganska anständiga.

Förhoppningsvis, nu vet du lite mer om vad folk menar när de pratar om att forfalska Android.