الخميس، أكتوبر 13، 2011

مراجعة وتصحيح مسار

بينما أحاول حاليا استعادة نشاطي بعد فترة ركود، أعيد النظر أيضا في مشاريعي الصغيرة التي نفذتها سابقا والأفكار التي لم يقدر لها أن تنفذ لسبب أو لآخر، والأفكار التي تبدو لي قابلة للتنفيذ. وقد عزمت على أن أعيد النشاط لمشروعاتي في البرمجة وبشكل أساسي - على الأقل حاليا - مشغل البث المباشر للقنوات والإذاعات العربية على الإنترنت وقارئ RSS (الإعلام العربي على الإنترنت) ؛ وكذلك مشروع الخطوط الحاسوبية الحرة "أقلام".

فيما يتعلق بالمشروع الأول - لم يرق لي أبدا هذا الاسم ولكني لم أجد اسما بديلا معبرا ومختصرا حتى الآن إلا أني سأنظر في هذا الأمر لاحقا - كنت أنوي العمل على تطوير نسخة خاصة بنظام ويندوز ، ربما لأني رأيت أن البرنامج يمكن أن يجذب عددا أكبر من المستخدمين، أو لأنه قد يمكن استخدامه كمساهمة في "حملة توعية دعائية تحريرية" لنشر فكر البرمجيات الحرة بين مستخدمي ويندوز (أفكار حماسية أيام زمان)، أو لأني أركز منذ فترة على تعلم وممارسة البرمجة بلغة C# على منصة ويندوز. ولكني تراجعت عن الفكرة وآثرت أن أعود لصوابي، وأن لا أستمع لهذه الأفكار و"الوساوس الشيطانية". 
بعد مراجعة وإعادة نظر  قلت لنفسي إن أحد الأهداف الأساسية لعمل هذا المشروع كان المساهمة في توصيل رسالة لمستخدمي لينوكس المبتدئين من العرب الذين كنت حينها منهم - وربما لازلت - أن هناك تطبيقات ترفيهية جيدة تعمل على لينوكس وليس لها بدائل بنفس الإمكانيات تعمل على ويندوز. وحاولت بقدر ما كنت أملك من خبرة ومن وقت حينها أن أحقق هذا الهدف ولست واثقا من مدى تحقيق هذا الهدف وإن كنت أظن - عن نفسي - أنه كان للبرنامج أثر إيجابي.
حتى الآن صدر من البرنامج 5 إصدارات - آخرها 4.1 كان منذ أكثر من عامين - وتلقى البرنامج ردود فعل إيجابية في معظمها ( كتطبيق يعمل) إلا أنني كنت أدري أنني ينقصني الخبرة الكافية التي يمكن أن تجعل البرنامج أفضل بكثير. منذ آخر إصدارات البرنامج اكتسبت خبرات أكثر بكثير مما كان لدي حينها إلا أنني لم أنتج شيئا جديدا وهو أمر أفتقده حقا. أظنني أؤمن فعلا بأن وجود الإنسان هو ما يفعله لا ما يستطيع أن يفعله (أو أنني لازلت متأثرا بمادة الأصول الفلسفية للتربية).
لذا بدأت في التخطيط للعمل على إصدار جديد من البرنامج، وتكوين تصور عام عما سيضاف وما سيتغير في الإصدار الجديد.
لم أقرر بعد إن كنت سأستمر في تنفيذ المشروع بجامباس أو سأنتقل للغة أخرى. أفكر جديا في إعادة كتابة البرنامج باستخدام جافا (التي أحبها فعلا منذ عهد SUN Microsystems) لكنني لازلت أبحث مدى دعمها للوسائط المتعددة وهو طبعا أمر ضروري للبرنامج سواء بإمكانات اللغة (أو بالأحرى مكتباتها)  الافتراضية أو بالاستعانة بإضافات خارجية من Gstreamer أو Xine أو غيرهما.
السبب في بحثي عن لغة جديدة هو أني لم تعجبني أبدا جامباس، ليس لأني من أعداء فيجوال بيسك، بل ورغم أني تعلمت معها البرمجة في بداياتي (مع VB.net) إلا أن اللغة لم تصل إلى الدرجة الكافية من الاستقرار وكثيرا ما كانت تواجهني مشكلات بها أثناء عملي ناتجة عن أخطاء برمجية في جامباس، وبالطبع لا أقلل أبدا مما يبذله مطور اللغة من جهود في تطويرها، ولكني كمبرمج أظن أنه من الطبيعي جدا أن أفضل العمل في بيئة أكثر استقرارا توفر لي ما أريده كما أريده.
ولكن في النهاية قد أختار الأيسر لي ، وبدلا من إعادة كتابة البرنامج من البداية أعدل فيما هو موجود بالفعل، خاصة أن جامباس 3 على وشك الصدور مشتملة على دعم QT4 بعد أن أصبحت واجهة البرنامج المعتمدة على QT3 تبدو كما لو كانت تعمل على ويندوز 98 (في أفضل الحالات) عندما لم تعد سمات QT3 (أو بالأحرى KDE3) تصدر مع إصدارات التوزيعات الحديثة. إلا أنه يبدو لي أنني لن أرتاح قبل أن أعيد كتابته بلغة أخرى.

لكن بعيدا عن اللغة المستخدمة هناك عدة مزايا سأعمل على تحقيقها في الإصدار القادم :
- تحسين إمكانيات المشغل المدمج (خاصة المعتمد على Xine ربما بالاعتماد مباشرة على مكتبات Xine) وقد تضاف محركات تشغيل أخرى.
- الاعتماد على قاعدة بيانات SQLite في تخزين بيانات المحطات والمصادر الإخبارية وربما الأخبار.
- الاهتمام بشكل أكثر بقارئ مصادر RSS (في النهاية هو الأساس في مفهوم تلفزيون الإنترنت) وربما سيكون ذلك على حساب عدد القنوات الداعمة لميزة البث المباشر (أغلب القنوات التلفزيونية الآن تدمج البث المباشر ضمن Flash أو Silverlight أو HTML5 على مواقعها بدلا من الاعتماد على المشغلات العادية).
- تقليل عدد الاعتمادات على أدوات أخرى؛ لا مزيد من الاعتماد على wget في تنزيل ملفات الأخبار، وتعديل القائمة الأساسية لن يتطلب صلاحيات الجذر، ببساطة ستكون لكل مستخدم نسخة خاصة من قاعدة البيانات  بدلا من تبويب خاص بقائمة إضافات المستخدم.
- إضافة ميزات خاصة بفلترة المحطات المعروضة حسب البلد مثلا أو التصنيف وتمكين وتفعيل أي منها حسب رغبة المستخدم.
- مراجعة بيانات المحطات والتأكد قدر الإمكان من خلوها من الأخطاء.
- إضافة ملفات مساعدة تشرح استخدام البرنامج.
- إضافة إمكانية تحديث بيانات المحطات من الإنترنت دون الحاجة لعمل إصدار جديد من البرنامج.
- بالإضافة لذلك أفكر في إمكانية إضافة ميزة النطق الآلي لنصوص RSS لكن الفكرة لازالت حاليا قيد البحث ولا أعلم إن كانت ستتوفر في الإصدار القادم؛ غالبا لا.

أما بالنسبة للمشروع الثاني "أقلام" والذي - رغم بدايته رسميا منذ عامين - لم أصدر منه أي إصدار حتى الآن؛ فقد قررت أيضا مراجعة المشروع وأهدافه والتصور المستقبلي له ، وخلصت إلى أنه أولا يجب علي إنهاء الإصدار الأول من مجموعة خطوط أقلام المفتوحة المصدر قبل نهاية العام الجاري 2011؛ ثانيا لن يكون المشروع مجرد مشروع لتصميم خطوط عربية مفتوحة المصدر فحسب بل أيضا (بالإضافة لذلك) إنشاء تطبيقات برمجية ذات صلة قد تشتمل على تطبيق لدعم الكتابة بالعربية في البرامج الغير داعمة لها (سواء التي تدعم يونيكود أو لا تدعمها)، تطبيق لتصميمات الخط العربي (على غرار برنامج كلك على ويندوز)، وربما تطبيق بسيط لتحرير خطوط True Type (فونت فورج تطبيق ممتاز لن أطمح لمحاكاته ولكن ببساطة لا تعجبني واجهته) ، وأخيرا وهو الأهم دراسة مدى إمكانية تطبيق  الذكاء الاصطناعي في مجال إنشاء التصميمات الكتابية الفنية المركبة؛ لم أبحث بعد إمكانية تطبيق الفكرة ولكن نظريا إذا أمكن تلقين الحاسوب بمعلومات الحروف بشكل مبسط - ربما يحتاج الأمر إلى صيغة جديدة لتمثيل قواعد الخط العربي رقميا - بما يشتمل على مقاسات الحروف ، وزوايا ميلانها ، واستداراتها ، والمواضع القابلة للامتداد فيها والأشكال المختلفة للحروف حسب مواضعها وسياقها ؛ يمكن بإعطاء الحاسوب مسارا يمثل الشكل الخارجي لمساحة ما (منتظمة أم لا) وعبارة ذات طول مناسب ، أن يقوم الحاسوب بتركيب كلمات العبارة بشكل جمالي (إلى حد ما) ضمن المساحة المحددة.
لم أراجع بعد أبحاث أو مراجع تتعلق بهذا الشأن ، لكنها لازالت مجرد أفكار ، سأحاول بمشيئة الله العمل عليها في أقرب وقت ممكن ، وربما أجد فيها شيئا يستحق التركيز عليه مستقبلا .