داستان و ساختار آزادقلم، از شهریور ۹۸ تا به امروز...

گرچه هنوز ته دلم با ویرگول صاف نشده، اما ترجیح شخصیم اینه که مطالبی از این دست رو در ویرگول بنویسم. در این پست، قصدم اینه که در مورد آزادقلم بنویسم! از این که چرا ایده‌ش به سرم زد؟! چرا نوشتمش؟ و این که چطوری از یه ایده خیلی خام تو مدت کوتاهی (که فکر کنم به یک ماه نکشید) به فاز MVP رسوندمش و قویا معتقدم که هنوز که هنوزه MVP عه. البته شاید هم تا ابدالدهر MVP بمونه.


ایده‌پردازی آزادقلم

چرا ایده آزادقلم به سرم زد؟

سال ۹۸، مشغول کار روی یه پروژه شخصی بودم و نیاز داشتم در یک پروژه‌ای که از روبی آن ریلز استفاده می‌کنه، از بوتسترپ استفاده کنم. در آموزشی که میخوندم، یک اشاره ریزی به API گوگل شده بود که با توجه به داده‌های ورودی (مثل اسم و سایز و وزن فونت) به شما CSS لازم و کافی رو میده. ایده از اینجا به سرم زد که چرا یه نمونه با فونت‌های خوب داخلی نه؟

فونت‌های خوب داخلی، همگی معرف حضور هستند. یکی از فونتایی که من شخصا استفاده می‌کنم، فونت وزیر ساخته صابر راستی‌کردار عزیزه که خب در مدت کوتاهی، تونست به یکی از فونت‌های پراستفاده وب فارسی تبدیل بشه. در واقع ایده‌م این بود که از اول بیام صرفا یه چیزی بسازم که وزیر رو اضافه کنه به صفحات وب. اما این واقعا کافی نبود. لازم بود ولی کافی نبود ...

خلاصه گشتی بین فونتای آقای راستی‌کردار زدم و پیش خودم گفتم که خب بسیار هم عالی!!! همه اینا رو برای فاز تست میارم تو پروژه‌م. خلاصه که یه بررسی کوچک روی ساختار فونت‌ها در CSS انجام دادم و شروع کردم صرفا CSS نوشتن (درسته، اول قضیه صرفا CSS نوشتم). بعد از اتمام این قضیه، یاد یه نکته مهم افتادم، اون هم این که فونت‌های آقای راستی‌کردار همگی «آزاد» هستند. پس گفتم اسم پروژه رو (که روی لپتاپم هنوز font-api عه) میذارم «آزادقلم».

چرا فونت‌های آزاد؟

استفاده از نرم‌افزار آزاد همیشه کم‌هزینه‌ترین راه برای رسیدن به بهترین نتیجه‌ست. می‌پرسید چرا؟ یک نگاه به سیستم عامل مک بندازید. نه تنها هسته (هسته Darwin که فورکی از سیستم‌عامل FreeBSD عه کاملا آزاده. شما حتی میتونید خودتون کامپایلش کنید) بلکه بسیاری از ابزارهاش هم آزادند. حتی در سیستم‌عامل از gcc پروژه گنو استفاده میشه.

نمونه دیگر، اندروید گوگله! اندروید از نرم‌افزارهای آزاد مثل لینوکس و جاوا استفاده می‌کنه و خب همونطور که می‌دونید یکی از ابزارهاییه که گوگل رو گوگل کرده!

و این قضیه اینجا هم صادق بود به دو دلیل :

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




طراحی و پیاده‌سازی

نوشتن API

یادمه روزهای زیادی رو صرف این کردم که چطور میتونم خروجی یک endpoint خاص از API رو جای این که plain text یا JSON بدم، CSS بدم! این پروسه دقیقا ده روز از من وقت گرفت. باقیش خیلی وقت‌گیر نبود و میشه گفت با سرعت خوبی نوشته شد. بعد از این که این قضیه تمام شد، نوبت تستش شد.

چندین و چند بار لوکال تستش کردم. از یک API دیگر می‌دونستم که باید مشکل CORS هم حل کنم. پس همه اینا رو چیدم کنار هم و مشکلاتی که به نظرم می‌اومدن رو قبل دپلوی کردن پروژه، رفع و رجوع کردم. اما خب یه سری ریزه‌کاریا موند که بعد دپلوی انجام شد.

خرید دامنه و ایجاد بلاگ

این بخش اصلا سخت نبود. اتفاقا به سادگی، یک هاست لینوکس آلمان تهیه کردم و خب خود شرکت هاستینگ با مبلغ ۳-۴ هزار تومان وردپرس هم نصب می‌کرد. پس اینطوری بخش بزرگی از کار جلو افتاد. ضمن این که یک دوست بسیار عزیزی هم، زحمت طراحی لوگو رو واقعا با قیمت دانشجویی کشید. در واقع وبلاگ کم‌زحمت‌ترین بخش آزادقلم بود و در عرض ۲۴ ساعت اومد بالا.

دپلوی API

دپلوی کردن API از طرفی هم سخت بود هم آسون. به قولی «سهل و ممتنع». اولین بار بود که به جای استفاده از PaaS داشتم مستقیم روی سرور دپلوی می‌کردم. اون هم کد روبی. بعد از اون هم باید یه سری ریزه‌کاریا مثل SSL و ... انجام می‌شد. علیرضا فریدونی عزیز، در این قسمت واقعا به من کمک کرد و این موارد رو حداقل در لحظه دپلوی، رفع و رجوع کرد.

اما چند ساعت پس از دپلوی اولیه، دیدم که ارور CORS از سرور میاد. به جای این که وقت علیرضا رو بگیرم شخصا دنبال رفع این ارور روی NGINX رفتم و در عرض حدود یک الی دو ساعت درستش کردم. بعد هم حدود یک هفته فقط تست کردیم. فکر کنم طولانی‌ترین staging تاریخ برای این پروژه بوده باشه.



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

همون اوایل، سروری که API روش دپلوی شده بود در کشور آلمان بود. در همون دوره قطعی مقدمات انتقال به ایران رو فراهم کردم. بعد از مدت نسبتا طولانی در شهریور ۹۹ آوردمش روی یک سرور در ابر آروان. لازم به ذکره که از حدود فروردین ۹۹ سرویس API کاملا پایین بود و خدمت‌دهی نداشت. به همین خاطر این راهنما رو در وبسایت آزادقلم نوشتم:

https://azadqalam.ir/how-to-make-an-instance/


تا حداقل به صورت شبه‌فدریتد آزادقلم زنده بمونه. اما چرا برای بار دوم آزادقلم پایین آمد؟ خب فکر کنم با نظرات من پیرامون پروژه ابرایران و همکاری ابرآروان با این پروژه آشنا باشید. عمده‌ترین دلیلش این بود. دلیل دیگرش هم این که هزینه سرور و ... به شدت داشت می‌رفت بالا و تصمیم گرفتم تا وقتی به یک پایداری خاص و خوبی برای تامین هزینه سرورها نرسیدم، دوباره چنین سرویسی رو عرضه نکنم.



شما چی فکر می‌کنید؟ به نظرتون چه مدت زمانی برای MVP موندن یه پروژه خوبه؟ به نظرتون آیا پروژه‌ای مشابه آزادقلم زنده می‌مونه؟!

راستی، اگر نمونه شخصی از آزادقلم هوا کردید، حتما به من خبر بدید :)