آرشیو بهمن, ۱۳۹۱

چرا FreeSWITCH؟

منتشر شده در بهمن ۳م, ۱۳۹۱ موضوع دسته‌بندی نشده توسط

متن زیر ترجمه لینک http://www.freeswitch.org/node/117 بوده و توسط Anthony Minessale ، ایجاد کننده اصلی فری سوئیچ نوشته شده است.

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

اولین بار در سال ۲۰۰۳ از استریسک استفاده کردم. در آن زمان نسخه پیش از ۱٫۰ استفاده می‌شد و آشنایی کمی با VoIP داشتم. پس از دانلود و نصب، از اینکه پس از اتصال تلفن به کامپیوترم صدای بوق در آن شنیده می‌شد بسیار خوشحال بودم. چند روز مشغول کار با dial plan بودم و ایده‌هایی که با یک تلفن متصل به لینوکس قابل پیاده‌سازی بودند اجرایی می‌کردم. به علت سابقه زیاد در زمینه برنامه‌نویسی وب انواع ایده‌ها مانند تطابق شماره تماس‌گیرنده با شماره اکانت به منظور تشخیص علت تماس و موارد مشابه به ذهنم می‌رسید. سپس زمانی که قصد استفاده از تطابق الگوهای تماس در dial plan را داشتم نوشتن اولین ماژول را آغاز کردم. به این ترتیب نسخه ابتدایی app_perl، که اکنون res_perl نامیده می‌شود، شکل گرفت و یک مفسر Perl5 را به استریسک اضافه کرده بودم.

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

این اولین بار بود که چنین اتفاقی رخ می‌داد اما آخرین بار نبود. مطالب زیادی در مورد GNU Debugger یادگرفتم که آغاز اتفاقات زیادی بود. وقوع Deadlock در ماژول صف، Deadlock در ماژول مدیریت و کنسول. این اتفاقات اندکی باعث ناامیدی من شد اما ادامه دادم. در همین حین با Segmentation Fault برخورد کردم که برنامه‌نویسان با آن آشنایی کامل دارند. پس از حدود یک سال درگیری با باگ‌ها، بر زبان c تسلط زیادی پیدا کرده بودم و مهارتم در زمینه دیباگ کردن افزایش پیدا کرده بود. بستر مورد استفاده من شامل ۷ سرور استریسک بود که تعداد زیادی تماس در حد DS3 را سرویس‌دهی می‌کرد و مقدار زیادی کد برای استریسک نوشته بودم که کپی‌رایت آن‌ها را در اختیار دارم http://www.cluecon.com/anthm.html.