اپیوئید

در تلاش برای رهایی از این گرداب

چالش اسفند: پیام‌رسان peer-to-peer

این اولین چالش از پروژه‌ی ایکس من هستش. من قصد دارم تو این ماه، یک کلون از نرم‌افزار Telegram تولید کنم منتها با این تفاوت که به صورت peer-to-peer 1 پیاده‌سازی شده هستش. از اونجایی که خیلی وقت هست دوست دارم با زبان برنامه‌نویسی Erlang آشنا شم، می‌خوام هسته‌ی این نرم‌افزار رو با Erlang طراحی کنم. 2 این نرم‌افزار قراره یک رابط گرافیکی هم داشته باشه که الان نمی‌دونم می‌خوام با چی طراحی‌ش کنم ولی تلاشم اینه که دقیقا شکل تلگرام باشه از لحاظ ظاهری. 3

این نکته رو بگم که من تا حالا هیچ نرم‌افزار peer-to-peerی رو طراحی نکردم و نیاز دارم که راجع بهشون مطالعه کنم. همچنین من تقریبا هیچ چیزی از Erlang نمیدونم و تجربه‌ی نوشتن نرم‌افزار با یک زبان برنامه‌نویسی functional هم ندارم!


  1. یک شبکه‌ی peer-to-peer به این شکل هستش که کلاینت‌ها بدون وجود یک سرور مرکزی، با همدیگه به صورت مستقیم کار می‌کنند و تبادل اطلاعات می‌کنند. شبکه‌ی تورنت یک نمونه از یک شبکه‌ی peer-to-peer هستش. p2p بودن یک پیام‌رسان این مزیت رو داره که پیام‌ها دیگه روی سرور ذخیره نمی‌شن و یه جورایی می‌تونه باعث افزایش حریم خصوصی کاربران بشه. (اینجا هدف من این نیست که بحث کنم برای یک پیام‌رسان مدل p2p بهتر هستش یا client/server. صرفا یک مزیت‌ش رو گفتم)
  2. دلیل اصلی انتخاب Erlang برای من این بوده که خیلی دوست دارم باهاش آشنا بشم. ولی جدای از این قضیه، تا جاییکه تو اینترنت خوندم، Erlang برای طراحی نرم‌افزارهایی که نیاز به concurrency و failure handling دارن خیلی مناسب هست. در حد خوندن بوده و هیچ ایده‌ای راجع به جزئیاتش ندارم!
  3. خیلی دوست دارم که رابط گرافیکی رو با Electron طراحی کنم. هم cross-platform هستش و هم اینکه قبلا با Qt اپلیکیشن نوشتم و دوست دارم یک چهارچوب جدید رو تجربه کنم.

گزارش‌ها