ماژول راست به چپ اوولوشن
من برای بخشی از کارم از کلاینت ایمیل اوولوشن استفاده میکنم. برای راحتی فارسینویسی برایش یک افزونه نوشتم.
اول کمی مقدمه. اوولوشن کلاینت ایمیل پروژهی گنوم(نوم) است. سابقه این برنامه به سال ۲۰۰۰ میلادی برمیگردد. برنامه به زبان C و رابط گرافیکی با Gtk نوشته شده است. امکانات برنامه هم علاوه بر ارسال و دریافت ایمیل شامل بخشهای تقویم، دفترچه تلفن، کارها و یادداشتهاست. کل برنامه در یک پنجره باز میشود به جز پنجره ارسال ایمیل و خواندن ایمیل (فقط متن یک ایمیل در پنجره اصلی نمایش داده میشود). امکان خواندن و نوشتن ایمیلهای رمزشده هم در برنامه به صورت توکار تعبیه شده است.
و حالا شرح مشکل. با اینکه اوولوشن کلاینتی قدیمی است ولی هنوز کامپوزر (پنجره نوشتن ایمیل) فاقد امکان راست به چپ کردن ایمیله. یعنی در مود html کلید میانبر یا دگمهای روی نوارابزار برنامه وجود ندارد که متن را راست به چپ بکند. هرچند ویجت پنجره نوشتن ایمیل این قابلیت را دارد چون از WebKit استفاده میکند.
و راه حل. خوشبختانه اوولوشن یک مکانیزم دارد برای نوشتن افزونه. من با کمک این مکانیزم برایش یک افزونه نوشتم که دو تا دگمه به نوارابزار کامپوزر اضافه کند. ولی نحوه انجام این کار تقریبا پیچیده بود. چون ویجت وبکیت در یک پراسس مجزا کار خودش را انجام میدهد (از چون و چرایش اطلاع ندارم ولی احتمالا بخاطر امنیته) بنابراین باید از روش خاصی برای ارتباط با آن استفاده کرد. بعد از مقداری مطالعه مستندات و بازی با یک افزونهی نمونه و طرح سوال روی کانال IRC برنامه بالاخره توانستم افزونه را سرهم کنم. ولی از شرحش در اینجا صرف نظر میکنم، فکر نمیکنم زیاد به کار کسی بیاید.
افزونه را از گیتهاب میشود دریافت کرد. اگر اوولوشن روی دستگاه نصب است فقط کافیست برنامه را نصب کنید:
$ git clone https://github.com/mehdisadeghi/evolution-composer-rtl
$ cd evolution-composer-rtl
$ mkdir src/build
$ cd src/build
$ cmake ..
$ make
$ sudo make install
ناگفته پیداست که باید cmake روی دستگاه نصب شده باشد.
اما نتیجهگیری. توسعهی این برنامه کار سختیه و اصلا کاربرپسند نیست. یعنی هزینهی ورود و شروع بالاست. پیچیدگی برنامه هم زیاده. برای ایجاد یک تغییر کوچک باید کلی مستندات خواند بعد هم سوال پرسید و بعد هم با یک سورس کد پیچیده سر و کله زد و از همه اینها بدتر اینه که روال توسعهی برنامه مبتنی بر ساخت و ارسال پچه. هیچ اشکالی به این کار وارد نیست ولی سرعت شروع را کند میکند و کسی حتی اگر بلد باشد یک فیچر را پیاده کند یا باگی را فیکس کند بخاطر این پیچیدگیها از خیرش خواهد گذشت. در ضمن توسعه پروژه روی جایی مثل گیتهاب سرعت همکاری و جذب توسعهدهنده را زیاد میکند.