یک انشعاب چیست؟

توسعه

در مورد بیت‌کوین کش همیشه می‌شنوید که این رمزارز یک انشعاب سخت(به انگلیسی: hard fork) از بیت‌کوین است. اما یک انشعاب چه چیز را می‌رساند؟ و سخت بودن آن یعنی چه؟ انشعاب معمولا در مورد یک نرم‌افزار یا سخت‌افزار است. البته در تئوری چیزی مانند یک کتاب نیز می‌تواند انشعاب داشته باشد. اما تاکنون چنین چیزی ندیده‌ام. کتاب‌ها معمولا توسط جامعه‌های آزاد و به صورت گروهی توسعه پیدا نمی‌کنند. اما نرم‌افزار‌های آزاد معمولا توسط جامعه‌ها توسعه داده می‌شوند.

واژه‌نامهٔ جارگون فایل یک واژه‌نامه از فرهنگ و اصطلاحات برنامه‌نویس‌های خبره یا «هکر‌ها» است. این واژه‌نامه، انشعاب(fork) را چنین چیزی تعریف می‌کند:

در جامعهٔ متن‌باز، انشعاب زمانی اتفاق می‌افتد که دو یا تعداد بیش‌تری نسخه از یک نرم‌افزار به صورت موازی توسعه داده می‌شوند. و این نسخه‌ها در گذشته یک پایه کد مشترک داشتند. […] این نباید با یک شاخهٔ توسعه اشتباه گرفته شود که در آن، تغییرات نهایتا در نسخهٔ اصلی نرم‌افزار اعمال می‌شوند.

در ادامه البته جزئیات بیش‌تری توضیح می‌دهد که خارج از این بحث است. انشعاب‌ها معمولا زمانی اتفاق می‌افتند که افراد جامعه دچار اختلاف نظر شده‌اند. سپس هر کدام راه خود را می‌روند. معمولا وقتی تعداد کمی از توسعه‌دهنده‌های یک نرم‌افزار از بدنه جدا می‌شوند، به چیزی که آن‌ها توسعه می‌دهند یک «انشعاب» گفته می‌شود.

برای مثال تعداد کمی از جامعهٔ بیت‌کوین از آن جدا شدند. چرا که با دیدگاه‌های دیگران موافق نبودند. در نتیجه یک انشعاب به اسم «بیت‌کوین کش» ایجاد کردند. بعضی مواقع، مثل داستان بیت‌کوین و بیت‌کوین کش، هر دو در حال جنگیدن با هم برای از میدان به در کردن دیگری هستند. اما در جامعه‌های متن‌باز همیشه این‌طور نیست. بعضی مواقع اختلاف نظرها سلیقه‌ای هستند. و هر کاربر بنا به سلیقه و نیاز خودش یکی از انشعاب‌ها را انتخاب می‌کند.

تا این‌جا در مورد انشعاب توضیح داده شد. اما «سخت» یا «نرم» بودن این انشعاب‌ها به چه معنی است؟ بسیاری از مواقع، نرم‌افزار‌ها با دنیای بیرون در تماس هستند. برای مثال ممکن است داده‌ها را به قالبی خاص ذخیره کنند. یا این‌که با شبکه تعامل داشته باشند. زمانی که نرم‌افزار می‌خواهد با دنیای خارج در تماس باشد، نیاز به یک قرارداد برای چگونگی ارتباط است. به انگلیسی به آن پروتکل(protocol) می‌گویند. زمانی که قرارداد یک انشعاب با قرارداد نرم‌افزار اصلی سازگار باشد، به آن انشعاب نرم می‌گوییم. اما زمانی که سازگار نباشند، انشعاب، یک انشعاب سخت است.

اگر در مورد جنگ اندازه بلوک(به انگلیسی: block size war) خوانده باشید، متوجه می‌شوید که اختلاف نظر دربارهٔ قسمتی از قرارداد یا پروتکل بوده. طبیعتا بیت‌کوین کش یک انشعاب سخت است.