اختاپوس خسته

یادداشت‌هایی پیرامون کد، زندگی و دوستان

ترجمهٔ گروهی

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

یک آقایی از طرف یک انتشاراتی با من تماس گرفت و گفت می‌خواد کتابی رو براش ترجمه کنم تا منتشر بشه. کتاب مورد نظر The Linux Bible 8th Edition هست. تا این‌جا همه‌چیز خوبه. آقای مورد نظر ما میگه برای هر صفحه ترجمه n هزار تومن بهم میده. خوب اینم تقریباً خوبه. ولی مشکلی که هست اینه که من یه نفرم. و یه نفر نمی‌تونه تو یه ماه سیصد صفحه رو ترجمه کنه. مخصوصاً اگه کار اصلی‌ش ترجمه نباشه و دانشجوی زبان هم نباشه، در عین حال رو دو تا مقاله کار کنه، برای کنکور ارشدش خرخونی کنه (دروغکی)؛ برای اینکه از گشنگی نمیره، پروژهٔ تجاری هم بگیره از بیرون! (۱. روم به دیفال، بخدا با LGPL منتشر می‌کنم) (۲. خدایش بیامرزد آن شخص را)

این شد که ایده‌ای به سرم زد: «ترجمه رو بسپار به دست جامعه». همهٔ ما می‌دونیم دنیای امروز ما دنیای افراد و شرکت‌ها نیست، بلکه دنیای اجتماعات و خرد جمعی‌یه. اگه دور و برتون رو نگاه کنید، می‌بینید که هر چیز خوبی که هست، از جمع سر برآورده نه یک شخص. شاید ایده مال شخص بوده باشه اما یک گروه عملی‌ش کردن.

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

جزئیات بیشتر لطفاً

اول این که کل کارمون رو روی گیت‌هاب مدیریت می‌کنیم. یک رپوزیتوری ساخته میشه برای این کار. شما اگر بخواهید مشارکت کنید، براتون یک زمان‌بندی دقیق به همراه میزان دقیق سرفصل‌هایی که تصمیم دارید ترجمه کنید. داده میشه. هر چقدر دلتون بخواد می‌تونید ترجمه کنید :) شما موظف هستید این متون رو تا قبل از مهلت تعیین شده روی رپوزیتوری مرکزی بفرستید. بعد از این که ترجمه‌ها تموم شد ما با استفاده از سیستم فوق‌العاده دقیق gitstat محاسبه می‌کنیم که چه کسی چند درصد از پروژه رو انجام داده. مثلاً اگر ۱۲٫۰۴٪ از پروژه رو انجام داده باشید، دقیقاً همون نسبت از مبلغ کل رو دریافت می‌کنید. این‌طوری میشه که هر چقدر دوست دارید می‌تونید ترجمه کنید. تنها چیزی که باید بهش دقت کنیم، اینه که برای جلوگیری از کار تکراری، باید ثبت بشه ترجمه‌ها. مثلاً من میگم قسمت 3.1.2 رو تا هفتهٔ آینده ترجمه می‌کنم. و دیگه کس دیگه نمی‌تونه اونو بگیره.

مبلغ دریافتی شما با فرمول زیر محاسبه میشه:

$$M=\frac{c}{100}\times p_t \times \varphi_p$$ که \(M\) مبلغ دریافتی شماست، \(c\) درصد مشارکت شما توی پروژه، \(p_t\) تعداد کل صفحاتی که توسط همه ترجمه شده (هر چند صفحه که بعد از تنظیم و صفحه‌آرایی تشکیل شده باشه) و \(\varphi_p\) هزینهٔ ترجمهٔ هر صفحه‌ست.

مثلاً اگر هزینهٔ ترجمهٔ هر صفحه ۵۰۰۰ تومن باشه؛ شما فصلی رو ترجمه کنید که ۱۲٫۰۴ درصد از کل متن فارسی کتاب رو تشکیل میده، و بعد از صفحه‌بندی حجم کتاب سیصد صفحه شده باشه، تعداد صفحات شما میشه حدود ۳۶٫۱۲ صفحه. البته این دقیق نیست چون عکس‌ها و صفحات خالی و غیره تأثیر می‌ذارن. (و چقدر خوبه که این تأثیر رو حذف می‌کنیم. این‌طوری عادلانه‌تره) بنابراین مبلغ کلی که دریافت می‌کنید برابر است با: $$M=\frac{12.04}{100}\times 300 \times 5000=180 600$$ یعنی صد و هشتاد هزار و ششصد تک تومنی :)

گیت‌استات چطور کار می‌کنه؟

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

مثلاً نتایج تحلیل آخرین پروژهٔ متن‌بازی که با یکی از همکاران‌مون انجام دادیم به این شکل هست: به این ترتیب اگر بخوایم مشارکت‌ها رو حساب کنیم، سهم من میشه: $$\frac{57541-23255}{\left(239-55\right)+\left(57541-23255\right)}=99.4662025%$$ (البته به دلیل وجود کدهای تولید شده توسط سیستم‌های مختلفی مثل bisonc++, flexc++, xsd, autotools ده‌ها هزار خط کد توسط سیستم تولید شده که من کامیت‌شون کردم :)

مطمئنی همه‌چیز به قدر کافی عادلانه‌ست؟

بله مطمئنم :) ما از سیستم برای تقسیم سود کارهای نرم‌افزاری که با دوستان انجام میدیم استفاده می‌کنیم. تمام جزئیات رو درنظر گرفتم. مثلاً:

  • این که منظور از خط چیه؟ خط رشته‌ای از بایت‌ها هست که با CR یا LF CR تموم میشه. بسته به این که از چه سیستم‌عاملی استفاده می‌کنید، این ممکنه فرق کنه. ولی باز هم یک مشکلی هست! خط یعنی پاراگراف. ما وقتی میریم خط جدید که پاراگراف تموم شده باشه، پس اگه یکی پاراگراف‌های طولانی ترجمه کنه و یکی پاراگراف‌های کوتاه، دومی ضرر می‌کنه. برای این هم راه‌حلی دارم. ما از سینتکس مارک‌داون برای ارسال متون استفاده خواهیم کرد. طبق این سینتکس پاراگراف‌ها با دو تا نویسهٔ نوسطر (new line) جدا میشن و یه دونه هیچ تأثیری نداره. حداکثر طول خطوط رو هشتاد در نظر می‌گیریم. البته شما موظف به رعایت این چیز اعصاب‌خورد کن نیستید. یه اسکریپت پایتون براش نوشتم که این کار رو انجام بده :) شما فقط اسکریپت رو اجرا می‌کنید و اون تصمیم می‌گیره که متون رو چطوری مرتب کنه.

دیدگاه‌ها