داستان کپی کردن SQL از IBM توسط اوراکل و شباهت آن با پرونده جاوا و گوگل
گوگل بیش از یک دههی پیش، از زبان برنامهنویسی جاوا بهعنوان بخشی از سیستمعامل اندروید خود بهره برد. اوراکل، صاحب زبان برنامهنویسی جاوا، در سال ۲۰۱۰ با اتهام نقض قانون کپیرایت از گوگل شکایت کرد. پروندهی شکایت این شرکت هنوز در جریان است و در آیندهی نهچندان دور، رأی نهایی پیرامون آن صادر میشود. رأیی که تأثیری عمیق بر دنیای نرمافزار دارد و حتی شاید میلیاردها دلار هزینه به اهالی مانتین ویو تحمیل کند.
گوگل هرگونه نقض قانون کپیرایت را در استفاده از جاوا تکذیب میکند. قانون کپیرایت، سیستمها و روشهای عملیاتی را از سیاستهای حفاظتی خود مستثنی میداند. گوگل ادعا میکند بخشهایی از جاوا مانند نام توابع، انواع آرگومانها و موارد مشابه که در اندروید استفاده شدهاند، بخشهای مستثنی از قانون کپیرایت هستند. آنها همچنین تأکید میکنند که سیاست استفادهی منصفانه از کپیرایت، این سبک از کپی کردن را مجاز میداند.
دنیای نرمافزار و بازیگران کوچک و بزرگ آن، با دقت پروندهی شکایت اوراکل از گوگل را نظارت میکنند. شرکتهایی همچون مایکروسافت و IBM هشدار دادهاند که ادعای اوراکل و مواردی که در ادامهی پرونده مطرح شد، احتمالا هرجومرجی بزرگ را در صنعت ایجاد میکند. آنها میگویند ممنوع کردن این نوع از کپی نرمافزاری، چالشهای بزرگی را برای اکثر شرکتهای نرمافزاری ایجاد میکند و درنهایت برای مشتریان نیز عواقب مثبتی ندارد.
شرکتهای نرمافزاری، رابطهای کاربری و طراحی نرمافزاری محصولات رقیب خود را همیشه کپی میکنند. این بخشها در صنعت عموما تحت عنوان API شناخته میشوند. چنین فرایندهای کپی کردن باعث میشوند تا محصولات قابل تعامل باشند. درنتیجه یک کاربر میتواند نرمافزار مخصوص یک پلتفرم را دریافت کرده و در پلتفرم دیگر از آن بهرهبرداری کند. درنتیجه هزینههای جابهجایی بین پلتفرمها و موانع ورود به صنعت برای استارتاپها نیز کاهش مییابد. درواقع آنها میتوانند محصولاتی ارائه کنند که با محصولات آشنای کاربران، هماهنگ باشند.
اوراکل بیش از هر شرکت دیگری اهمیت و کاربرد کپی کردن API را درک میکند. آنها در دههی ۱۹۷۰ فعالیت خود را با فروش محصولات دیتابیس مبتنی بر زبان برنامهنویسی SQL شروع کردند و درآمد بسیاری خوبی هم داشتند. مجوز زبان برنامهنویسی SQL در اختیار IBM قرار داشت و ظاهرا اوراکل مجوزی برای استفاده از آن نداشته است.
اگر اوراکل در پروندهی علیه گوگل پیروز شود، صنعت نرمافزار دیگر برای استارتاپهایی شبیه خود این شرکت در دههی ۱۹۷۰، مناسب نخواهد بود. شرکتهای بزرگ از این به بعد توانایی بیشتری در حبس کردن مشتریان در محصولات و پلتفرمهای خود خواهند داشت. استارتاپها دیگر نمیتوانند فعالیتی مشابه با استراتژی اوراکل در چهار دههی پیش داشته باشند. اوراکل ابتدا محصول خود را هماهنگ با یک رقیب قدیمی و بزرگ توسعه داد و سپس از همان برای فروش و درآمدزایی بهره برد.
داستان کپی شدن SQL توسط اوراکل، شباهت زیادی به کپی کردن جاوا توسط گوگل دارد. البته نمایندههای اوراکل هنوز این حقیقت را نمیپذیرند. در ادامهی مطلب پیشرو از زومیت، تاریخچهی عملکرد اوراکل را در کپی کردن SQL بررسی میکنیم.
اوراکل با کپی کردن رابط نرمافزار اختصاصی IBM، به قدرت رسید
محققان IBM در سالهای ابتدایی دههی ۱۹۷۰ به روشی جدید برای مدیریت دیتابیس دست پیدا کردند که بهنام مدل رابطهای شناخته شد. مدل مذکور، پیادهسازی کوئریهای پیچیده را در دیتابیس آسان میکرد. آنها همچنین زبان برنامهنویسی جدیدی بهنام SQL توسعه دادند که فرمولبندی کوئریها را برای کاربران آسان میکرد.
زبان برنامهنویسی SQL، جملهبندی یا سینتکس (Syntax) ساده و نزدیک به زبان انگلیسی دارد. حتی اگر فردی ناآشنا به زبانهای برنامهنویسی، یک عبارت را در زبان SQL بخواند، بهطور کلی متوجه عملکرد و هدف آن عبارت میشود. نکتهی دوم اینکه SQL یک زبان برنامهنویسی اعلانی (Declarative) است. بهبیان دیگر، کاربر اطلاعات مورد نیاز خود را مشخص میکند و نحوهی پیدا کردن آن، توسط زبان انتخاب میشود. ترکیب قابلیتهای SQL باعث شد تا افرادی بدون دانش و اطلاعات برنامهنویسی کامپیوتری هم به آن دسترسی پیدا کنند. در مجموع، افراد غیر برنامهنویس هم با کمی تمرین میتوانند عبارتهای SQL بنویسند که وظایف گستردهای را انجام میدهند.
گروهی از محققان IBM، در سال ۱۹۷۴ از ایدههای اولیهی SQL در پکیجی نرمافزاری بهنام System R استفاده کردند. در همان زمان، محققان شرکت که علاوهبر توسعهدهندهی نرمافزار، خود را دانشمند علوم کامپیوتر هم میدانستند، مقالههای تحقیقاتی شامل جزئیاتی از کار خود منتشر کردند که نحوهی کار و جزئیات زبان SQL را هم بهخوبی توضیح میداد. چند سال بعد، نسخهی کاربردی از System R در IBM توسعه یافت؛ اما آنها هیچگاه تصمیم نداشتند تا محصولی تجاری از نرمافزار مذکور تولید کنند. درنهایت شرکت در سالهای ابتدایی دههی ۱۹۸۰، دیتابیسی تجاری مبتنی بر SQL ارائه کرد.
لری الیسون و همکارانش، در سال ۱۹۷۷ ظرفیتهای محصول IBM را کشف کردند. آنها مدتی قبل یک شرکت مشاورهی نرمافزاری بهنام Software Development Laboratories راهاندازی کرده بودند، اما تصمیم داشتند تا روی فروش نرمافزار متمرکز شوند. الیسون متوجه شد که جزئیات منتشرشده در اسناد IBM، اطلاعات لازم را برای کپی کردن فناوری دیتابیس شرکت دارد. او همچنین به این نتیجه رسید که اگر محصول خود را هماهنگ با استاندارد IBM SQL منتشر کند، ورود مناسبی به بازار خواهد داشت.
لری الیسون و همکارانش بهسرعت متوجه ظرفیتهای بالای SQL در دنیای دیتابیس شدند
یکی از طراحان SQL بهنام دونالد چمبرلین ادعا میکند الیسون بهقدری بهدنبال هماهنگی با فناوری IBM بود که شخصا در سال ۱۹۷۸ با او تماس گرفت و جزئیات بیشتری را پیرامون پیادهسازی SQL در IBM پرسید. او اخباری را پیرامون توسعهی System R شنیده بود و میخواست محصولش هرچه بیشتر با آن هماهنگ باشد. الیسون حتی تمایل داشت تا کدهای خطا را نیز مشابه نرمافزار IBM توسعه دهد که باوجود استقبال چمبرلین، با مخالف رؤسای او در IBM روبهرو شد.
مقالهای که IBM در توضیح عملکرد System R منتشر کرد، جزئیات زیادی را از نحوهی کار SQL شرح میداد. الیسون و تیمش با قدرت از جزئیات منتشرشده استفاده کردند و اولین نسخه از دیتابیس اوراکل در سال ۱۹۷۹ منتشر شد. از همان نسخههای ابتدایی، تبلیغ زیادی روی این حقیقت میشد که ریشهی دیتابیس اوراکل از IBM قدرت گرفته است. روی یکی از برگههای تبلیغاتی دیتابیس اوراکل نوشته شده بود:
رابط کاربری اوراکل، SQL است؛ زبان برنامهنویسی رابطهای که توسط گروه تحقیقات پیشرفتهی IBM توسعه یافت.
اوراکل حدود دو سال زودتر از IBM وارد بازار محصولات دیتابیسی شد. درنتیجه آنها توانستند سهم بازار مناسبی را تصاحب کنند و سالها بهعنوان فرمانروای بازار شناخته شوند. برخی از محققانی که در پروژهی System R حاضر بودند هنوز معتقد هستند انتشار جزئیات فروان از SQL توسط IBM، تصمیم صحیحی نبود. کاملا واضح است که همین اطلاعات منجر به پیروزی الیسون بر IBM در بازار دیتابیس شد. البته برخی دیگر میگویند انتشار اطلاعات، هیاهوی خبری لازم را برای IBM ایحاد کرد تا فناوری را در توسعههای بعدی جدیتر بگیرد.
تاریخ تکرار میشود؟
مقالهها و کتابهای متعدد تاریخی نشان میدهند که اوراکل هیچ مجوزی برای SQL از IBM دریافت نکرده است. افراد نزدیک به هردو شرکت نیز میگویند هیچ سندی مبنی بر دریافت مجوز وجود ندارد. ازطرفی، گوگل پیش از استفاده از جاوا در اندروید، تلاش کرد تا مجوز آن را از اوراکل دریافت کند و درنهایت بدون مجوز به کار خود ادامه داد.
وقتی گوگل در میانهی دههی ۲۰۰۰، کار روی جاوا را شروع کرد، جاوا تحت مالکیت سان میکروسیستمز قرار داشت. شرکت یادشده تا سال ۲۰۲۰ بهصورت مستقل فعالیت میکرد و تحت مالکیت اوراکل نبود. اهالی مانتین ویو در سال ۲۰۰۵ به شرکت سان مراجعه کردند تا مجوز برای کار با جاوا دریافت کنند. گوگل تأکید میکند که درخواست آن سال، مربوط با مجوز استفاده از رابط کاربری جاوا نبوده است، چون از نظر گوگل، این بخش شامل قانون کپیرایت نمیشود. بههرحال آنها ادعا میکنند که ابتدا با سان به توافق بر سر مجوزهای جاوا رسیدهاند. قرارداد سان و گوگل اینگونه بود که گوگل با پرداخت ۲۸ میلیون دلار، مجوز استفاده از پتنتهای مرتبط با جاوا را شامل نام تجاری جاوا و موارد مشابه، دریافت کرد.
گوگل در دفاعیهی خود ادعا میکند که مذاکرات با سان، پس از مدتی بهخاطر مواردی بهجز مسائل مالی، لغو شد. درواقع سان از گوگل تقاضا کرده بود که نقش بیشتری در توسعههای آتی اندروید داشته باشد که اهالی مانتین ویو با آن مخالفت کردند و تصمیم به توسعهی نسخهای اختصاصی از جاوا گرفتند. چنین تصمیمی به این معنا بود که گوگل باید از مراحل تدوین توابع زبان جاوا، شروع به طراحی زبان میکرد. کلمات، قوانین جملهبعدی، نام و انواع آرگومان برای توابع استاندارد، همگی باید مجددا توسط گوگل طراحی میشدند. بههرحال گوگل (بهجز چند مورد که هنوز مورد بحث است)، کد پایهای تعیینکنندهی مشخصات مذکور را کپی نکرد و (مانند رویکرد اوراکل نسبت به SQL) مجددا تمامی کدها را از پایه نوشت. کدهای آنها نتایجی مشابه با جاوا سان میکروسیستمز داشتند.
باوجود اینکه گوگل بدون دریافت مجوز از سان، زبان و سیستمعامل خود را توسعه داد، زمانیکه خبر رونمایی اندروید مبتنی بر جاوا منتشر شد، مدیرعامل سان میکروسیستمز ابراز خرسندی کرد. جاناتان شوارتز پس از انتشار خبر رونمایی از اندروید نوشت:
من میخواستم از طرف تمامی همکارانم در سان، تبریک قلبی خود را به گوگل اعلام کنم که پلتفرم جدید موبایلی خود، اندروید را مبتنی بر جاوا و لینوکس معرفی کردند.
واکنش سان میکروسیستمز نسبت به اندروید و استفاده از جاوا در آن، پس از خریده شدن شرکت توسط اوراکل تغییر کرد. با افزایش بهکارگیری اندروید در اکوسیستم موبایل، مالکان جدید سان فرصت را برای دریافت چند میلیارد دلار خسارت از گوگل، مناسب دیدند. اوراکل کمی پس از اینکه فرایند خرید سان به پایان رسید، از گوگل شکایت کرد.
آیا داستان جاوا و SQL تفاوت دارد؟
یک تفاوت اساسی بین داستان گوگل و IBM وجود دارد: گوگل محصولی را کپی کرد که سان قبلا به بازار عرضه کرده بود. درمقابل، اوراکل محصولی را کپی کرد که IBM هنوز ارائه نکرده بود. آنها تنها از مقالههای منتشرشده توسط IBM استفاده کردند تا چگونگی کار دیتابیسهای مبتنی بر SQL را درک کنند. ازطرفی، برخی کارشناسان کپیرایت میگویند که این تفاوت ازلحاظ قانون کپیرایت، صادق نیست. اگر کپی کردن API از محصول موجود در بازار، ناقض کپیرایت باشد، کپی کردن API از سند اطلاعرسانی محصول نرمافزاری نیز نقض قانون محسوب میشود.
جیمز گریملمن، کارشناس کپیرایت میگوید مقالهی IBM در توضیح SQL از موارد تحت حفاظت قانون کپیرایت محسوب میشود. از نظر او کپی کردن اطلاعات از سند منتشرشده، مصداق بارز کپی کردن مشخصات محسوب میشود. گریملمن درنهایت اعتقاد دارد که اگر مشخصات SQL را تحت قانون کپیرایت تصور کنیم، تفاوتی نمیکند که مشخصات از خود نرمافزار کپی شده باشند یا محتوای سند اطلاعرسانی.
سوالی دیگری که دربارهی تفاوت دو پرونده مطرح میشود این است که آیا کپی کردن یک زبان برنامهنویسی با کپی کردن API مرتبط با آن تفاوت دارد؟ برای پاسخ به این سؤال باید کمی به محتوا و شیوهی عملکرد جاوا دقت کنیم.
داستان جاوا و اندروید، شباهت زیادی به SQL و محصول اوراکل دارد
جاوا دو بخش اصلی دارد. یکی از آنها مشخصات هستهای زبان مانند جملهبندیها و معنای عبارتها را مشخص میکند و دیگری Java API نام دارد. در بخش API، کتابخانهای از کلاسها و توابع را میبینیم که با هر سیستم جاوا مدرن ارائه میشوند. API جاوا بسیار وسیع بوده و در طبقهبندی عظیمی از پکیجها منظم شده است. برخی از پکیجها چندین تابع را در خود جای دادهاند. قاضی فدرال ایالت کالیفرنیا، ویلیام آلسوپ، که در دادگاه بدوی رأی را به نفع گوگل صادر کرده بود میگوید آنها از ۳۷ پکیج، ۶۱۶ کلاس شیء و ۶،۰۸۸ تابع از API جاوا استفاده کردهاند.
استفادهی گوگل از API جاوا یعنی آنها نام، نوع آرگومانها و خروجی مورد انتظار ۶،۰۸۸ تابع جاوا را کپی کردهاند. البته گوگل کدی که فعالیت اصلی را در داخل تابع انجام میدهد، کپی نکرد. درواقع مهندسان شرکت، این توابع را از پایه نوشتهاند و با روشی (احتمالا) کاملا متفاوت از روش اصلی جاوا، همان نتایج ریاضیاتی را بهدست آوردهاند. بهعنوان مثال یکی از پکیجهای API که گوگل از جاوا کپی کرد، java.lang.Math نام دارد که توابعی همچون max دارد (همانطور که از نام تابع برمیآید، دو عدد صحیح را بهصورت ورودی دریافت و بزرگترین را بهعنوان خروجی ارائه میکند). قطعا تابعی همچون max عبارتی کاملا ثابت و پذیرفتهشده دارد که دو برنامهنویس باتجربه از دو شرکت متفاوت، از همان عبارت برای تابع خود استفاده میکنند، اما انتظار میرود در توابع پیچیدهتر، شاهد تفاوت در نامگذاریها باشیم.
اوراکل از گوگل بهخاطر کپی کردن نام و آرگومانهای توابع موجود در API شکایت کرد. درواقع شکایت آنها شامل کپی کردن هستهی زبان برنامهنویسی جاوا نمیشود. ظاهرا اوراکل مشکلی با توسعهی یک زبان برنامهنویسی توسط گوگل با قابلیت تفسیر جملات هستهای جاوا ندارد. آنها تنها زمانی شاکی شدند که گوگل کتابخانهی بزرگ توابع پشتیبان جاوا را نیز کپی کرد. اگر این فرضیه را در نظر بگیریم، متوجه تفاوت داستان جاوا و SQL میشویم.
در سال ۱۹۷۹ که اوراکل SQL را از IBM کپی کرد، این زبان بنرامهنویسی دارای کتابخانهی توابع پشتیبان نبود. درنتیجه اگر مپی کردن هستهی زبان صحیح باشد و کپی کردن API را خلاف قانون بدانیم، اوراکل براساس نظریهی و تفسیر خودش، هیجچ اقدام اشتباهی را در ارتباط با کپی کردن SQL انجام نداده است. ازطرفی گریملمن اعتقاد دارد خطکشی بین زبان و API در موارد قانون کپیرایت، اقدام صحیحی نیست.
آیا متمایز دانستن هستهی زبان و API مرتبط با آن، در قانون کپیرایت منطقی بهنظر میرسد؟ بهعنوان مثال جاوا بهجای انجام عمل جمع در عبارتی همچون n=a+b میتوانست از کاربران بخواهد که یک API بهنام sum را فراخوانی کنند. چرا قانون کپیرایت باید رشتهی sum با پیشوند و پرانتزهای مرتبط را تحت حمایت خود ببیند، اما علامت + تحت حمایت نباشد؟ اگر یکی از آنها شامل قانون کپیرایت است، دیگری هم باید باشد.
API اساسا زبانی برای ارتباط بین برنامههای کامپیوتری محسوب می شود. زبانهایی همچون SQL و Java هم ذاتا API هستند. زبانهای برنامهنویسی کاملتر، جملهبندیهای پیچیدهتری نسبت به APIها دارند. ازطرفی المانهای قابل حفاظت با قانون کپیرایت مانند کلمهها و انواع آرگومان و قوانین جملهبندی عموما با هم شباهت دارند. اگر بتوان نام توابع را در یک API مرسوم با قانون کپیرایت حمایت کرد، مانند این است که کلمات را در یک زبان برنامهنویسی کاملا کامپیوتری تحت حمایت قانون قرار دهیم. چنین کلماتی میتواند شامل لغات مرسومی همچون select و from و where هم بشود.
تصمیم نهایی دادگاه عالی
نکتهی نگرانکننده این است که هنوز هیچ ایدهای دربارهی حوزهی تأثیر شکایت کپیرایتی اوراکل در ارتباط با API نداریم. تا پیش از مطرح شدن شکایت اوراکل در سال ۲۰۱۰، بسیاری از فعالان صنعت سختافزار تصور میکردند که رابط کاربری نرمافزارها در قانون کپیرایت جایی ندارد. اگر اوراکل در پرونده علیه گوگل پیروز شود، احتمالا هرجومرجی عظیم در دنیای نرمافزار رخ خواهد داد. شاید دادگاه نهایی حتی کپیرایت API را به بخشهای گوناگون زبانهای برنامهنویسی هم گسترش دهد. شاید هم نقطهی تمایزی بین خصوصیات زبان برنامهنویسی و بخشهای API آن ایجاد شود. درنهایت هنوز عدم قطعیتهای زیادی در پروندهی حاضر دیده میشود و شاید سالها کشمکش قانونی برای حل آنها نیاز باشد.
رأی نهایی دادگاه، نهتنها دو شرکت درگیر، بلکه کل صنعت نرمافزار را تحت تأثیر قرار میدهد
دادگاه عالی آمریکا حدود دو هفتهی دیگر در تاریخ ۲۴ مارس، جلسهای را برای بررسی پروندهی گوگل و اوراکل برگزار میکند. گوگل در بسیاری از پروندههای بدوی پیروز شد، اما هریک از رأیهای صادره در دادگاههای تجدید نظر رد شدند. بههرحال وکلای مانتین ویو تلاش میکنند تا در دادگاه عالی، روی صحیح بودن رأی دادگاههای بدوی و تصمیم اشتباه دادگاههای تجدید نظر، تأکید کنند.
پیروزی گوگل از دو مسیر احتمال دارد. مسیر اول که به نفع آنها و بسیاری از فعالان صنعت نرمافزار خواهد بود، هرگونه قرار گرفتن رابطهای نرمافزاری را در قانون کپیرایت ممنوع میکند. اکثر فعالان پیش از شکایت گوگل تصور میکردند که قانون اینگونه باشد. بههرحال چنین رأی احتمالی، سد محکمی در برابر شکایتهای احتمالی مرتبط با کپیرایت API در آینده خواهد بود. در سناریوی دوم شاید دادگاه حق کپیرایت را برای API محفوظ بداند اما روندهای کپی توسط گوگل را در چارچوب رویکرد منصفانه تشخیص دهد. چنین روندی چند میلیارد دلار به نفع گوگل خواهد بود، اما مانع از شکلگیری پروندههای مشابه نمیشود.
استفادهی منصفانه یک مفهوم پیچیده در حقوق محسوب میشود. درنتیجه اگر دادگاه عالی، فعالیت گوگل را در دستهی استفادهی منصفانه قرار دهد، از این به بعد هر شرکت نرمافزاری نگران خواهد بود که محصولش توسط رقیب یا دادگاه احتمالی، در دستهی استفادهی منصفانه تفسیر بشود یا نشود. اکثر شرکتهای نرمافزاری، قدرت حقوقی گوگل را ندارند و هر پروندهی حقوقی (حتی اگر به نفع آنها تمام شود) بهمعنای هزینههای بسیار سنگین خواهد بود. درنتیجه شاید همهی فعالان صنعت نرمافزار باید امیدوار به پیروزی گوگل بر اوراکل باشند.