رویه های تکامل نرم افزارهای کد منبع باز بخش اول

نویسنده: شادیار خدایاری

منبع: محله ی نابینایان

دوستان گرامی

این پست را منتشر کردم که فرصتی بشود که در مورد چند موضوع بیشتر صحبت کنیم. چند مفهوم را ابهام زدایی کنم و همچنین کمک کنم که کاربران خود بتوانند بطور مستقل بدون کمک من یا هیچ کس دیگری، خواسته های خودشان را در مورد نرم افزارهای کد منبع باز مانند ایسپیک ان وی دی ای یا حتی اندروید پیگیری کنند.

در بخش اول همان گونه که از عنوان آن مشخص است در مورد رویه های نرم افزارهای با کد منبع باز صحبت می کنم.

و در بخش دوم بیشتر در مورد ایسپیک و ان وی دی ای و راه های مشارکت مستقل شما صحبت خواهم کرد. شما به هیچ کس دیگر نیاز ندارید نماینده یا پارتی لازم ندارید خودتان می توانید فعال باشید.

اول در مورد درخواستهای توسعه کاربران ایسپیک مطالبی را عرض کنم.

گاه و بی گاه برخی کاربران ایسپیک با من تماس می گیرند و گاه هم پیام های شان از طریق دوستانم به دست من می رسد. و تقاضاهای جور و وا جوری را مطرح می کنند که گاه کاملا متضاد هم هستند. و تمام آنها انتظار دارند که خواسته هایشان انجام شود. البته خواسته های تمام آنها محترم و معقول است ولی خودتان قضاوت کنید،

مثلا وقتی یک گروهی از کاربرها می گویند یک کاری کنید ایسپیک ایموجی ها را بخواند. چند روز بعد چند تای دیگر پیام می دهند یک کاری کنید ایسپیک ایموجی ها را نخوانَد. البته بر خلاف تصور عموم این ایسپیک نیست که اموجی ها را می خواند این ربطی به ایسپیک ندارد. در بخش دوم در مورد این موضوع بیشتر صحبت می کنیم.

اولا برخی از خواسته های شما به زبان فارسی محدود نیست بلکه نیازمند تغییر در سطح کل نرم افزار است همانند مثال بالا و این نیاز به موافقت برنامه نویسهای کل 101 زبان ایسپیک دارد یا دست کم موافقت مدیران ارشد. این کار هم به سادگی ممکن است باید بروید پیشنهاد خود را مطرح کنید و ببینید نظر دیگران چیست. اگر اکثریت موافق باشند خوب انجام می شود.

این یک مثال بود، تا نشان دَهَم که خواسته و نیاز یک کاربر، لزوما نیاز همه نیست. به همین دلیل دوستان عزیز من در بسیاری از موارد باید بی طرفی خود را حفظ کنم و شما کاربران هستید که باید بروید پیشنهاد خود را مطرح کنید. چون چیزی که شما می خواهید اگر من پیگیر شوم یک دسته دیگر از کاربران شاکی می شوند. اگر پیشنهاد شما در کامیونتی پذیرفته شد خوب انجام می شود. پس امیدوارم پی برده باشید که چرا وقتی به من می گویید: شادیار شما که در مورد ایسپیک واردتر هستید فلان پیشنهاد را مطرح کنید، من مرتب در پاسخ می گویم لطفا خودتان بروید و پیشنهاد کنید. در بخش دوم چگونگی این کار را بطور کلی شرح می دهَم.

یکی از کاربران می گفت: مگر این برنامه کد منبع باز نیست خوب کاری ندارد، تو برو یک ایسپیک درست کن برای فارسی زبان ها. به اصطلاح برنامه را دو شاخه کن.

دوستان نرم افزارهای کد منبع بازِ چندین و چند ساله که کاربران زیادی دارند، مثل ان وی دی ای یا ایسپیک کد بسیار بزرگی دارند بالق بر صدها هزار خط کد. واقعا نگهداری و توسعه آن از دست یک نفر بر نمی آید. اگر قرار بود با کد منبع باز نباشند، نگهداری خصوصی آن یک تیم می خواهد که تمام وقت روی آن کار کنند. و این یعنی استخدام چند برنامه نویس تمام وقت. از این گذشته تخصص های مختلفی هم نیاز دارد. مثلا ایسپیک فقط واحد پردازش گفتار طبیعی که ندارد بخش تولید آوا نیز دارد که نیازمند متخصصین پردازش سیگنال است. و فیلترهای صوتی که بیشتر به الکترونیک و مهندسی صوت نزدیک است. اینها که همه تخصص های یک نفر نیست.

اگر شما می بینید این گونه برنامه ها دارد توسعه پیدا می کند به این دلیل است که تعداد خیلی زیادی برنامه نویس هر کدام یک گوشه کار را گرفته اند و وقت محدودی را برای آن صرف می کنند.

بعلاوه به دلیل کاربران زیاد این برنامه ها توانسته اند اعتبار و اعتماد مردم را بدست بیاورند و گروه ها یا موسساتی به آنها کمک مالی می کنند. مثلا ان وی دی ای در سایت خود لیست اسپانسرهای خود را منتشر می کند. چندین شرکت بین المللی مشهور به آن کمک می کنند و موسسه های عامُل منفعه.

حالا بیایید تصور کنید ما پروژه ایسپیک را دو شاخه کنیم، ببینیم چه می شود. من در آوردی تی تی اس را ایجاد می کنیم.

اولا: دیگر خبری از کمکهای مالی و غیر مالی دیگر نیست. خودمان هستیم و خودمان.

دوم: دیگر آن گروه بزرگ برنامه نویسان را از سراسر دنیا نداریم. حالا باید برویم برنامه نویس استخدام کنیم کارمان را پیش ببرند. چون کار یکی دو نفر نیست.

حالا همان دوست مبتکرمان می آید می گوید که این که کاری نداره هر چند وقت یک بار میریم کد پروژه اصلی یه رو بر می داریم میاریم. متن باز است دیگه. ما هم که ایرانی اصلا کارمون است شاخه شاخه کردن دسته درست کردن و کار تکراری و حرفهای تکراری زدن البته به نام خودمون!

آهان اینجا همونجایی است که به قول معروف فکر کردی خیال کردی جانم. وقتی شما پروژه را دو شاخه کردی برای خودت اومدی کد نوشتی پروژه اصلی هم کار خودش را کرده، کم کم دیگه کد اونها با بخشهای زیادی از کد تو مطابقت نداره که همین طوری کپی کنی بیاریش اینجا. فکر کردی تحقیقهای دوره دانشجویی است که کپی پیست بزنی بره؟ در یک برنامه کدهای بخشهای مختلف همدیگر را لازم دارند. و باید با هم هماهنگ باشند. هماهنگ کردن آنها یعنی این که بشینی همه را بخوانی و آنجا که لازم است کد آنها را اصلاح کنی. و این کار را باید هر بار از اول انجام دهی.

انقدر این فکر نا ممکن است که در دنیای واقعی پروژه هایی که شاخه می شوند برای همیشه از پروژه های اصلی جدا می شوند. بگذارید یک مثال جالب را بیاورم کد هسته مرورگر کروم و فایرفاکس یکی است. کروم از فایرفاکس شاخه شده است. و ملاحظه می کنید که کروم راه خودش را رفته است.

سوم: اگر زد و مثلا آن برنامه نویسه دیگه نخواست کار کنه احتمالا دیگه هیچ کس از کد سر در نمی آورد چون همان طور که عرض کردم به تدریج کد پروژه مندراوردی تی تی اس اختلافش با کد اصلی زیاد می شود. و فاتحه اش خوانده است.

من مدتی است که فکر می کردم ریشه این وضع چیست. و با گفتگو با برخی کاربران متوجه شدم که ریشه این موضوع به دلیل درک ناصحیح از مفهوم نرم افزار آزاد و با کد منبع باز به وجود آمده است.

بگذارید به چند تصور اشتباه در مورد برنامه های کد منبع باز بپردازیم.

این که برخی تصور می کنند، کد برنامه در دسترس است یعنی هر کاری می توان با آن کرد اشتباه است. توسعه این نرم افزارها روندی پیچیده و سخت گیرانه دارد. این طور نیست که هر کسی آمد دست به کد زد همه می گویند دمت گرم. چه خفن. تغییرات باید اول مورد تایید مدیران باشد، معمولا برای تصمیم گیری که چه انجام شود یا نشود. یک کامیونتی یا به قول خودمان گروه وجود دارد که اعضای آن با هم بحث می کنند و به توافق می رسند گاه رای گیری می شود. و بعد مدیران کنترل می کنند که تصمیمات گرفته شده به درستی اجرا شود. هر یک از شما هم می توانید عضو این کامیونیتی ها باشید و در بحث ها شرکت کنید. فقط کافی است به سایت هر پروژه سری بزنید. البته به زبان انگلیسی.

کدی که به پروژه های کد منبع باز ارسال می شود، اگر موارد مورد نظر را رعایت نکند فورا رد می شود. و اصلا به پروژه اضافه نمی شود. و برنامه نویس آن هم در سایتی که کد پروژه های کد منبع باز نگهداری می شود، حساب کاربری دارند و اگر کد کسی رد شود، آن فرد نمره منفی می گیرد. و این نمره های منفی در پروفایل آن شخص هم قابل مشاهده است و کلا گند می زند به آینده کاری آن برنامه نویس.

اما معمولا لیستی از گزارش خرابی وجود دارد که برنامه نویسان سعی بر رفع موارد گزارش شده دارند. و رفع این خطاها دیگر رویه تصمیم گیری ندارد بلکه فقط کد نوشته شده تست می شود که صحیح باشد امن باشد و واقعا مشکل را بدون خراب کردن جای دیگر رفع کرده باشد. تازه بعد از آن یک نسخه تستی منتشر می شود کاربران داوطلب تست می کنند و بعد از مدتی به عنوان نسخه نهایی منتشر می شود.

این روند را شما در ان وی دی ای بتا و اسنپ شات و نسخه رسمی حتما دیده اید.

این که برخی تصور می کنند، نرم افزار کد منبع باز مجوز انتشار ندارد اشتباه است. مجوز خاص خود را دارد که در آن ذکر می شود اجازه باز نشر دارد با شرط و شروط مشخص. عدم رعایت آن شروط خود جرم محسوب می شود.

سخن پایانی بخش اول:

دوستان کارهای بزرگ فقط با کار گروهی ممکن می شود. با همکاری و هماهنگی با دیگران. دنیا به این سمت می رود. گروه های بزرگ جهانی شکل می گیرند.

این بار که مطلبی را در ویکی پدیا می خوانید یک لحظه بیندیشید، دارید از مطالب یک بنیاد جهانی که هزاران داوطلب از سراسر دنیا در حال تکمیل هر روزه آن هستند، استفاده می کنید.

این بار که در انتهای یک سایت خواندید قدرت گرفته از وردپرس. لحظه ای بیندیشید، البته اگر دوستان هموطن این عبارت را از پایین سایت حذف نکنند و جایش ننویسند قدرت گرفته از جفنگ رایانه، هر بار که از یک سایت که با وردپرس نوشته شده استفاده می کنید، دارید از یک بنیاد جهانی با هزاران داوطلب بهره می برید. که برای نسخه بعدی آن در تلاش هستند. همین سایت گوش کن هم با وردپرس اجرا می شود.

اگر مرورگر کروم دارید یا فایر فاکس اگر لینوکس استفاده می کنید اگر در وی اس کد برنامه می نویسید، همه و همه برنامه هایی با کد منبع باز هستند.

حالا یک سوال کجا شنیده اید کاربرهای یک کشور در حال توسعه که نه تکنولوژی اش را دارند نه منابع اش را و نه خیلی زیرساختهای دیگر بیایند بگویند ما می خواهیم فلان برنامه خودمان را راه بیندازیم. از اصلش هم بهتر. معمولا آدمها بجایش به همین پروژه موجود کمک می کنند تا بهتر شود. بله در مواردی پروژه ها شاخه می شوند ولی موارد واقعا نادر باید سرمایه انسانی مالی و امکاناتش هم وجود داشته باشد. از همه مهمتر باید دلیلی وجود داشته باشد بسیار قوی که بجای آن که سرمایه ها انسانی و مالی دست به دست هم بدهند یک ساخته را بهتر کنند نیروها پراکنده شوند یکی دیگر بسازند.

بجای این که دوستان خلاق و مبتکر ما بیایند هر روز یک جور این برنامه های کد منبع باز و بسته را انگولک کنند اگر واقعا در خودتان می بینید که کاری از دستتان بر می آید چرا در پروژه های جهانی با انجام یک کار کوچک مشارکت نمی کنید. تا همه در نتیجه زحمت شما سهیم بشوند و تا سالهای سال نیز باقی باشد. چرا این کار را انجام نمی دهید. چرا این انرژیهای پراکنده را در یک مسیر درست تجمیع نمی کنید.

حتی اگر برنامه نویس نیستید می توانید باز هم کمک کنید. می توانید چند خط از راهنمای آن را به زبان خود ترجمه کنید. می توانید خود برنامه را به زبان خود ترجمه کنید. اگر انگلیسیتان بهتر است می توانید در نوشتن مستندات و راهنمای پروژه کمک کنید می توانید اگر امکانش را دارید پول های کوچک به پروژه اعانه دهید.. و خیلی کارهای دیگر که در بخش دوم بیشتر به آنها می پردازم.

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

حالا تصور کنید اگر شما تنها یک خط از ان وی دی ای را ترجمه کنید و در ترجمه آن سهیم شوید. کار راشاد نیز سبکتر می شود. البته که باید با دیگر مترجمین و سرپرستان هماهنگ باشید به کار شما نظارت می شود. برخی تصور نکنند که همین طوری می ریم یک فایل را باز می کنیم یک چیزی می نویسیم و میریم.

اما اگر همه چیز را به درستی انجام دهید، تا سالها همه از تلاش شما بهره مند می شوند. هر بار که کسی آن پنجره را باز می کند. ترجمه شما را می خواند. این باهال نیست! شما در کار بزرگی مشارکت کرده اید. بخشی از ترجمه ان وی دی ای به ده ها زبان دنیا. این واقعا زیبا است فوق العاده است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

یک × پنج =

لطفا پاسخ عبارت امنیتی را در کادر بنویسید. *