آیا اندروید همان لینوکس است؟ این سوالی است که برای سالیان متمادی بین طرفداران این دو ردوبدل میشود و هنوز هم اهلفن نتوانستهاند بر سر آن به تفاهم برسند. قاعدتا پاسخ چنین سوالی باید «بله» یا «خیر» باشد؛ اما دو عامل باعث شدهاند تا پاسخ قطعی به این سوال به درازا بیانجامد:
در این مقاله از وبسایت جی اس ام قصد داریم تا قبل از هرگونه بحث در مورد ماهیت اندروید و «اندروید همان لینوکس است»، زوایای تاریک و پنهان انواع مختلف نرمافزار در موقع استفاده از کلمه «لینوکس» را شفافسازی کنیم.
وقتی کسی از کلمه «لینوکس» استفاده میکند، ممکن است به یکی از موضوعات زیر اشاره کند:
کرنل لینوکس: اینیک بخش کوچک اما ضروری در سیستمعامل است. کرنل وظیفه برقراری ارتباط با سختافزار دستگاه، ارائه خدمات به سایر بخشهای سیستم و انجام وظایفی مانند مدیریت CPU و مموری را بر عهده دارد. کرنل لینوکس، مانند هر کرنل دیگری، میتواند بهعنوان بخشی از یک سیستمعامل گستردهتر فعالیت کند و غیرممکن است که سیستمعاملی فقط از یک کرنل لینوکس تشکیل شده باشد. ازآنجاییکه اندروید یک سیستمعامل کامل است، بلافاصله میتوان نظریه «اندروید بهعنوان یک کرنل لینوکس» را رد کرد.
توزیع لینوکس: توزیع لینوکس یک سیستمعامل است که شامل کرنل لینوکس و برخی نرمافزارهای اضافی مانند برنامههای کاربردی، کتابخانهها، یک رابط گرافیکی و نرمافزارهای از پیش نصبشده مانند مرورگرهای وب، ویراستارهای متن و پخشکنندههای موسیقی است؛ اما حتی اگر این نرمافزار بهطور خاص برای اجرا روی کرنل لینوکس طراحی شده باشد، نمیتوان آن را بخشی از کرنل لینوکس بهحساب آورد. وقتی در مورد سیستمعاملی که از کرنل لینوکس استفاده میکند صحبت میکنیم، «توزیع» و «سیستمعامل» قابلتغییر هستند. ازآنجاییکه هرکسی میتواند به کرنل لینوکس، نرمافزارهای دلخواه خود را اضافه کند و یک سیستمعامل کامل بسازد، در حال حاضر توزیعهای بیشماری از لینوکس در جهان وجود دارد.
گنو/ لینوکس: اکثر توزیعهای لینوکس را میتوان ترکیبی از کرنل لینوکس بهعلاوه نرمافزار گنو بهحساب آورد و بر همین مبنا نیز برخی از افراد استدلال میکنند که باید توزیعات لینوکس را بهعنوان گنو/ لینوکس بشناسیم. این خود موضوعی است که مطلبی جداگانه را میطلبد و من فقط برای قابلفهم کردن نوشته از «توزیع لینوکس» استفاده میکنم؛ اما توجه داشته باشید که ارتباط قدرتمندی بین کرنل لینوکس و نرمافزار گنو وجود دارد.
همین موارد قابلبحث و گیجکننده که در مورد لینوکس گفتیم، در باب «اندروید» نیز وجود دارد. در حال حاضر میتوان به دو نوع مشخص از سیستمعامل اندروید اشاره کرد:
اولین، پروژه متنباز اندروید (AOSP) است که در آن کمپانی گوگل، سورس کدهای اندروید را بهصورت عمومی منتشر کرد. هرچند که میتوان با استفاده از این سورس کدها، سیستمعاملی جداگانه را بنا کرد و آن را روی گوشیهای هوشمند و تبلتها مورداستفاده قرار دارد، اما نتیجه نهایی آن چیزی نخواهد بود که انتظارش را دارد و مواردی مانند نقایص عملکردی در سرویسهای موبایلی گوگل (GMS) به چشم خواهند آمد. GMS مجموعهای از نرمافزارها وAPI های گوگل است که همانند آیتونز و اپ استور اپل، بخشی اساسی از تجربه اندروید هستند. AOSP اوپن سورس است، اما تجربهای که یک کاربر معمولی از اندروید انتظار دارد، توسط AOSP ارائه نمیشود.
اندرویدی که در حال حاضر روی گوشیهای هوشمند و تبلتهای شما اجرا میشود، پایهای از AOSP است که توسط سازندگان گوشیهای هوشمند تغییراتی در آن ایجادشده و مقدار قابلتوجهی کدهای اختصاصی نیز به آن افزوده گردیده است. اکثر استدلالها مخالف و موافق برای طبقهبندی اندروید بهعنوان زیرمجموعه لینوکس به هر دو تفسیر از اندروید اشاره دارند، اما در چند نمونه، بسته به تعریف اندروید بهعنوان AOSP یا سیستمعاملی جداگانه برای اجرا روی گوشیهای هوشمند و تبلتها، به پاسخهای متفاوتی برمیخوریم.
یک استدلال برای طبقهبندی اندروید بهعنوان زیرمجموعه لینوکس وجود دارد که ازقضا استدلال قدرتمندی نیز هست: هر گوشی هوشمند و تبلت اندرویدی شامل یک کرنل لینوکس میشود. در بخش «Software info» دستگاه خود میتوانید این کرنل را مشاهده کنید.
بااینحال، اندروید تنها یک کرنل لینوکس نیست؛ بلکه یک سیستمعامل کاربردی است که به بسیاری از کتابخانههای اضافی، GUL و موارد دیگر مجهز شده است؛ بنابراین وقتی میپرسیم، «آیا اندروید لینوکس است؟» درواقع در حال پرسیدن سوال «آیا اندروید یک توزیع از لینوکس است؟» هستیم!
ازآنجاییکه حتی برآورد کردن تعداد توزیعهای لینوکس موجود غیرممکن است، ایجاد لیستی از قوانین مربوط به سیستمعامل لینوکس کمی دشوار به نظر میرسد؛ اما فراتر از حضور هسته لینوکس، تعریف موجود در مورد هسته لینوکس نیز خود جای تفسیرهای زیادی را باقی گذاشته است؛ بنابراین در ادامه این مقاله در مورد استدلالهای افراد برای طبقهبندی اندروید بهعنوان یک توزیع لینوکسی بحث خواهیم کرد.
از کرنل استاندارد لینوکس استفاده نمیکند
برای ساخت سیستمعاملی که بتواند پاسخگوی تمام نیازهای کاربران موبایل باشد، تیم اندروید تغییراتی را در کرنل لینوکس ایجاد کردند که ازجمله این تغییرات میتوان به افزودن کتابخانههای تخصصی، API ها و ابزارهایی اشاره کرد که بهطور خاص برای اندروید نوشتهشده بودند.
تایید استفاده از کرنل لینوکس در سیستمعامل اندروید شاید خاتمه بحث طبقهبندی اندروید بهعنوان یکی از توزیعهای لینوکس باشد؛ اما ایجاد تغییر در کرنل توسط یک توزیع لینوکس، مسئله غیرمعمولی نیست.
کرنل لینوکس تحت لیسانس «GNU General Public» منتشر شد، بنابراین هرکس میتواند سورس کدهای آن را تغییر دهد؛ همانطور که بسیاری از توزیعهای لینوکس نیز همین کار را کردهاند؛ اما سوال این است که تیم اندروید چه مقدار تغییر را در کرنل لینوکس ایجاد کردهاند؟ بر اساس شواهد و قرائن، این تغییرات «خیلی بزرگ» نبودهاند و به ترتیب تغییراتی است که توسط توسعهدهندگان در کرنل لینوکس ایجادشده است.
شامل نرمافزار گنو و کتابخانهها نمیشود
اگر شما موافق هستید که نرمافزار گنو یک وجهه تعریفشده از توزیع لینوکس است، در کنار این نکته که باید به توزیعات لینوکس بهعنوان گنو/لینوکس اشاره کنیم، بنابراین اندروید را بههیچعنوان نمیتوان یک توزیع لینوکسی بهحساب آورد. اندروید فقط بخش کوچکی از ساختار خود را از گنو قرض گرفته است و تیم سازنده آن بهجای استفاده از کتابخانه گنو C، یک کتابخانه شخصیسازیشده C به نام Bionic را توسعه دادند.
حتی اگر شما موافق نیستید که یک توزیع لینوکس باید شامل نرمافزار گنو شود، نمیتوان این نکته را انکار کرد که عدم حضور گنو میتواند اندروید را از بسیاری از توزیعهای لینوکس متمایز کند.
نمیتوان نرمافزارهای اندروید را روی لینوکس اجرا کرد و برعکس
اگر چند توزیع لینوکس را بهصورت تصادفی انتخاب کنید، این احتمال وجود دارد که کرنل لینوکس تنها مورد مشترک میان آنها باشد. درواقع، اندروید کمترین قرابت با سایر توزیعهای لینوکس را داراست و همین است که اجرای نرمافزارهای لینوکس روی اندروید را غیرممکن کرده است.
حالت عکس این قضیه نیز ممکن است: نرمافزارهای اندروید به کتابخانههای خاص این سیستمعامل، زمان اجرا و همچنین طیف وسیعی از نرمافزارهای دیگر که فقط در اندروید یافت میشوند، نیاز دارند؛ بنابراین بهصورت پیشفرض، نمیتوان نرمافزارهای اندروید را روی سایز پلتفرمها به اجرا درآورد.
اندروید محصول گوگل است
هرچند که گوگل ممکن است کد پایه و منبع اندروید را از طریق AOSP بهصورت عمومی منتشر کند، اما این کمپانی نسخههای بعدی AOSP را بهصورت خصوصی توسعه میدهد. در وبسایت AOSP بهوضوح آمده است که: «گوگل مسئولیت هدایت استراتژیک اندروید بهعنوان یک پلتفرم و محصول را بر عهده دارد.»
هرچند که افراد خارج از کمپانی گوگل نیز میتوانند به شیوههای مختلف در AOSP مشارکت داشته باشند، اما وبسایت AOSP بهصراحت گفته است که این پروژه توسط کارمندان گوگل رهبری میشود. همچنین، مانتین ویوییها حق امتیاز برند و لوگوی اندروید را نیز در اختیار دارند و اگر شما بخواهید سیستمعاملی را بر پایه کدهای AOSP توسعه دهید و تحت نام اندروید منتشر کنید، ناگزیر هستید که با گوگل در این زمینه وارد مذاکره شوید.
هرچند که برخی از توزیعهای لینوکس دارای ارتباط قدرتمندی با برخی شرکتهای خاص هستند، اما اکثر توزیعات لینوکس به صورتی عمومی و با مشارکت همگانی توسعه داده میشوند.
علیرغم توصیه بنیاد نرمافزار آزاد به توسعهدهندگان برای حذف نرمافزارهای اختصاصی از توزیعهای لینوکس، هیچ قانون دقیقی مبنی بر منع توزیعهای لینوکس برای استفاده از نرمافزارهای اختصاصی وجود ندارد؛ اما سوال این است که در مقایسه با توزیعهای لینوکس، اندروید دراینبین چقدر متنباز است؟
درحالیکه بسیاری از مشتاقان به پروژههای متنباز، AOSP را بهدوراز پروژههای ایدهآل متنباز میدانند، اما کدهای آن بهصورت رایگان در اختیار عموم قرارگرفتهاند و آنها برای ایجاد تغییر در کدها آزاد هستند. زمانی نیز که AOSP به دست کاربران اندروید رسید، بسیاری از کدهای اختصاصی به آن افزوده شدند و بنابراین در حال حاضر شما میتوانید با خرید دستگاههایی مانند نکسوس و پیکسل به «اندروید خالص» دسترسی داشته باشید و یا با خرید از سایر کمپانیها، از نسخههای تغییریافته اندروید استفاده کنید.
هرچند که این مورد، نظریه مشتق شدن اندروید از لینوکس را از اعتبار ساقط نمیکند، اما باید بدانید که بسیاری از کدهایی که کاربران میبینند، مانند خدمات موبایلی گوگل یا تاچ ویز سامسونگ، کدهای اختصاصی هستند. اگرچه بسیاری از کدهای لینوکس شامل کدهای اختصاصی نیز میشوند، اما برای بسیاری از افراد، کلمه «لینوکس» ارتباط تنگاتنگی با مفهوم «نرمافزار اوپن سورس» دارد.
درحالیکه ایجاد تغییر در سیستمعامل لینوکس بهراحتی صورت میگیرد، اما مالکان دستگاههای اندرویدی بهصورت پیشفرض نمیتوانند به فایلهای پایه سیستمعامل دسترسی داشته باشند و پارتیشنهای حساس بهصورت قفلشده هستند. توجه داشته باشید که در بالا از واژه «پیشفرض» استفاده کردهام، اما اگر میخواهید کمی در سیستمعامل گوشی یا تبلت خود کاوش کنید، میتوانید از طریق فرآیندی به نام «روت کردن» این کار را انجام دهید.
بیایید به سوال اصلی برگردیم: آیا اندروید یک توزیع لینوکس است؟ درنهایت باید بگوییم که پاسخ به این سوال، به چگونگی تعریف شما از توزیع لینوکس بستگی دارد. اگر موافق این هستید که بجای لینوکس، به تمام توزیعهای آن به چشم گنو/لینوکس نگاه کنیم، قطعا پاسخ منفی است؛ همانطور که اندروید برخی از بخشهای خود را از نرمافزار گنو به امانتگرفته است.
اما اگر شما «توزیع لینوکس» را بهعنوان یک سیستمعامل شامل کرنل لینوکس و چند معیار اضافی تعریف میکنید، مجددا پاسخ منفی خواهد بود. هرچند که هر گوشی هوشمند و تبلت اندرویدی شامل یک کرنل لینوکس نیز میشود، اندروید به هیچیک از توزیعهای دیگر لینوکس موجود شبیه نیست. برای مثال، اندروید به صورتی کاملا واضح، محصول یک کمپانی بوده و با برنامههای لینوکس ناسازگار است؛ و حتی بااینکه AOSP بهصورت اپن سورس است، نسخههای اندروید حاضر در دستگاههای تجاری به نسبت توزیعهای لینوکس با محدودیتهای زیادی مواجه هستند.
اما بااینحال، اگر شما توزیع لینوکس را بهعنوان یک سیستمعامل بر پایه کرنل لینوکس تعریف میکنید، در این صورت میتوان اندروید را یک توزیع لینوکس بهحساب آورد.