차례:
지난 며칠 동안 아마도 "포크"라는 단어를 더 많이 들었을 것입니다. 페이스 북은 이것을 포크했지만 (아직하지는 않았지만) 아마존은 포크로 크롬 팀은 웹 전체를 포크했습니다. 모두가 누구를 누가 포크하는지에 대해 이야기하고 있지만, 포크가 무엇인지, 왜 그렇게 많은 사람들이 문제를 설명하는지 귀찮게 생각하지 않습니다.
코드를 공유하지 않은 별도의 파벌로 개발자를 분할하는 경향이 있기 때문에 20 년 전쯤에 포크 또는 부서지는 것은 나쁜 평판을 얻었습니다. Gnu-Emacs / XEmacs 분할과 같은 시대에, 이 큰 오픈 소스 프로젝트를 수행 할 수있는 사람이 거의 없었으며 두 개의 분기 또는 포크가 있으면 추가하는 데 시간이 더 걸리기 때문에 이것이 중요했습니다. 기능 및 양쪽 문제를 해결합니다. 어떤 경우에는 여전히 이런 일이 발생한다고 확신하지만 대부분의 경우 별도의 비전을 가진 사람들이 남겨 놓은 빈 공간을 채울 수있는 많은 개발자가 있으며이를 따르기 위해 코드를 분기 할 것입니다. 그러나 일부 사람들은 결코 잊지 않으며, 포크 forkers에 붙어있는 낙인은 사라집니다. 이 모든 것을 말했듯이, 우리는 나쁜 포크가 발생하지 않은 척 할 수 없습니다. 우리는 결정을 내리기 전에 행동 자체를지나 쳐야합니다.
나는 여러분 중 몇몇 이이 모든 것이 의미하는 것을 알고 있으며 모든 소음을 무시하려고 노력하고 있지만 많은 사람들에게는 혼란 스럽습니다. 고치려고 노력합시다.
소프트웨어 포크 란 무엇이며 Android에 어떤 영향을 줍니까?
안드로이드는 많은 코드를 생각해보십시오. AOSP 인 오픈 소스 파트와 Google이 유지하는 독점 파트라는 두 부분이 있습니다. 누군가 Google Android를 사용하여 변경하려는 경우 기본으로 사용할 코드를 다운로드하여 자체 프로젝트를 구성합니다. 삼성은 그렇게하고 HTC는 그렇게하고, 좋아하는 ROM 개발자는 그렇게 할 수 있습니다. 누군가 기존 코드를 가져 와서이를 기반으로 독립적 인 (중요한 구별) 프로젝트를 시작할 때마다 포크를 만들었습니다. 많은 개발자들이 코드를 확인하고 코드의 일부를 편집 한 다음 변경 사항을 전체적으로 다시 업스트림으로 보냅니다. 이는 포크가 아닙니다.
아마존은 킨들 파이어 (Kindle Fire) 라인 용 OS를 구축하기 위해 안드로이드를 포크했을 때 눈썹을 상당히 올렸다. 그러나 오픈 소스 측면에서는 Motorola가 Cliq 또는 HTC가 Hero와 한 일, 또는 Samsung이 Galaxy 시리즈 기기를 위해 지금하는 일과 다르지 않았습니다. 이것이 큰 오픈 소스 프로젝트의 수입니다. 모든 공급 업체 (아마존 제외)는 동일한 기본 사항을 사용하여 버그를보고하고 업스트림에 수정 사항을 제출하여 최종 제품에 대한 고유 한 조치를 취합니다.
페이스 북은 안드로이드를 포크하지 않았다. Android 인 텐트 시스템 (앱이 서로 연동하고 Android에서 공유 할 수있는 방식)을 사용하고 대체 홈을 추가로 포함하는 큰 앱을 구축했습니다. 샌드 박스 내에서 원하는 작업이나 원하는 작업을 수행 할 수 있으며, Android 의도를 사용하는 한 나머지 시스템과 통신 할 수 있습니다. 기술을 원한다면 HTC가 HTC First의 Facebook Home과 더 잘 작동하도록 Android를 포크했을 수 있습니다. 호환성 향상을 위해 변경된 내용이 언급되어 있습니다. 우리는 전화가 흘렀을 때 그들이 한 일에 대해 더 많이 알게 될 것입니다.
어쨌든, 코드를 포킹하는 것이 항상 나쁜 것은 아니며 누군가가 그것을 언급 할 때 듣는 모든 부정성을 가질 가치가 없습니다. 업계 분석가 Stephen O'Grady는 다음과 같이 요약합니다.
그러나 고객 관점에서 볼 때 포크 또는 변형은 보편적으로 나쁘지 않습니다. 다양한 Android 버전이이를 담당하는 공급 업체 측에서 불행한 디자인 결정을 나타낼 수 있지만, 버전 동등성을 가정 할 때 응용 프로그램은 장치마다 호환되는 압도적 인 대다수의 경우에 있습니다.
기기가 기기마다 호환되는 앱을 사용하는 것이 Android가 설계된 이유입니다. 포크 코드는 그런 일이 일어나지 않습니다. 그러나 다른 것들이 있습니다.
안드로이드 포크의 반대편
중국에서는 Android를 실행하지만 Google 서비스가없는 이동 통신사에서 전화를 구입할 수 있습니까? Kindle Fire와 마찬가지로 Google Android 코드 (때로는 수정되지 않음)로 작성되었지만 Google과 호환되도록 제출 및 테스트되지 않았으며 Gmail 또는 Google Play와 같은 항목이 포함되어 있습니다. 이러한 앱과 실행해야하는 여러 시스템 파일은 오픈 소스가 아니며 Google의 허가 없이는 포함시킬 수 없습니다.
이러한 앱이없는 "다른"(다른 것이 아니라고 생각하지는 않겠지 만) 사용자 경험을 제외하고는 버라이존이나 AT & T에서 구매 한 안드로이드 폰처럼 보이고 느낄 수 있습니다. 아마존처럼 모양과 느낌이 매우 다를 수도 있습니다. 그러나 이것은 구글의 안드로이드 코드를 분리했기 때문이 아니라 구글의 "인증 된"장치를 만들지 않기로 결정한 것입니다. Google은 Android를 애플리케이션 플랫폼 및 앱 프레임 워크 세트로 제공합니다. Google의 서비스 응용 프로그램을 포함시키지 않아도 응용 프로그램 플랫폼이 줄어들지 않습니다. 물론 Google은 모든 Android 및 Android 기반 기기에서 Google 서비스를 사용한다고 생각하지만, 공급 업체가해야한다는 엄격한 규칙은 없습니다.
Google 앱이없는 기기를 만드는 것은 Android forking과 관련이 없습니다. 기기가 바람직하지 않거나 언젠가는 Google의 앱 없이도 최고의 Android 휴대 전화를 만들 수 있지만 코드를 작성하지 않고도 발생할 수 있습니다. 우리는이 두 가지를 하나로 합친 죄가 있지만 그렇게하지 말아야합니다.
포크는 단지 일이다
OEM이 Android를 포크하고 코드를 사용하여 자체 프로젝트를 수행하는 것은 좋지 않습니다. OEM이 Android를 포크하고 코드를 사용하여 자체 프로젝트를 수행하는 것은 나쁘지 않습니다. 그것은 그들 모두가하는 일입니다.
Nexus 팬클럽을 제외하고는 삼성이나 HTC가 코드를 포크하고 빌드하여 Android를 망쳤다 고 말할 수는 없습니다. 개발자 지침에 따라 "Android"용으로 빌드 된 애플리케이션이 제대로 작동하도록 모든 기능을 유지하면서 기능을 추가했습니다. 또한 사람들이 사고 싶어하는 장치를 지속적으로 제공합니다. 나는 이것이 구글이 안드로이드에 대해 염두에두고 있다고 생각합니다. 그들은 결국 누군가가 조금 더 나아가서 "Android"를 완전히 준수하지 않는 것을 만들지 만, 괜찮습니다. 이러한 기기의 사용자는 여전히 인터넷에 있으며 Google의 모바일 웹 앱은 꽤 괜찮습니다.
바라건대, 이제 사람들은 안드로이드 포크에 대해 이야기 할 때 사람들이 무엇을 의미하는지 조금 더 알고 있습니다.