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

دوستان گرامی
این پست را منتشر کردم که فرصتی بشود که در مورد چند موضوع بیشتر صحبت کنیم. چند مفهوم را ابهام زدایی کنم و همچنین کمک کنم که کاربران خود بتوانند بطور مستقل بدون کمک من یا هیچ کس دیگری، خواسته های خودشان را در مورد نرم افزارهای کد منبع باز مانند ایسپیک ان وی دی ای یا حتی اندروید پیگیری کنند.
در بخش اول همان گونه که از عنوان آن مشخص است در مورد رویه های نرم افزارهای با کد منبع باز صحبت می کنم.
و در بخش دوم بیشتر در مورد ایسپیک و ان وی دی ای و راه های مشارکت مستقل شما صحبت خواهم کرد. شما به هیچ کس دیگر نیاز ندارید نماینده یا پارتی لازم ندارید خودتان می توانید فعال باشید.
اول در مورد درخواستهای توسعه کاربران ایسپیک مطالبی را عرض کنم.
گاه و بی گاه برخی کاربران ایسپیک با من تماس می گیرند و گاه هم پیام های شان از طریق دوستانم به دست من می رسد. و تقاضاهای جور و وا جوری را مطرح می کنند که گاه کاملا متضاد هم هستند. و تمام آنها انتظار دارند که خواسته هایشان انجام شود. البته خواسته های تمام آنها محترم و معقول است ولی خودتان قضاوت کنید،
مثلا وقتی یک گروهی از کاربرها می گویند یک کاری کنید ایسپیک ایموجی ها را بخواند. چند روز بعد چند تای دیگر پیام می دهند یک کاری کنید ایسپیک ایموجی ها را نخوانَد. البته بر خلاف تصور عموم این ایسپیک نیست که اموجی ها را می خواند این ربطی به ایسپیک ندارد. در بخش دوم در مورد این موضوع بیشتر صحبت می کنیم.
اولا برخی از خواسته های شما به زبان فارسی محدود نیست بلکه نیازمند تغییر در سطح کل نرم افزار است همانند مثال بالا و این نیاز به موافقت برنامه نویسهای کل 101 زبان ایسپیک دارد یا دست کم موافقت مدیران ارشد. این کار هم به سادگی ممکن است باید بروید پیشنهاد خود را مطرح کنید و ببینید نظر دیگران چیست. اگر اکثریت موافق باشند خوب انجام می شود.
این یک مثال بود، تا نشان دَهَم که خواسته و نیاز یک کاربر، لزوما نیاز همه نیست. به همین دلیل دوستان عزیز من در بسیاری از موارد باید بی طرفی خود را حفظ کنم و شما کاربران هستید که باید بروید پیشنهاد خود را مطرح کنید. چون چیزی که شما می خواهید اگر من پیگیر شوم یک دسته دیگر از کاربران شاکی می شوند. اگر پیشنهاد شما در کامیونتی پذیرفته شد خوب انجام می شود. پس امیدوارم پی برده باشید که چرا وقتی به من می گویید: شادیار شما که در مورد ایسپیک واردتر هستید فلان پیشنهاد را مطرح کنید، من مرتب در پاسخ می گویم لطفا خودتان بروید و پیشنهاد کنید. در بخش دوم چگونگی این کار را بطور کلی شرح می دهَم.
یکی از کاربران می گفت: مگر این برنامه کد منبع باز نیست خوب کاری ندارد، تو برو یک ایسپیک درست کن برای فارسی زبان ها. به اصطلاح برنامه را دو شاخه کن.
دوستان نرم افزارهای کد منبع بازِ چندین و چند ساله که کاربران زیادی دارند، مثل ان وی دی ای یا ایسپیک کد بسیار بزرگی دارند بالق بر صدها هزار خط کد. واقعا نگهداری و توسعه آن از دست یک نفر بر نمی آید. اگر قرار بود با کد منبع باز نباشند، نگهداری خصوصی آن یک تیم می خواهد که تمام وقت روی آن کار کنند. و این یعنی استخدام چند برنامه نویس تمام وقت. از این گذشته تخصص های مختلفی هم نیاز دارد. مثلا ایسپیک فقط واحد پردازش گفتار طبیعی که ندارد بخش تولید آوا نیز دارد که نیازمند متخصصین پردازش سیگنال است. و فیلترهای صوتی که بیشتر به الکترونیک و مهندسی صوت نزدیک است. اینها که همه تخصص های یک نفر نیست.
اگر شما می بینید این گونه برنامه ها دارد توسعه پیدا می کند به این دلیل است که تعداد خیلی زیادی برنامه نویس هر کدام یک گوشه کار را گرفته اند و وقت محدودی را برای آن صرف می کنند.
بعلاوه به دلیل کاربران زیاد این برنامه ها توانسته اند اعتبار و اعتماد مردم را بدست بیاورند و گروه ها یا موسساتی به آنها کمک مالی می کنند. مثلا ان وی دی ای در سایت خود لیست اسپانسرهای خود را منتشر می کند. چندین شرکت بین المللی مشهور به آن کمک می کنند و موسسه های عامُل منفعه.
حالا بیایید تصور کنید ما پروژه ایسپیک را دو شاخه کنیم، ببینیم چه می شود. من در آوردی تی تی اس را ایجاد می کنیم.
اولا: دیگر خبری از کمکهای مالی و غیر مالی دیگر نیست. خودمان هستیم و خودمان.
دوم: دیگر آن گروه بزرگ برنامه نویسان را از سراسر دنیا نداریم. حالا باید برویم برنامه نویس استخدام کنیم کارمان را پیش ببرند. چون کار یکی دو نفر نیست.
حالا همان دوست مبتکرمان می آید می گوید که این که کاری نداره هر چند وقت یک بار میریم کد پروژه اصلی یه رو بر می داریم میاریم. متن باز است دیگه. ما هم که ایرانی اصلا کارمون است شاخه شاخه کردن دسته درست کردن و کار تکراری و حرفهای تکراری زدن البته به نام خودمون!
آهان اینجا همونجایی است که به قول معروف فکر کردی خیال کردی جانم. وقتی شما پروژه را دو شاخه کردی برای خودت اومدی کد نوشتی پروژه اصلی هم کار خودش را کرده، کم کم دیگه کد اونها با بخشهای زیادی از کد تو مطابقت نداره که همین طوری کپی کنی بیاریش اینجا. فکر کردی تحقیقهای دوره دانشجویی است که کپی پیست بزنی بره؟ در یک برنامه کدهای بخشهای مختلف همدیگر را لازم دارند. و باید با هم هماهنگ باشند. هماهنگ کردن آنها یعنی این که بشینی همه را بخوانی و آنجا که لازم است کد آنها را اصلاح کنی. و این کار را باید هر بار از اول انجام دهی.
انقدر این فکر نا ممکن است که در دنیای واقعی پروژه هایی که شاخه می شوند برای همیشه از پروژه های اصلی جدا می شوند. بگذارید یک مثال جالب را بیاورم کد هسته مرورگر کروم و فایرفاکس یکی است. کروم از فایرفاکس شاخه شده است. و ملاحظه می کنید که کروم راه خودش را رفته است.
سوم: اگر زد و مثلا آن برنامه نویسه دیگه نخواست کار کنه احتمالا دیگه هیچ کس از کد سر در نمی آورد چون همان طور که عرض کردم به تدریج کد پروژه مندراوردی تی تی اس اختلافش با کد اصلی زیاد می شود. و فاتحه اش خوانده است.
من مدتی است که فکر می کردم ریشه این وضع چیست. و با گفتگو با برخی کاربران متوجه شدم که ریشه این موضوع به دلیل درک ناصحیح از مفهوم نرم افزار آزاد و با کد منبع باز به وجود آمده است.
بگذارید به چند تصور اشتباه در مورد برنامه های کد منبع باز بپردازیم.
این که برخی تصور می کنند، کد برنامه در دسترس است یعنی هر کاری می توان با آن کرد اشتباه است. توسعه این نرم افزارها روندی پیچیده و سخت گیرانه دارد. این طور نیست که هر کسی آمد دست به کد زد همه می گویند دمت گرم. چه خفن. تغییرات باید اول مورد تایید مدیران باشد، معمولا برای تصمیم گیری که چه انجام شود یا نشود. یک کامیونتی یا به قول خودمان گروه وجود دارد که اعضای آن با هم بحث می کنند و به توافق می رسند گاه رای گیری می شود. و بعد مدیران کنترل می کنند که تصمیمات گرفته شده به درستی اجرا شود. هر یک از شما هم می توانید عضو این کامیونیتی ها باشید و در بحث ها شرکت کنید. فقط کافی است به سایت هر پروژه سری بزنید. البته به زبان انگلیسی.
کدی که به پروژه های کد منبع باز ارسال می شود، اگر موارد مورد نظر را رعایت نکند فورا رد می شود. و اصلا به پروژه اضافه نمی شود. و برنامه نویس آن هم در سایتی که کد پروژه های کد منبع باز نگهداری می شود، حساب کاربری دارند و اگر کد کسی رد شود، آن فرد نمره منفی می گیرد. و این نمره های منفی در پروفایل آن شخص هم قابل مشاهده است و کلا گند می زند به آینده کاری آن برنامه نویس.
اما معمولا لیستی از گزارش خرابی وجود دارد که برنامه نویسان سعی بر رفع موارد گزارش شده دارند. و رفع این خطاها دیگر رویه تصمیم گیری ندارد بلکه فقط کد نوشته شده تست می شود که صحیح باشد امن باشد و واقعا مشکل را بدون خراب کردن جای دیگر رفع کرده باشد. تازه بعد از آن یک نسخه تستی منتشر می شود کاربران داوطلب تست می کنند و بعد از مدتی به عنوان نسخه نهایی منتشر می شود.
این روند را شما در ان وی دی ای بتا و اسنپ شات و نسخه رسمی حتما دیده اید.
این که برخی تصور می کنند، نرم افزار کد منبع باز مجوز انتشار ندارد اشتباه است. مجوز خاص خود را دارد که در آن ذکر می شود اجازه باز نشر دارد با شرط و شروط مشخص. عدم رعایت آن شروط خود جرم محسوب می شود.
سخن پایانی بخش اول:
دوستان کارهای بزرگ فقط با کار گروهی ممکن می شود. با همکاری و هماهنگی با دیگران. دنیا به این سمت می رود. گروه های بزرگ جهانی شکل می گیرند.
این بار که مطلبی را در ویکی پدیا می خوانید یک لحظه بیندیشید، دارید از مطالب یک بنیاد جهانی که هزاران داوطلب از سراسر دنیا در حال تکمیل هر روزه آن هستند، استفاده می کنید.
این بار که در انتهای یک سایت خواندید قدرت گرفته از وردپرس. لحظه ای بیندیشید، البته اگر دوستان هموطن این عبارت را از پایین سایت حذف نکنند و جایش ننویسند قدرت گرفته از جفنگ رایانه، هر بار که از یک سایت که با وردپرس نوشته شده استفاده می کنید، دارید از یک بنیاد جهانی با هزاران داوطلب بهره می برید. که برای نسخه بعدی آن در تلاش هستند. همین سایت گوش کن هم با وردپرس اجرا می شود.
اگر مرورگر کروم دارید یا فایر فاکس اگر لینوکس استفاده می کنید اگر در وی اس کد برنامه می نویسید، همه و همه برنامه هایی با کد منبع باز هستند.
حالا یک سوال کجا شنیده اید کاربرهای یک کشور در حال توسعه که نه تکنولوژی اش را دارند نه منابع اش را و نه خیلی زیرساختهای دیگر بیایند بگویند ما می خواهیم فلان برنامه خودمان را راه بیندازیم. از اصلش هم بهتر. معمولا آدمها بجایش به همین پروژه موجود کمک می کنند تا بهتر شود. بله در مواردی پروژه ها شاخه می شوند ولی موارد واقعا نادر باید سرمایه انسانی مالی و امکاناتش هم وجود داشته باشد. از همه مهمتر باید دلیلی وجود داشته باشد بسیار قوی که بجای آن که سرمایه ها انسانی و مالی دست به دست هم بدهند یک ساخته را بهتر کنند نیروها پراکنده شوند یکی دیگر بسازند.
بجای این که دوستان خلاق و مبتکر ما بیایند هر روز یک جور این برنامه های کد منبع باز و بسته را انگولک کنند اگر واقعا در خودتان می بینید که کاری از دستتان بر می آید چرا در پروژه های جهانی با انجام یک کار کوچک مشارکت نمی کنید. تا همه در نتیجه زحمت شما سهیم بشوند و تا سالهای سال نیز باقی باشد. چرا این کار را انجام نمی دهید. چرا این انرژیهای پراکنده را در یک مسیر درست تجمیع نمی کنید.
حتی اگر برنامه نویس نیستید می توانید باز هم کمک کنید. می توانید چند خط از راهنمای آن را به زبان خود ترجمه کنید. می توانید خود برنامه را به زبان خود ترجمه کنید. اگر انگلیسیتان بهتر است می توانید در نوشتن مستندات و راهنمای پروژه کمک کنید می توانید اگر امکانش را دارید پول های کوچک به پروژه اعانه دهید.. و خیلی کارهای دیگر که در بخش دوم بیشتر به آنها می پردازم.
به عنوان یک نمونه، که صحبت های من خیلی شعار گونه هم بنظر نرسد، تا به حال شما وقتی از ان وی دی ای با ترجمه فارسی استفاده می کردید به این فکر کرده اید که منوها و راهنمای فارسی آن نتیجه زحمات محمد رضا راشاد است. البته قبلا دوستان دیگری هم در این زمینه تلاش کرده اند.. منظورم نسخه های چند سال اخیر است. او یک نفر است ولی حاصل زحمتش را هزاران کاربر استفاده می کنند.
حالا تصور کنید اگر شما تنها یک خط از ان وی دی ای را ترجمه کنید و در ترجمه آن سهیم شوید. کار راشاد نیز سبکتر می شود. البته که باید با دیگر مترجمین و سرپرستان هماهنگ باشید به کار شما نظارت می شود. برخی تصور نکنند که همین طوری می ریم یک فایل را باز می کنیم یک چیزی می نویسیم و میریم.
اما اگر همه چیز را به درستی انجام دهید، تا سالها همه از تلاش شما بهره مند می شوند. هر بار که کسی آن پنجره را باز می کند. ترجمه شما را می خواند. این باهال نیست! شما در کار بزرگی مشارکت کرده اید. بخشی از ترجمه ان وی دی ای به ده ها زبان دنیا. این واقعا زیبا است فوق العاده است.

درباره شادیار خدایاری

طراح و توسعه دهنده  زبان فارسی در پروژه ایسپیک  )متن خوان رایگان برای زبان فارسی و موتور گفتار NVDA( www.espeak.ir طراح و توسعه دهنده پروژه بین المللی نت سفید )برنامه ای که نت موسیقی را برای نابینایان می خوانَد( www.white-note.com مشارکت در توسعه پروژه  NVDA  www.nvaccess.org تحصیلات: کارشناسی ارشد مهندسی کامپیوتر - گرایش نرم افزار و کارشناسی موسیقی کلاسیک پیانو دانش آموخته  دانشگاه تهران شغل: برنامه نویس، آهنگساز و نوازنده پیانو
این نوشته در آموزش, آموزش های رایگان, کامپیوتر, مقاله ها, نرم افزار های کاربردی ارسال و , , , , , , , , , , , , , , , برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

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

  1. 1

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

  2. 2
    a.masumi says:

    سلام ممنون بابت این پست نکات بسیار مهم و جالب توجهی داشت تشکر می کنم بابت توضیحاتتون و انشالله هر چه بیشتر و بیشتر شاهد همکاری دوستان باشیم

  3. 3

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

    • 3.1

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

      • 3.1.1

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

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

  4. 4
    داود بسطام says:

    سلام در خصوص این توضیحات در مورد برنامه نویسی از شما تشکر می کنیم اگر بتوانیم در این مورد کاری انجام دهیم حتما دریغ نخواهیم کرد

    • 4.1

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

  5. 5

    درود. توضیحات منطقی و درستیه کاملاً قبول دارم.
    در تأیید حرفاتون باید بگم نسخه بومی هم از لینوکس درست کردیم ما ایرانیها ولی بعد مدتی دیگه به روز نشد یا حد اقل من دیگه نسخه به روز شده ای ندیدم. از این دست مثالها بسیار زیاده.
    منتظر مطالب و پستهای ارزشمندتون هستیم.

  6. 6
    علی حبیبی says:

    آقای خدایاری خواهش میکنم آدرس ایمیلتون رو بهم بدید التماستون میکنم به هر دری میزنم تا یک راه ارتباطی با شما پیدا کنم خواهش میکنم بخدا سؤالات جدی دارم التماستون میکنم شما رو به خدا یک راه ارتباطی با خودتون بهم بدید من تو google آدرس ایمیلتون رو سرچ کردم که شاید باورتون نشه من تو google زدم ایمیل شادیار خدایاری که البته چیزی دستگیرم نشد مجددا تو google سرچ کردم و نوشتم شماره شادیار خدایاری که مثلا شماره همراهتون رو پیدا کنم اما باز هم چیزی دستگیرم نشد بخدا سؤال جدی دارم خواهش میکنم یه راه ارتباطی از خودتون بهم بدید.

  7. 7
    علی حبیبی says:

    سلام جناب آقای شادیار خدایاری من علی حبیبی هستم که نوشته بودم: آقای خدایاری خواهش میکنم آدرس ایمیلتون رو بهم بدید التماستون میکنم به هر دری میزنم تا یک راه ارتباطی با شما پیدا کنم خواهش میکنم بخدا سؤالات جدی دارم التماستون میکنم شما رو به خدا یک راه ارتباطی با خودتون بهم بدید من تو google آدرس ایمیلتون رو سرچ کردم که شاید باورتون نشه من تو google زدم ایمیل شادیار خدایاری که البته چیزی دستگیرم نشد مجددا تو google سرچ کردم و نوشتم شماره شادیار خدایاری که مثلا شماره همراهتون رو پیدا کنم اما باز هم چیزی دستگیرم نشد بخدا سؤال جدی دارم خواهش میکنم یه راه ارتباطی از خودتون بهم بدید. شما گفته بودید آدرس ایمیلم رو بهتون بدم من میخام حالا آدرس ایمیلم رو بهتون بدم ولی قبلش میخام ازتون درخواست کنم یعنی درخواست که نه خواهش کنم که شمارا به خدا قسم جوابم رو بدید قبل از این که آدرس ایمیلم رو بدم بازم میگم من به هر دری که زدم نتونستم حتی یک راه ارتباطی با شما پیدا کنم: حالا آدرس ایمیلم رو بهتون میگم: lyh57974@gmail.com: با تشکر از شما جناب آقای خدایاری.

    • 7.1

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

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