Post has attachment
باگ سیزده سالهٔ #گنوم مربوط به حرکت در متن‌های راست‌به‌چپ تعمیر شد!‏
مهدی صادقی

در مطلب قبلی در مورد باگ GTK و تلاشم برای مرج کردن آن نوشته بودم. الان قصد دارم نتیجه‌ی چند ماه دوندگی و همکاری آنلاین را بنویسم.

ماجرا به طور خلاصه این بود که من از مدتها پیش موقع تایپ فارسی در gedit و zim متوجه شده بودم که اگر کلید کنترل را نگه دارم و به چپ و راست حرکت کنم، نشانگر تایپ در جهت عکس حرکت می‌کند. مثل خیلی از آدم‌ها من هم منتظر شدم تا باگ توسط کس دیگری رفع بشود ولی نشد. در مرحله بعدی سعی کردم مشکل را پیدا و گزارش کنم که به ‏این باگ رسیدم. تاریخ باگ را نگاه کنید، سال ۲۰۰۴ ثبت شده است. آن موقع (سال ۲۰۱۵ یا ۱۳۹۴) کل همت من به نوشتن یک کامنت خلاصه شد. اینکه بگویم من هم این مشکل را دارم، بلکه کسی دلش به حالم بسوزد و از وقت خودش بزند و بیاید مشکل من را حل بکند!

خب، ولی کسی دلش نسوخت.

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

در نهایت بعد از گذشت چند ماه و پیگیری دائمی و رد و بدل کردن چندین و چند پچ و مشارکت عده‌ای از برنامه‌نویسان GTK بالاخره ‬پچ نهایی در مخزن اصلی مرج شد و باگ مورد بحث بعد از گذشت ۱۳ سال فیکس شد. در این مدت دوستم آیدین غریب‌نواز به عنوان کاربر RTL با تست پچ صحت آن را تایید کرد و کامنت گذاشت و دو نفر از برنامه‌نویسان GTK بنام Daniel Bolse و Nelson Benítez León همکاری زیادی برای تولید پچ نهایی کردند.

به این صورت بعد از مدتی اندک اندک با ریلیزهای بعدی گنوم و GTK این پچ منتشر می‌شود و دیستروها هم در نسخه‌های بعدی‌شان آنرا دریافت خواهند کرد. نکته مهمی که طی فرآیند تعمیر این باگ فهمیدیم این بود که از سیزده سال پیش تا به امروز GTK تغییرات زیادی کرده است و این باگ به تنهایی مشکل gedit را حل نمی‌کند چرا که امروز gedit دیگر از GtkTextView (که تعمیرش کردیم) برای نمایش متن استفاده نمی‌کند و بجای آن از یک ویجت دیگر بنام GtkSourceView استفاده می‌کند. بنابراین در تاریخ ۱۹ فوریه ۲۰۱۷ (اوایل اسفند ۹۵) باگ جدیدی ثبت کردم و کار را روی آن شروع کردیم. با کسب تجربه از پیچیدگی‌های باگ قبلی و فرآیند حل آن اینبار با سرعت وارد عمل شدیم (یعنی یکی دو ماه!). هم من یاد گرفته بودم چطور با بچه‌های GTK کار کنم و هم آنها با مشکل راست به چپ نویسی آشنا شده بودند. (مثلا دانیل یاد گرفته بود که خودش متن عربی را تست بکند.) اول فکر می‌کردیم که باید API ویجت GtkTextView را تغییر بدهیم و همان توابع را در GtkSourceView استفاده کنیم که با واکنش منفی یکی دیگر از برنامه‌نویسان روبرو شد و درخواست کرد که اول تلاش کنیم مشکل را درون GtkSourceView حل کنیم و بار اضافی نگهداری از یک API جدید را به پروژه تحمیل نکنیم. خوشبختانه با مقداری تلاش و همفکری دوستان به پچ جدیدی رسیدیم، حتی خیلی بهتر از پچی که برای GtkTextView نوشته بودیم! پچ به قدری ساده بود که کارها خیلی زود پیش رفت. طبق معمول دوستان اصلاحاتی پیشنهاد کردند که اعمال کردم. مثلا اینکه متن کامیت باید شامل لینک باگزیلا باشد، خط اول آن باید فیکس را شرح بدهد و در بدنه کامیت هم شرح مشکل آمده باشد و در خط آخر هم لینک باگزیلا. خود کد هم باید قواعد رایج GTK و خود ویجت را رعایت کند. مثل تعریف متغیرها در ابتدای کد و استفاده از آکولاد حتی برای بلاک‌های تک خطی و مانند اینها. آزاد کردن اشاره‌گرهای سی هم فراموش نشود!

با این اوصاف باگ دوم بجای سیزده سال در کمتر از دو ماه حل شد. حتما تصدیق می‌کنید که پیشرفت قابل توجهی است! پچ حلال مشکلات ما را هم می‌توانید در مخزن GTK ‬ببینید. من که بی صبرانه منتظرم تا آرچ لینوکسم را آپدیت بکنم و از این به بعد هرچقدر دلم می‌خواهد در متن‌های فارسی با کنترل و کلیدهای جهت موس به چپ و راست بروم! واقعا چه لذتی از این بالاتر؟ :)

این هم عیدی من به کامیونتی راست به چپ نویسان گنوم باز ایران!

Post has shared content
چند تا چیز مهم که لازمه دربارهٔ ماستدون بدونیم
از وبلاگ یادداشت‌های امیرمسعود
https://masoud.abkenar.net/blog/fa/?p=244

ماستدون (Mastodon) (با خوانش ‎’mæstə,dɔ:n یعنی تقریباً ماس-تِه-دُن) چیز محبوب و پرسروصدای این روزها شده؛ یک شبکهٔ اجتماعی که می‌گه می‌تونه جایگزین توییتر بشه. چنین شبکه‌های اجتماعی‌ای که ادعای جایگزینی توییتر و فیس‌بوک و… رو دارن زیاد ظاهر می‌شن و پس از مدتی هم فراموش می‌شن. برای همین می‌خوام این‌جا کمی دربارهٔ ماستدون بنویسم که بدونیم با چی طرفیم و در موارد مشابه چه‌قدر باید این پدیده‌های نوظهور رو جدی بگیریم.

ماستدون یک جانوره
ویکی‌پدیای فارسی می‌گه که «ماستدون نام یگ گونهٔ منقرض‌شده از فیل‌سانان است.» یک جانوری از دستهٔ ماموت‌ها که در گله‌هایی به رهبری ماستدون‌های ماده زندگی می‌کردند و غذای اصلی‌شون شاخهٔ درخت‌های برگ-سوزنی مثل کاج بوده. این شبکهٔ اجتماعی نوظهور نامش رو از این جانور برداشته.

ماستدون صاحب نداره، و این خیلی خوبه اگه بدونید!
این یکی توضح دادنش خیلی سخته، ولی من تمام تلاشم رو می‌کنم و امیدوارم بتونم کوتاه و روشن منظورم رو بگم.

ماستدون بیشتر از این که یک نرم‌افزار باشه، یک استاندارد (به زبون دقیق‌تر، یک پروتکل) برای برقراری ارتباطه. این استاندارد اجازه می‌ده ما عضو این شبکهٔ اجتماعی بشیم و با بقیهٔ اعضاش ارتباط داشته باشیم، درست همون جوری که دونستن زبان فارسی بهمون اجازه می‌ده که بتونیم با همهٔ فارسی‌زبان‌های دیگه حرف بزنیم. ولی کسی که این استاندارد رو تعریف کرده هیچ کنترلی روی سرهای این شبکه (یعنی ما کاربران این شبکه) نداره، درست همون جور که فرهنگستان زبان فارسی نمی‌تونه به زور به ما بگه که چه‌جوری باید فارسی حرف بزنیم! پس ماستدون چیزی هست که من بهش می‌گم شبکهٔ غیرمتمرکز: شبکه‌ای که همهٔ سرهاش می‌تونن به همدیگه وصل بشن (مثلاً برای همدیگه مطلب و عکس هم‌خوان کنن و نظر بگذارن)، ولی هیچ شخص یا گروهی کنترل مرکزی سرهای شبکه رو در دست نداره.

بنابراین، بر خلاف همهٔ شبکه‌های اجتماعی معروف مثل توییتر و فیس‌بوک و گوگل‌پلاس، هیچ کسی نمی‌تونه شبکهٔ ماستدون رو تعطیل کنه و بره، و این خیـــــلی خوبه! مطممئنم بعضی از شما یادتون باشه که چه‌طور شرکت گوگل سرویس گوگل ریدر رو تعطیل کرد و یک شبه همهٔ ارتباط‌های آدمای توش رو از بین برد. ممکنه باورش براتون سخت باشه، ولی حتماً چند سال دیگه همین اتفاق برای گوگل‌پلاس و اینستاگرام و توییتر و فیس‌بوک هم خواهد افتاد. اما ماستدون، به خاطر چیزی که این بالا گفتم، تا وقتی که آدم‌ها بخوان توش باشن باقی می‌مونه.

ماستدون چیز تازه‌ای نیست
این استاندارد ارتباطی‌ای که این بالا نوشتم، در واقع ساختهٔ ماستدون نیست و دست‌کم از سال ۲۰۱۰ به شکل یک استاندارد آزاد به نام OStatus وجود داشته. شبکه‌های اجتماعی دیگه‌ای هم با همین استاندارد کار می‌کنن که نام معروف‌ترین‌شون هست GNU Social که در واقع ادامه‌دهندهٔ شبکه‌ای به نام identi.ca بوده. خلاصه این شبکه و این پروتکل خیلی وقته که وجود داره و بعد از گذشت سال‌ها امتحانش رو پس داده و چیز مطمئنی حساب می‌شه.

ماستدون ممکنه مجانی باشه، یا پولی، یا هردو
همون طور که گفتم، هیچ شخص یا گروهی نیست که کنترل همهٔ سرهای این شبکهٔ اجتماعی رو در دست داشته باشه و همه می‌تونن به شبکه وصل بشن. برای این که عضو این شبکه بشید، کافیه که در یکی (هر کدوم) از سرویس‌دهنده‌های ماستدون حساب باز کنید و بهش وصل بشید (الان که این رو می‌نویسم ۴۶۳ تا سایت مختلف اون‌جا فهرست شده). هر کسی هم می‌تونه یک سرویس ماستدون بسازه که مردم بتونن روش حساب باز کنن. فرقی نمی‌کنه که حساب‌تون رو کجا می‌سازید، چون همیشه می‌تونید با همهٔ آدم‌های دیگه‌ای که روی نشونی‌های دیگه هستند ارتباط برقرار کنید. حتی من دوستانی دارم که سرویس شخصی ماستدون خودشون رو دارن که روی نشونی سایت شخصی‌شون ساخته شده.

الان تقریباً همهٔ سرویس‌دهنده‌های ماستدون رایگان هستند، ولی ممکنه به زودی سرویس‌دهنده‌هایی بیان که برای داشتن حساب ازتون پول هم می‌گیرن. به هر حال نگه‌داری و به‌روزنگه‌داشتن یک سرویس‌دهندهٔ ماستدون وقت و هزینه داره و اتفاقاً بهتره برای داشتن این سرویس پول بدیم (هرچند کم) تا مطمئن بشیم که گردانندگان سرویس‌دهندهٔ ما انگیزهٔ کافی برای سرپا نگه‌داشتن سرور رو دارن. پیشنهاد سازندگان ماستدون اینه که گروه‌های اجتماعی (مثلاً گروه‌های فامیلی، دوستی، حلقه‌های همکاران) برای خودشون سرویس‌دهنده‌های محلی بسازن و روی اون‌ها حساب باز کنن. اگه قرار بود یک شبکهٔ اجتماعی نامتمرکز ساخته بشه ولی باز هم همه حساب‌شون رو فقط روی یک سرویس‌دهنده باز کنن، دیگه چه کاری بود؟!

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

نشانی موقت حساب ماستدون من اینه: masoud@aleph.land. اگر شما هم یک حساب ماستدون باز کردید، خوش‌حال می‌شم که توش فعال باشید و من رو هم به دوستاتون اضافه کنید: در صفحهٔ حساب من، روی دکمهٔ REMOTE FOLLOW کلیک کنید. در پنجره‌ای که باز می‌شه نشونی خودتون رو بنویسید (مثل شکل) و روی دکمهٔ PROCEED TO FOLLOW و بعدش دکمهٔ FOLLOW بزنید.

Post has attachment
نرم‌افزار لیبره‌آفیس (LibreOffice) سرانجام پشتیبانی از زبان‌های راست‌به‌چپ را به‌طور پیش‌فرض فعال کرد. این تغییر احتمالاً در نسخهٔ آیندهٔ لیبره‌آفیس پدیدار خواهد شد.
(در نسخه‌های پیش از این باید بر اساس این راهنما
https://goo.gl/wNkV7M
این ویژگی را فعال می‌کردیم.)

Post has attachment
خیلی وقت پیش‌ها درباره‌ٔ مفهوم کپی‌لفت (copyleft) و این که چرا من این‌قدر ازش خوشم میاد نوشته بودم. این‌جا:
https://masoud.abkenar.net/blog/fa/?p=176
حالا دانیال بهزادی در این نوشتهٔ خوبش با ذکر مثال‌های عینی می‌گه که کپی‌لفت نه تنها مفهوم جالبیه، بلکه برای تضمین آزاد بودن کاربران نرم‌افزارها خیلی خیلی مهمه!

Post has attachment
یک دوره مقدماتی به زبان فارسی برای برنامه‌نویسی به زبان پایتون، برای کسانی که برنامه نویسی نمی‌دونن و می‌خوان اصولا از پایه برنامه نویسی رو بفهمن.

امیدوارم دورهٔ موفقی بشه، و مهم‌تر از همه، امیدوارم شمایی که علاقه‌مندید، باهاش برنامه‌نویسی یادبگیرید!

جزئیات بیشتر رو در این نوشتهٔ جادی،
https://goo.gl/toqStl
یا مستقیماً از صفحهٔ دوره
https://goo.gl/FvAjRs
می‌تونید بخونید.

Post has shared content
در نسخهٔ ۵٫۳ از لیبره‌آفیس که قراره به زودی دربیاد، از یک قالب تازه برای افزودن عکس به نوشته‌ها پشتیبانی می‌شه: پی‌دی‌اف!

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

این نسخه از لیبره‌آفیس قراره اوایل بهمن (آخر ژانویه) منتشر بشه. کسی که این ویژگی رو به لیبره‌آفیس افزوده این زیر در وبلاگ شخصی‌اش بیشتر توضیح داده داستانش رو. دستش واقعاً درد نکنه!
Insert PDF as image in LibreOffice 5.3
http://vmiklos.hu/blog/lo-insert-pdf-image.html
The LibreOffice community is working hard on the next major release of the suite, LibreOffice 5.3, which is due in late January 2017. Testing versions will be made available in the lead-up to the release – find out more here:

https://blog.documentfoundation.org/blog/2016/10/31/road-to-libreoffice-5-3/

Post has shared content
مقالهٔ جالبی از سایت تک‌کرانچ به نام اینترنت غیرمتمرکز دوباره قدرت را به کاربرانش بازمی‌گرداند
ترجمهٔ بخشی از مقاله: هدف اصلی اینترنت و وب در آغاز این بود که شبکهٔ همگانی و خنثایی باشد که هرکسی بتواند برابرانه در آن بازی کند. خوشبختانه، جنبش روبه‌رشدی آغاز شده که اینترنت را به این هدف آغازین خودش بازگرداند. نامش «وب نامتمرکز» است و به گرایشی گفته می‌شود که در آن خدمات اینترنتی به هیچ سازمان یا موجودیت مرکزی‌ای وابسته نیستند.

Post has attachment
حالا که تلگرام این همه تو ایران پرطرفداره، چرا هیچ کس محیط برنامهٔ تلگرام رو به فارسی ترجمه نمی‌کنه؟ ترجمه کردن محیط کاربری حتی دانش برنامه‌نویسی هم لازم نداره. هر کسی که تا حد معقولی انگلیسی بلده می‌تونه با کمی صرف وقت و حوصله این کار رو بکنه. اگه دوست داشتید، این صفحه رو بخونید تا ببینید چه جوری می‌شه این کار رو انجام داد.

Post has shared content
همونطور که قبلا گفته بودم ما پنجشنبه مراسم کوچکی داشتیم به مناسبت «روز جهانی آزادی نرم‌افزار»
یه بخش از مراسم ارائه من بود در مورد معرفی نرم‌افزارهای ازاد معادل برای نرم‌افزارهای غیرآزاد مشهوری که مردم ازش استفاده می‌کنند.
امروز اسلایدهای این ارائه رو گذاشتم تو Github تا اگه خواستید برای اهداف مشابه استفاده کنید.
این اسلایدها با کتابخانه Impress.js ساخته شده و مثل همه نرم‌افزارهای آزاد هیچ محدودیتی هم در استفاده ازش وجود نداره :)
با کلید های چپ و راست روی کیبرد بین اسلایدها حرکت کنید.

Post has shared content
تولد ۲۵ سالگی‌ات مبارک لینوکس! اینم کیک تولدت. خودت برو کامپایلش کن 😜
Wait while more posts are being loaded