گزارش تغییرات اساسی در پیش رو

شنبه ۲۳ اسفند ۱۳۹۹
۸ دقیقه مطالعه

طی سالهای گذشته من این وبسایت استاتیک را روی جکیل و گیت‌هاب و نتلیفای اداره کرده‌ام. برای کامنت‌دونی هم از اول از دیسکاس و بعد از کامنتدونی دست‌ساز خودم استفاده کرده‌ام. الان در حال مهاجرت به سرور خودم هستم. شرح می‌دهم چرا.

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

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

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

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

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

همین ماجرا هم به نوع دیگری وقتی از نرم‌افزارهای غول‌آسا استفاده می‌کنی اتفاق می‌افتد. مثلا مدتهاست که «اوپن سورس» به واژه‌ای برای دپارتمان‌های مارکتینگ شرکت‌های مختلف تبدیل شده است. هر یک در تلاشند تا برنامه‌نویس را در تله‌ای گرفتار کنند و به او سرویسی بفروشند یا نگاهش را تغییر بدهند و به سرویس‌های خودشان وابسته بکنند. این هم خسارتی بزرگ است.

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

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

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

خلاصه بگویم که تا جایی که در توان دارم مشغول تزکیه هستم. هر جا بتوانم از آلترناتیوهایی استفاده می‌کنم که توسط برنامه‌نویس‌هایی ساخته شده است که آزادی و کاربر برایشان در اولویت بوده نه منافع تجاری شرکت. چرا که باید دیر یا زود بین منافع شرکت و سرمایه‌گذارانش و منافع کابران یکی را انتخاب بکند و سخت است که هر دو با هم بشود.

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

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

  • وب سرور بجای وب سرور نتلیفای تبدیل می‌شود به nginx – عینی کنترل کامل روی لود ریکوئست‌ها و کش و البته از دست دادن CDN – یعنی اگر DDoS ایک به سرور من بشود فعلا بی‌دفاع هستم و سایت داون خواهد شد – یعنی تولید سرتیفیکیت سایت توسط خودم (Let’s Encrypt)
  • پوش و بیلد از گیت‌هاب از کار می‌افتد – فعلا روی سرور بیلد می‌کنم و نیازی به گیت‌هاب نمی‌بینم – لازم نیست منتظر بیلد و انتشار روی نتلیفای باشم – بیلد اتومات پس از ثبث کامنت جدید از کار می‌افتد – بیلد از روی موبایل بدون دسترسی به سرور از کار می‌افتد
  • ثبت کامنت‌ها از کار می‌افتد – در حال نوشتن یک کامنتدونی جدید هستم که روی سرور اجرا می‌شود و کامنت‌ها را مدیریت خواهد کرد – گوگل کپجا از کار می‌افتد (چه بهتر!). برنامه‌ای ساده برای کشف و علامتگذاری کامنت‌های جفنگ می‌نویسم
  • ارسال ایمیل پس از ثبت پاسخ به کامنت از کار می‌افتد – از ایمیل سرور خودم استفاده خواهم کرد

خواننده‌ی عزیز، از اینکه وقت گذاشتی و این مطلب را خواندی تشکر می‌کنم. از دیدگاه‌ها هم طبق معمول استقبال می‌کنم.

پینوشت: این مطلب روی لپ‌تاپ پاین‌بوک‌پرو ۱۹۹ دلاری‌ام با سیستم عامل مانجارو مبتنی بر آرچ لینوکس و در ادیتور gedit نوشته و منتشر شد.

سورس

دیدگاه‌ها

مرتضی   ۲۴ اسفند ۱۳۹۹ 604e1c1c79f0d1b10b698227

سلام. من حدودا اواخر سال 96 بود که از طریق شما با صفحات استاتیک گیت‌هاب آشنا شدم و وبلاگم رو از بلاگ‌اسپات آوردم به گیت‌هاب. از اون موقع تا الان پست‌های وبلاگتون رو می‌خونم. این که به این تصمیم رسیدی به نظرم ناشی از این هست که دید عمیق‌تری نسبت به اکثریت پیدا کردی، البته من هم هنوز جزء اون اکثرت هستم که وجودشون باعث ساخته شدن غول‌های فناوری و درآمدهای میلیاردی و بالطبع از بین رفتن حریم‌خصوصی در وب و نقض اصل ناشناس ماندن در اینترنت شده. من هم به شخصه تلاش می‌کنم برای این رها شدن از زیر یوغ این شرکت‌ها و داشتن زندگی آنلاین (و آفلاین) آزادتر. به امید موفقیت شما در این تغییرات اساسی

  پاسخ
مهدی   ۲۴ اسفند ۱۳۹۹ 604e378f0ec130b3a34bfad5

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

  پاسخ
پرهام   ۲۵ اسفند ۱۳۹۹ 604f1ffb54783c57a65cedeb

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

  پاسخ
مهدی   ۲۵ اسفند ۱۳۹۹ 604f911ae350bd1d376ed397

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

  پاسخ
پرهام   ۲۹ اسفند ۱۳۹۹ 605493490b924c007aa520a9

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

  پاسخ