امنیت در اینترنت: آیا باز کردن ایمیل‌های ناشناس خطرناکه؟

سینا پرسیده:

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

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

این ماجرا و توصیه بر می گرده به دو نکته:

  1. به زمان های قدیم که خیلی ها برای خوندن ایمیلهاشون از ابزارهایی مثل آوت لوک استفاده می کردن که باگ های امنیتی جدی داشت. این تیپ باگ ها به فرستنده های نامه اجازه می دن کدهای مخربی بفرستن که به محض باز شدن ممکن بود کارهای نافرم بکنن
  2. مشکل دوم این بود – و هست – که ممکنه ایمیل لینکی به سایتی نامناسب داشته باشه، فایل پیوستی داشته باشه و شما رو به شکلی گول بزنه که دانلودش کنین و اجراش کنین یا مثلا توش اینقدر قانع کننده نوشته باشه «شما برنده صد میلیون دلار شدین، برامون هزار دلار بفرستین تا پولتون رو حواله کنیم» که شما واقعا گول بخورین.

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

در نتیجه در دنیای فعلی، بازکردن ایمیل خطرناک نیست. البته باز کردن یک ایمیل دو تا کار نامناسب می تونه بکنه:

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

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

آیا ما حق آزادی پسورد داریم؟

آوا سوال بانمکی پرسیده:

‌من میخوام پسورد 123456 رو برای اکانت جیمیلم بزارم ولی گوگل به دلیل امنیتی اجازه نمیده و میگه برای منافع خود من مضر هست . ولی من واقعا دلم میخواد پسورد 123456 بزارم. تو با گوگل موافقی که نمیزاره من پسورد 123456 بزارم یا با من موافقی که من حق آزادی پسورد دارم ؟!

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

در اینجا هم ما با یک شرکت طرفیم که یک سرویس ساخته و هر کس بخواد ازش استفاده کنه در محدوده ای معقول باید پذیرای قوانین اون سرویس باشه. شاید من بگم «توی تودوئر فقط از ساعت ۱۰ صبح تا ۱۰ شب می شه کار اضافه کرد». آیا حقی از شما ضایع شده؟ اگر این رو بپذیرین و بیاین تو نه. می تونین از سرویس دیگه استفاده کنین یا مال خودتون رو بنویسین. وقتی حقی از شما ضایع می شه که من بگم «تنها تودولیست مجاز من هستم و قانون اینه و هر کس هم اعتراض کنه دستگیر می شه» (:

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

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

جواب نهایی؟ بله گوگل حق داره بگه در شرکت من و رو سرویس های من اینطوری رفتار کنین‌ ولی اینکه بگیم فلان پسورد غیرامن است پس هر کس استفاده کرد مجرم است، فعلا غیرقانونیه. البته ممکنه روزی به همین شکل که بستن کمربند ایمنی یا داشتن بیمه شخص ثالث اجباری است، اونم اجباری بشه؛‌ هرچند که اگر در چنان جامعه ای باشیم و کسی بتونه کشف کنه که پسورد فعلی شما ۱۲۳۴۵۶ است، اول باید اون سرویس رو به خاطر امن نبودن، تعطیل کنن.

توضیح خاص: یه اشتباه شد.. یک دوستی بهم یه نظر تو چت داد. من هیچ وقت چت های اینطوری رو جواب نمی دم چون جاشون تو کامنت است ولی خب از روشون رد می شم. در این مورد خاص اشتباهی دستم خورد به اسپم و نه پرسید و نه هیچچی و طرف رو اسپم کرد (: اگر اینجا رو می خونی شرمنده ((:

لایسنس های نرم افزاری چیستند

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

eula2

وقتی نرم‌افزاری رو نصب می کنین معمولا قبلش یک «توافقنامه» رو امضا می کنین که مرتبط با شرایط استفاده از نرم افزار است. این لایسنس یا اجازه‌نامه به شما چیزهایی مثل این رو می‌گه که

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

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

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

  1. کاربران باید اجازه داشته باشند که نرم‌افزار مورد نظر را برای هر قصد و منظوری اجرا کنند.
  2. کاربران باید اجازه داشته باشند نرم‌افزار را مطابق با نیازهای خود تغییر دهند. برای رسیدن به این هدف، کدهای منبع نرم‌افزار باید در اختیار کاربر قرار گیرد.
  3. کاربران باید اجازه داشته باشند نرم‌افزار را مجدداً منتشر کرده و در اختیار دیگران قرار دهند. این کار می‌تواند به صورت رایگان و یا در ازای دریافت مبلغی پول صورت گیرد.
  4. اگر کاربری نرم‌افزار را تغییر داد، باید اجازه داشته باشد آن را مجدداً منتشر کرده و در اختیار دیگران قرار دهد. (در مورد نرم‌افزارهای کپی‌لفت، لازم است تا کدهای منبع نرم‌افزار تغییریافته نیز در اختیار کاربران دیگر قرار گیرد)

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

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

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

آیا عکس گرفتن از آدم‌ها در خیابان نقض حریم شخصی اونهاست؟

سوال:

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

اول باید بگم که جواب‌های من جواب‌های حقوقی نیستن. قانون ایران (اگر قانونی داشته باشیم) رو نمی‌دونم و کلا هم بحث دقیقا حقوقی‌اش از حوزه تخصصی من خارجه اما این سوال رو دوست دارم چون لایه‌های متنوعی داره.

tehran1منبع

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

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

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

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

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

پرسش و پاسخ: برچسب‌ها و تی‌شرت‌هام از کجا می‌یان

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

روی همین اصل من می‌خوام به این سوال کمی غیرمرسوم جواب بدم که

جادی تی‌شرت‌ها و برچسب‌های لپ‌تاپت رو از کجا می‌یاری؟

برای این سوال جواب سر راست و خلاصه‌ای وجود نداره ولی می‌تونیم از چند زاویه بهش نگاه کنیم. مثلا می‌شه گفت تی‌شرت‌ها و برچسب‌ها از اینجاها به دست می‌یان:

  1. خودم درست می‌کنم. راستش این گزینه برای من دیگه کمتر اتفاق می‌افته. من چندین ساله که چنین چیزهایی رو خودم درست نکردم اما زمان دبیرستان به بعد روی بلوزهام نقاشی‌هایی که دوست داشتم رو می‌کشیدم، روشون طرح می‌زدم یا لوگوها و نوشته‌های مورد نظرم رو روی کاغذ پست چسب‌دار پرینت می‌گرفتم، دورش رو قیچی می‌کردم و به وسایل (از جمله لپ‌تاپ) می‌چسبوندم. گزینه دیگه سفارش دادن چاپ روی پیرهن به شرکت‌هایی است که این خدمات رو ارائه می‌دن. وضعیت مشابهی داره لباس جدای همایش اینده وب که از این الگو دوخته شده.
  2. می‌خرم. مثلا اون شیر پشت لپ‌تاپ فعلی از سفر به بالی خریداری شده، تی‌شرت «به من اعتماد کنید، من برنامه نویس‌ هستم» از یک مغازه اینترنتی خریداری شده و … این ساده‌ترین روش به دست آوردن این تیپ چیزها و در عین حال حوصله سربرترین اون‌ها است.
  3. پیدا می‌کنم. این شاید جالبترین گزینه است. همه چیز رو نباید با پول صاحب شد. مثلا اون تی‌شرت که روش آلمانی نوشته و زیرش دسته بازی داره رو من توی یک لباس دست دوم فروشی دیدم و خریدم (: گشتن دنبالش جالب بود و خریدنش هم تجربه ای جالب. یا لپ تاپ قبلی یک استیکر «افغان بیسیم» داشت که وقتی اونجا کار می‌کردم درخواست کرده بودم بهم بدن و ..
  4. هدیه می‌گیرم. وقتی بگین از این چیزها دوست دارین خب بقیه هم لطف دارن و هدیه می‌دن. مثلا یک دوست خوبم از برادرش که تو گوگل مپ است تی‌شرت آبی «من اینجا هستم» رو برام گرفته بود و تی‌شرت قشنگ پایرت بی و برچسب پایرت بی پشت لپ تاپ هدیه دوستان خوبم توی آیویوید است. مجموعه دیگه از هدایای این تیپی نتیجه کنفرانس ها است و شرکت‌ها و حتی هدیه از طرف دوستان غیرگیکی که می‌دونن من از این چیزها خوشم می‌یاد.

معلومه که در این وسط اولی و چهارمی از دوتای دیگه ارزشمند تر هستن ولی یک نکته خیلی مهم در این میون باید ذکر بشه:

ما چیزی بیشتر از لباس و وسایل هستیم

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

اوه! و DIY یا همون Do It Youself و در سطحی پایینتر پیدا کردن، بسیار ارزشمندتر از خریدن است. کسی که چیزی رو خودش می‌سازه در واقع داره دنیا رو به شکلی که دوست داره تغییر می ده و زمین تا آسمون متفاوت است با کسی که طبق قوانین استاندارد دنیا پول می ده و سعی میکنه باحال بودن رو بخره.

آیا لینوکس هم باگ داره؟

رحیم پرسیده:

سوال؟!
آیا لینوکس هم باگ داره؟ خیلی خوشحال میشم در موردش تو وبلاگ یا پادکست صحبت کنی.

خب این سوال چند تا جنبه داره. اول بذار ببینیم منظور از لینوکس چیه. از نظر فنی لینوکس فقط یک هسته سیستم عامل است که در کنار یک مجموعه بزرگ ابزار به اسم گنو و کلی پروژه دیگه تشکیل یک سیستم عامل کامل می دن که اسم درستش باید باشه گنو/لینوکس ولی خب برای راحت شدن زندگی خیلی وقت ها به این مجموعه بزرگ سیستم عامل که ترکیب یک هسته (لینوکس) و کلی برنامه دیگه (پروژه گنو) است هم می گیم همون لینوکس.

کرنل لینوکس به عنوان یک هسته حدود ۱۵ میلیون خط کد است در ۳۷هزار فایل پخش شدن و کل پروژه گنو/لینوکس (مثلا اوبونتو) چیزی حدود ۲۰۰میلیون خط برنامه است. سوال ساده اینه: آیا اصولا ممکنه اینهمه خط کد اشتباه نداشته باشه؟ (: بذار یک فلوچارت بکشم:

آیا برنامه باگ داره

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

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

و خب تا اینجا بحث باگ داشتیم اما مشکلات دیگه‌ای هم هست. مثلا بعضی از سازنده‌های سخت افزار تنبل هستن (شایدم خبیث!) که درایورهاشون رو برای لینوکس نمی دن و در نتیجه اگر اون سخت افزار رو روی لینوکس داشته باشین به دردسر می خورین یا مثلا اصولا برنامه ای برای محیطی مثل ویندوز درست شده و اینجا با دردسر بهش دسترسی داریم (مثلا کلاینت وایبر یا اسکایپ که به کیفیت ویندوزی اش نیست).

پس جواب خلاصه این می هش که هر برنامه ای که هست باگ داره و مشکلات متنوع. تفاوت در اینجاست که در دنیای لینوکس باگ ها سریع حل می شن و در نهایت اگر مشکلی هست به خاطر بی سوادی ما است که نمی تونیم اون باگ رو حل کنیم نه به خاطر اینکه اصولا برنامه بسته است و ما حق نداریم به عنوان یک برنامه نویس یا هکر تلاش کنیم دنیا رو بهتر کنیم و فقط باید منتظر بالایی ها بمونیم که اگر خواستن مشکل ما رو حل کنن.

«من می خوام برنامه نویس کرنل بشم، چیکار باید بکنم؟»

آرمان پرسیده:

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

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

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

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

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

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

ببینم دوستان.. کسی رو داریم به کرنل لینوکس چیزی اضافه کرده باشه؟ احتمالا خیلی ها نظرات دقیقتری از من دارن که خوشحال می شم به اشتراک بذارن.

سوال جواب: توسعه چند پلتفرمی

مسعود پرسیده:

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

پس من یک زبان می خوام که نیازی به نصب برنامه اضافی توسط کاربرا نداشته باشه مثل جاوا ! امکان خروجی گرفتن برای ویندوز ، ویندوز فون ، iOS ، اندروید رو داشته باشه و بشه باهاش یک سایت راه انداخت! که منبع اطلاعات همگی از یک سرور باشه! نظر خود من روی پایتونه با فریموورک های Kivy و Django ه! ولی فریموورک های معروف دیگه ای رو هم شنیدم مثل phonegap یا Haxe که به نظر میاد خوب باشن مخصوصا haxe که خودش یه زبان مجزاش و شما یه برنامه باهاش مینوسی و چند تا خروجی متفاوت برای پلتفرم های مختلف بهت میده!

چون جواب از تخصص من خارج بود، گفتم بذارم اینجا تا شاید کسی بتونه راهنمایی مناسبی بکنه.