برای خیلی از افراد که از ۱۲ سالگی با DOS و Windows کرک شده خو گرفتهاند حرکت به سمت Free/Open Source Software کار چندان راحتی نیست. سالها کار و برنامهنویسی در platform ویندوز کاری نیست که بشود در عرض چند ماه آن را کنار گذاشت. حال اگر ما هم بخواهیم مهاجرتمان را به سمت FOSS آغاز کنیم چه باید کرد؟ روش من به عنوان یک توسعهدهنده نرم افزار (برنامهنویس) این است که کاربران کامپیوتر را به ۴ دسته تقسیم کرده و هر کدام را جداگانه بررسی کنم. این دستهها عبارتند از:
۱- کاربران روزمره
۲- کاربران اداری
۳- برنامهنویسها
۴- کاربران خاصمنظوره
۱- کاربران روزمره
افرادی هستند که از نرمافزارهای رایج و معمولی برای انجام کارهای شخصی یا اداری روزمرهشان استفاده میکنند. این نرمافزارها عمدتا شامل ویندوز، مجموعه Office، نرمافزارهای جانبی مثل نرمافزارهای پخش موسیقی، نرمافزارهای کار با اینترنت، رایت CD/DVD و… میشوند. این گروه از افراد در مهاجرت به FOSS کمترین دردسر را خواهند داشت. چون همه نرمافزارهای مورد استفاده آنها معادل FOSS دارند و اتفاقاً همه آنها خیلی هم شبیه به نسخه ویندوزیشان هستند. تنها زحمتی که افراد این دسته باید بکشند کمی تغییر عادت و مختصری یادگیری نرمافزار جدید است.
۲- کاربران اداری
منظور از کاربران اداری، افرادی هستند که از کامپیوتر برای انجام امور اصلی ادارات و سازمانها استفاده میکنند. یعنی امور حسابداری، کارگزینی، پرسنلی و… یک اداره/کارخانه را از طریق کامپیوتر انجام میدهند. نرمافزارهای مورد استفاده این دسته عمدتاً نرمافزارهای تولید داخل و سفارش مشتری (Customized) هستند. این طور نرمافزارها امروزه عمدتاً به دو دسته Client و Server تقسیم میشوند. در Server بخشهای اصلی برنامه قرار دارد. هر چند که گاهی اوقات این «بخشهای اصلی» به صرفاً یک SQL Server تقلیل پیدا میکند. نرمافزار کلاینت هم به آن بخش از نرمافزار گفته میشود که در کامپیوتر کاربران نهایی مورد بهرهبرداری قرار میگیرد. مهاجرت دادن همه این نرمافزارها به FOSS را نمیتوان ناگهانی انجام داد. این کار به زمانی طولانی (به عقیده شخصی من) در حد ۱۰ الی ۲۰ سال نیاز دارد. دلیلش هم این است که هنوز هم میشود در بعضی ادارات و سازمانها برنامههای FoxPro را دید!
به علت مقاومت ادارات و کارمندان آنها در برابر تغییر باید مهاجرت را در مرحله به مرحله انجام داد. نخستین گام به عقیده من تبدیل بخش کلاینت همین نرمافزارهای موجود از تحت ویندوز (Desktop) به تحت وب (Web Application) است. با این کار کلاینتها از قید سیستم عامل آزاد میشوند. آنها میتوانند به راحتی ویندوزها را پاک کرده و جای آنها Linux نصب کنند. چون کاربران کارشان را فقط از طریق مرورگر انجام خواهند داد.
گام دوم، مهاجرت آن بخشی از نرمافزارهای Server است که به عنوان سرویسدهنده هسته اصلی برنامه عمل میکنند. بیشتر وقتها MS SQL Server و IIS هستند که این نقش را بازی میکنند. عوض کردن این تیکه در هسته اصلی نرمافزار در بیشتر موارد اگر برنامه به شیوهای چندان غیر معمول نوشته نشده باشد، کار چندان سختی نیست. مثلاً خیلی وقتها به راحتی میتوان از My SQL به جای MS SQL Server یا از Apache (با نصب یک mod مخصوص) به جای IIS استفاده کرد.
گام آخر در این مهاجرت مربوط به برنامه اصلی است. منظور از برنامه همان برنامهای است که توسط پیمانکار به سفارش کارفرما نوشته شده است. در مورد این هسته اجبار خیلی زیادی برای تعویض و ارتقا وجود ندارد. همین که زبان برنامهنویسی مورد استفاده، در platform مورد نظر قابل اجرا باشد کفایت میکند. در واقع ملاحظات این بخش بیشتر به برنامهنویسهای آن برمیگردد. اگر آنها بتوانند برنامه را طوری بنویسند که در یک platform آزاد قابل اجرا باشد مثلاً حتی اگر زبان مورد استفاده آنها C# است تا وقتی که میتوانند از MONO در اجرای آن استفاده کنند مشکل خاصی وجود ندارد. البته بهتر است برنامهنویسان محترم و شرکتهای استخدام کننده آرام آرام خود را به زبانهایی عادت دهند که در محیطهای FOSS هم به راحتی قابل اجرا باشد مثل JAVA و PHP.
هنوز دو مسئله دیگر در مورد کاربران اداری وجود دارد. اول آن که کابران اداری عموماً کاربران روزمره (دسته اول) هم محسوب میشوند. پس همه موارد مطرح شده برای کاربران روزمره، برای کاربران اداری هم مصداق دارد. ثانیاً کاربران اداری خیلی به شبکههای ویندوزی و امکانات آن وابسته هستند. آنها هر روز از File Sharing ویندوز و چاپگرهای share شده تحت شبکه استفاده زیادی میکنند. بنابراین باید فکری هم به حال این موضوع کرد. برای file sharing به عنوان یک راه اولیه ولی استاندارد که بین platformهای مختلف به راحتی قابل استفاده باشد راه حل ftp پیشنهاد میگردد که البته ظاهراً امنیت بیشتری هم نسبت به file sharing ویندوز دارد.
۳- برنامهنویسها
مهاجرت این دسته سختتر از بقیه انجام میشود چون باید موارد زیادی در نظر گرفته شود از جمله:
۳-۱- تغییر احتمالی زبان برنامهنویسی. مثلاً دلفی یا VB.NET یا در لینوکس وجود ندارند یا به طور ضعیفی پشتیبانی میشوند.
۳-۲- IDE (محیط توسعه و برنامهنویسی): بیشتر برنامهنویسان به خصوص آنها که از ویندوز میآیند به شدت به IDE وابسته هستند. حتی اگر IDE مشابهی در محیط مقصد وجود داشته باشد معلوم نیست که همین امکانات را داشته باشد یا نه و حتی هیچ تضمینی وجود ندارد که عادتهای کاربرانش از جمله shortcutها را حفظ کرده باشد. به عنوان مثال معلوم نیست که MONO تحت لینوکس همان عادات و امکانات Visual Studio تحت ویندوز را داشته باشد یا نه.
۳-۳- ابزارهای کمکی اصلی مثل Database و Web Server: خوشبختانه هم در ویندوز و هم در لینوکس، Database و Web Serverهای قدرتمند و معروفی وجود دارند. در مورد Database اگر بعضی موارد از قبل رعایت شده باشد، مسئله انتقال اطلاعات و برنامههای قبلی و یادگیری خود برنامهنویسان راحت انجام میپذیرد. مثلا این که از دستورات استاندارد SQL که در همه جا پیاده سازی شده استفاده شود نه از آن دستوراتی که فقط در یک محصول خاص پیادهسازی شده است و یا استفاده از روش و ابزارهایی که نرمافزار را مستقل از Database میکند استفاده شود مثل OR-Mapperهایی مثل Nhibernate. در مورد Web Serverها باید گشت و گشت تا Add-inهایی که پشیبانی زبان مورد نظر را به Web Server اضافه میکند پیدا کرد. مثلاً برای IIS میشود Add-inهایی برای اجرای Perl و PHP پیدا کرد و قاعدتاً برای Web-Serverهایی مثل Apache هم باید بشود Add-inهای مشابهی پیدا کرد. مثلا میتوان از Mod_AspDotNet برای اجرای صفحات ASP.NET در Apache استفاده کرد.
۳-۴- موارد متفرقه: گاهی اوقات مواردی وجود دارد که نمیدانیم در platform جدید چطور میشود با آنها کار کرد. مثل نحوه مسیردهی فایلها، حق دسترسیها، ارتباط با سختافزار و… در چنین اوقاتی به نظر من باید هر مورد را جداگانه بررسی کرده و برایش راه حل ارائه کرد.
۴- کاربران خاص منظوره
تنها وجه تمایز کاربران خاص منظور نرمافزارهایی هستند که مورد استفاده قرار میدهند. مثلاً Photoshop، Autocad، Mathlab، CATIA یا هر کدام از نرمافزارهای دیگری که در زمینه عکاسی، ریاضی، عمران، صنایع، فیزیک، شیمی، برق، پزشکی، انیمیشن، طراحی و غیره مورد استفاده قرار میگیرد. استفاده این افراد از کامپیوتر مختص به همین کاربرد خاصشان است. متاسفانه به نظر میرسد این طور نرمافزارها در بیشتر موارد هیچ معادلی در GNU/LINUX ندارند و کاربر مجبور است به خاطر کاربرد خاصش برای همیشه در ویندوز بماند.
مطالعه بیشتر:
دیدگاهها
با سلام
دوست عزیز تشکر میکنم از مقالهی مفیدتون، شاید لحاظ برخی از موارد در این پست خواننده را آگاهتر میکرد، همانطوری که میدونین مشکل عمدهی مهاجرت نرمافزارهای دفتری است، هنوز دنیای آزاد و متنباز از حیث داشتن مجموعهی دفتری قدرتمند رنج میبرد، گرچه مجموعهی اپنآفیس و یا حتی لوتوس سیمفونی آیبیام دارند این فاصله رو کم میکنند.
اصطکاک عمده در جریان مهاجرت فقط قشر اداری است، البته راهحلش هم تنها نرمافزارهای مبتنی بر وب هم نیست، قدری تحکم لازم است، بهتر است تجربیان کشور هند و یا در سطحی بالاتر برخی از کشورهای اروپایی بهویژه آلمان رو ملاحظه کنیم.
در مورد دستهی چهارم که شما آنها را کاربران خاص منظوره نام نهادهاید، اوضاع اصلا به این اسفناکی که توصیف کردید نیست، در زمینهی ریاضیات نرمافزار Sage گوی رقبت را از بسیاری از همتاهای تجاری خود ربوده است، بسیاری از کارهای سه بعدی در زمینهی صنعت فیلم عمدتا در سکوی لینوکسی و با نرمافزارهای متنباز اجرا میشوند، چون از این دو زمینه مطلع بودم مثل بیان کردم.
با این وجود دید گستردهتری نیاز است تا موشکافانه فرآیند مهاجرت را تشریح و پیادهسازی کرد.
با احترام شایسته
یا علی
سلام دوست عزیز، من هم از نظر ارزشمند شما تشکر میکنم. در مورد دسته چهارم اصلاً اطلاعاتی درباره Sage و بقیه نداشتم و خیلی خوشحال شدم که اوضاع این دسته آنقدرها که فکر میکردم خراب نیست.
در ضمن نرمافزارهای خاصی که برای دسته چهارم اشاره کردهاید اگر پیچیدگی خاصی نداشته باشند، اصولا باید تحت واین در لیونکس قابل اجرا باشند که به عنوان آخرین راهحل ممکن از آن استفاده کرد. (به طور مثال من نرمافزار ایویوز (که یک نرمافزار اقتصادسنجی است) را به همین شکل اجرا میکنم. البته نرمافزارهای معادل بسیار وجود دارند که ما معمولا به خاطر عادت دنبالشان نمیرویم.