paint-brush
BuT, BuT, BuT aUtH iS HaaRrRrRrRrRdদ্বারা@dbozhinovski
481 পড়া
481 পড়া

BuT, BuT, BuT aUtH iS HaaRrRrRrRrRd

দ্বারা Darko Bozhinovski8m2024/08/19
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

না, তা নয়। এটি বিরক্তিকর, লাল-টেপি, একটি সমাধান করা সমস্যা... তবে এটিকে কম্বল বিবৃতি হিসাবে কঠিন বলবেন না।
featured image - BuT, BuT, BuT aUtH iS HaaRrRrRrRrRd
Darko Bozhinovski HackerNoon profile picture


না, তা নয়। এটি বিরক্তিকর, লাল-টেপি, একটি সমাধান করা সমস্যা... তবে এটিকে কম্বল বিবৃতি হিসাবে কঠিন বলবেন না।


আমি "পিএইচপিতে পাসওয়ার্ড হ্যাশ করতে MD5 ব্যবহার করেছি" বছর বয়সী। নিশ্চিত, এটি একটি ভয়ঙ্কর ধারণা ছিল, এমনকি 2012 সালেও। কিন্তু, তারপরে, আমার মনে পড়ে না যে লেখককে "কঠিন" বলে বিবেচনা করেছি। এটি নিজেই একটি খুব সহজবোধ্য অগ্নিপরীক্ষা ছিল - একটি ইমেল বা একটি ব্যবহারকারীর নাম পান, একটি পাসওয়ার্ড পান, এটি হ্যাশ করুন (MD5 সহ, "ঈশ্বর অভিপ্রায়" হিসাবে), এবং আপনি যদি বিশেষভাবে সুরক্ষা সচেতন হন তবে [ লবণ ] পাসওয়ার্ড। কোথাও যে সব সংরক্ষণ করুন, সাধারণত একটি ডাটাবেসে. তা-দা, সাইনআপ হয়ে গেছে।


আজকাল, আখ্যান পরিবর্তন হয়েছে। "অথ ইজ হার্ড" একটি চির-বর্তমান আখ্যানের মতো মনে হয় যা একটি হ্যাকারনিউজ বা রেডডিট ক্লিক দূরে রয়েছে৷ কিন্তু এটা কি সত্যিই? IMO, সত্য হল, auth তৈরি করা কঠিন নয় - যে কেউ এটি শিখতে পারে (এবং কাজের এই লাইনের প্রত্যেকেরই মৌলিক বিষয়গুলি শিখতে হবে)। আসল চ্যালেঞ্জটি অতিরিক্তগুলির মধ্যে রয়েছে: MFA, ব্যবহারকারী পরিচালনা, পাসওয়ার্ড রিসেট, OAuth প্রদানকারীর প্রতিটি এবং বিভিন্ন প্রদানকারীদের থেকে অ্যাকাউন্ট একত্রিত করা। এটা হাজার কাটা দ্বারা মৃত্যু. যেহেতু auth একটি সমাধান করা সমস্যা, তাই চাকাটি পুনরায় উদ্ভাবন করা আপনার সময়ের সর্বোত্তম ব্যবহার নয়। কিন্তু এর অর্থ এই নয় যে "প্রমাণ কঠিন" কারণ একটি কম্বল বিবৃতি সঠিক বা এমনকি সঠিকের কাছাকাছি। আপনার পরীক্ষা করা উচিত, মূল বিষয়গুলি বোঝা এবং সেখান থেকে তৈরি করা উচিত। আপনি যা তৈরি করছেন তার স্কেল (বা সম্ভাব্য স্কেল) দিয়ে জটিলতা বৃদ্ধি পায়।


সুতরাং, কতটা কঠিন প্রমাণীকরণ সত্যিই হতে পারে? এর খনন করা যাক.


আগের দিনগুলোতে...

পিএইচপি এবং এমডি 5 সম্পর্কে আমি যেখানে গল্পটি রেখেছিলাম সেখানে পিক আপ করা, একটি লগইন কার্যকারিতা তৈরি করা একই ধরণের ধাপ অনুসরণ করে; একটি ইমেল এবং একটি পাসওয়ার্ড পান, আপনার সঞ্চয়স্থানে ইমেলের অস্তিত্ব পরীক্ষা করুন, সেই ইমেলের জন্য সংরক্ষিত লবণের সাথে পাসওয়ার্ডটি হ্যাশ করুন, ডাটাবেসে সংরক্ষিত একটির সাথে ফলাফলের হ্যাশের তুলনা করুন এবং যদি এটি সব ঠিকঠাক কাজ করে, setcookie মাধ্যমে একটি কুকি সেট করুন (আমরা এখনও এখানে পিএইচপি ল্যান্ডে আছি - এমন নয় যে অন্যান্য ইকোসিস্টেমের সামগ্রিক যুক্তি খুব আলাদা ছিল)।


সাইন আউট করা আরও সহজ ছিল - শুধু সার্ভারে কুকি বাতিল করুন এবং আপনার কাজ শেষ। সার্ভার যদি পরবর্তী অনুরোধের সাথে একটি কুকি দেখতে না পায়, তাহলে আপনি লগ ইন করেননি৷ তাই প্রমাণীকৃত রুটগুলি করাও সামগ্রিকভাবে একটি সাধারণ অগ্নিপরীক্ষা ছিল৷ অনুমতির ক্ষেত্রে জিনিসগুলি লোমশ হয়ে উঠতে পারে, তবে প্রায়শই না, আমাকে যে অ্যাপগুলি তৈরি করতে হয়েছিল, আমাদের কাছে কেবল অ্যাডমিন এবং ব্যবহারকারী ছিল। কোনটি এমন কিছু যা আপনি কেবল ব্যবহারকারীর রেকর্ডের সাথে বা অনুমতি সারণীতে একত্রে সঞ্চয় করতে পারেন যদি আপনার অ্যাপের জন্য আপনার ভূমিকার পরিমাণ প্রসারিত করার প্রয়োজন হয়।


সম্পূর্ণ প্রকাশ—আমি সুপারটোকেনের জন্য কাজ করি। এই অংশটি, যাইহোক, একটি কম্বল বিবৃতি হিসাবে প্রমাণীকরণ কতটা কঠিন সে সম্পর্কে একটি সর্বব্যাপী বর্ণনার উপর ব্যক্তিগত হতাশা থেকে জন্মগ্রহণ করা হয়েছে। অন্য কথায়, আমি "আপনাকে আমার জিনিস বিক্রি করার" চেষ্টা করছি না। আপনি যা খুশি ব্যবহার করুন.


আপনার নিজের রোল - একটি "আধুনিক" গ্রহণ

ইমেল/পাসওয়ার্ড এবং সামাজিক প্রমাণীকরণ

আজ আমরা যেখানে আছি সেখানে পৌঁছানোর জন্য, আমরা শুরুতে শুরু করব... আশ্চর্যজনক, আমি জানি। আমরা সম্ভবত একমত হতে পারি যে এই উপাদানগুলি একটি ইমেল/পাসওয়ার্ড + সামাজিক লগইন PoC তৈরি করার জন্য যথেষ্ট:


  1. একটি সার্ভার যা রুটগুলি পরিচালনা করে - সাইনআপ, সাইন-ইন, সাইন-আউট...
  2. ব্যবহারকারীর রেকর্ড রাখার জন্য কিছু ধরনের স্টোরেজ (একটি ইন-মেমরি অ্যারেও কাজ করে)
  3. ভিউ - লগইন, সাইনআপ এবং প্রমাণীকৃত "ড্যাশবোর্ড" স্ক্রীন।
  4. সামাজিক প্রমাণের জন্য হ্যান্ডলার


এক্সপ্রেস এবং পাসপোর্টের সাথে যাওয়া, যেহেতু আমরা চাকার নতুন উদ্ভাবন করতে যাচ্ছি না, আমরা খুব, খুব নিস্তেজ এবং পুনরাবৃত্তিমূলক কোডের ঠিক 150 লাইনে পৌঁছেছি: https://github.com/supertokens/auth-express/blob/master/index এমজেএস পরবর্তী বিভাগটি হবে সারফেস-লেভেল ব্যাখ্যাকারী কোডে কী চলছে, তাই আপনি যদি ধারণাগুলির সাথে ইতিমধ্যেই পরিচিত হন তবে নির্দ্বিধায় এগিয়ে যান । এক্সপ্রেস অ্যাপটি যাইহোক একটি PoC।


আসুন দ্রুত এটি বিচ্ছিন্ন করা যাক:

পর্দায় স্টাফ রেন্ডারিং

আমি যেভাবে এটি দেখছি, এটির কাছে যাওয়ার দুটি উপায় রয়েছে - রেন্ডারিং দিয়ে শুরু করুন এবং প্রমাণীকরণ রুটে বা অন্য পথে যান। বেশিরভাগ দৈবক্রমে, আমি একজন FE-ভারী pleb হয়েছি (আমি এখনও এসকিউএল করতে পারি, যদি আপনি ভাবছেন), তাই আমি "অন-স্ক্রীন রেন্ডারিং স্টাফ" পদ্ধতির সাথে শুরু করব।


যেহেতু এটি একটি PoC, আমরা সমস্ত প্রতিক্রিয়া-অভিনব যেতে যাচ্ছি না। Ejs সহ প্লেইন ol' SSR ঠিক কাজ করবে: https://github.com/supertokens/auth-express/tree/master/views

রুট যোগ করা হচ্ছে

কিছু passport.js উদাহরণের উপর ভিত্তি করে, কিন্তু আরও সরলীকৃত, আমাদের নিম্নলিখিত প্রয়োজন:

  1. কিছু ডিপস: npm i passport passport-local express-session । আসুন সংক্ষেপে প্রতিটি সম্পর্কে যাই:

    1. Passport.js - এক্সপ্রেস এবং নোডের জন্য OG auth Middleware।
    2. পাসপোর্ট-স্থানীয় - পাসপোর্টের জন্য একটি প্রমাণীকরণ কৌশল; একটি মডিউলে একটি প্রমাণীকরণ কৌশল যা একটি নির্দিষ্ট প্রমাণীকরণ পদ্ধতির জন্য প্রমাণীকরণ প্রক্রিয়া পরিচালনা করে - এই ক্ষেত্রে, একটি ব্যবহারকারীর নাম (ইমেল) এবং পাসওয়ার্ড ব্যবহার করে একটি স্থানীয় লগইন।
    3. এক্সপ্রেস-সেশন - একটি মিডলওয়্যার যা সেশন ডেটা পরিচালনা করে, আপনাকে HTTP অনুরোধগুলির মধ্যে ব্যবহারকারীর সেশনগুলি সংরক্ষণ এবং বজায় রাখতে দেয়। এটি প্রতিটি ক্লায়েন্টকে একটি অনন্য সেশন আইডি বরাদ্দ করে কাজ করে, যা ক্লায়েন্টের পাশে একটি কুকিতে সংরক্ষণ করা হয় এবং সার্ভারে সেশন ডেটা পুনরুদ্ধার করতে ব্যবহৃত হয়।
  2. আমাদের ব্যবহারকারীদের সংরক্ষণ করার একটি জায়গা (উপরে লিঙ্ক করা উদাহরণটি একটি ইন-মেমরি অ্যারে ব্যবহার করে): https://github.com/supertokens/auth-express/blob/master/index.mjs#L13

  3. আমাদের পাসপোর্ট উদাহরণের জন্য কনফিগারেশন এবং ব্যবহারকারীর সন্ধানের জন্য আগত অনুরোধগুলি পরিচালনা করার জন্য আমাদের স্থানীয় কৌশল উদাহরণ: https://github.com/supertokens/auth-express/blob/master/index.mjs#L18

  4. পাসপোর্ট শুরু করুন ( https://github.com/supertokens/auth-express/blob/master/index.mjs#L60 ) এবং এক্সপ্রেস-সেশন ( https://github.com/supertokens/auth-express/blob/master/ index.mjs#L69 )।


শব্দভাষা, নিশ্চিত. কঠিন? আমি তাই মনে করি না, অন্তত বাস্তবায়ন-এ-এ-এ-এ-টয় অর্থে নয়। কিন্তু আমরা কিছুক্ষণ আগে ইমেল/পাসওয়ার্ড কম্বো ব্যবহার করে অতীতে চলে এসেছি। আমাদের যা আছে তার উপরে একজন সামাজিক প্রদানকারী যোগ করা কতটা কঠিন তা পরিদর্শন করা যাক।


এখানে একটি উদাহরণ প্রদানকারীর জন্য, আমি একটি সাধারণ কারণে GitHub-এর সাথে যাওয়ার সিদ্ধান্ত নিয়েছি—যদি আপনি সম্পূর্ণরূপে অনুসরণ করার সিদ্ধান্ত নেন, এটি শুরু করার জন্য সবচেয়ে সহজ প্রদানকারীদের মধ্যে একটি (আপনার দিকে তাকিয়ে, Google)।


আপনি যদি সম্পূর্ণভাবে অনুসরণ করার সিদ্ধান্ত নেন, তাহলে এই GitHub কীগুলি কীভাবে পাবেন তা বর্ণনা করে এখানে একটি লিঙ্ক রয়েছে: https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth- অ্যাপ ওহ, এবং BTW, রেপোতে থাকাগুলি বৈধ নয়, যদি আপনি চিন্তিত হন ;)

আমাদের PoC-তে GitHub OAuth2 সংহত করা হচ্ছে

প্রথমত, আমাদের আরও একটি নির্ভরতা প্রয়োজন, npm i passport-github2passport-github2 হল পাসপোর্টের জন্য একটি প্রমাণীকরণ কৌশল, যা আমাদের GitHub-এর OAuth2 API-এর সাথে একীভূত করার অনুমতি দেয়।


কিছু হ্যান্ডলার ( https://github.com/supertokens/auth-express/blob/master/index.mjs#L122-L133 ) এবং কনফিগারেশন ( https://github.com/supertokens/auth-express/blob/master/ index.mjs#L29-L45 ) পরে, ভাল, এটাই। জটিল? সম্ভবত না। লাল-টেপি? আপনি বাজি ধরুন। বিরক্তিকর? একেবারে। বিশেষ করে যদি আপনি এটি বারবার করতে পান। এটি একটি সমাধান করা সমস্যা; চাকার পুনঃউদ্ভাবন প্রায়শই একজনের সময়ের সর্বোত্তম ব্যবহার নয় যেমনটি আমরা প্রতিষ্ঠিত করেছি।


বড় ধারণা

এখন পর্যন্ত, আমরা সম্ভবত একমত হতে পারি যে Auth তৈরি করা কঠিন নয়। অতএব, এটি এই জাদুকরী জিনিস নয় যে শুধুমাত্র সাদা-দাড়িওয়ালা জাদুকররা যারা JWT-এর রহস্যময় ভাষায় কথা বলে তারা বুঝতে এবং প্রয়োগ করতে পারে।


না, আসলে, আমি যুক্তি দেব যে একজন বিকাশকারী হিসাবে, একজনকে প্রমাণীকরণ কীভাবে কাজ করে তার বেয়ার বেসিকগুলি বোঝা উচিত। এবং আমি প্রায়ই একটি বর্ণনা দেখি যা অন্যথায় দাবি করে - "আমাকে বিশ্বাস করুন, ভাই, আমরা আপনার জন্য এটি পরিচালনা করতে পারি" এর সুরে কিছু। এবং নিশ্চিত, আমি সম্মত যে বেশিরভাগ অংশের জন্য, আপনার নিজের প্রমাণ রোল করা সময়ের অপচয়। তবে এটি তৈরি করা এত কঠিন নয় এবং এটি অবশ্যই একটি রহস্যময় জিনিস নয়। যেখানে এটি সত্যই লোমশ হয়ে ওঠে তা আশেপাশের প্রমাণ এবং ব্যবহারকারীর অভিজ্ঞতার সাথে।


এটি বিবেচনা করুন - উপরের উদাহরণে, আমাদের কাছে একটি কার্যকরী প্রমাণীকরণ জিনিস রয়েছে। সাজানোর। কিন্তু এটি যা করতে পারে না তা এখানে (নিবন্ধ ওপেনারেও উল্লেখ করা হয়েছে):

  • 2FA, MFA
  • পাসওয়ার্ড রিসেট
  • শত শত OAuth প্রদানকারীর প্রত্যেকটি তাদের নির্দিষ্টতার সাথে
  • ব্যবহারকারী ব্যবস্থাপনা
  • বিভিন্ন প্রদানকারীর থেকে অ্যাকাউন্ট একত্রিত হয়
  • সমস্ত সম্ভাব্য প্রান্ত কেস এবং সম্ভাব্য নিরাপত্তা গর্ত আবরণ
  • ...এবং আমি যেতে পারি


আমরা সম্ভবত এই প্রতিটি বাস্তবায়ন করতে পারেন. এবং তার নিজের উপর, প্রতিটি টুকরা সহজ বিবেচনা করা যেতে পারে। কিন্তু এটা যোগ. সুতরাং, এটি অগত্যা বাস্তবায়ন নয়—এটি এটি বজায় রাখা, এর জন্য দায়ী হওয়া, মানদণ্ডের সাথে আপ টু ডেট থাকা, নিরাপত্তা লঙ্ঘন ইত্যাদি। এছাড়াও, হাতের প্রদর্শনী—আপনার মধ্যে কতজন RfC পড়তে পছন্দ করেন? আমি কল্পনা করি না যে আমরা যদি একটি মিটআপে থাকতাম তবে আমি অনেক হাত উত্থাপিত দেখতাম।


আমার বক্তব্য হল প্রমাণ করা সহজ নয়, সামগ্রিকভাবে নেওয়া। অবশ্যই, আমরা উপরে যেমনটি করেছি, আমরা সহজেই একটি PoC-এর জন্য কিছু একত্রিত করতে পারি। কিন্তু এটা যাদুকর নয়, এটা বোঝা অসম্ভব নয়, এবং দয়া করে বলবেন না যে এটা। সেই চিন্তাধারা (এবং বিপণন), IMO, সামগ্রিকভাবে শিল্পের জন্য ক্ষতিকর।


সুতরাং, স্বাভাবিক ফলো-আপ প্রশ্নটি হবে - কখন আপনার নিজের রোল করা উচিত?

খেলনা প্রকল্প, ইন্ডি, এবং শিক্ষাগত সাধনা

...সব উপায়ে আমি এমনকি এটা উত্সাহিত চাই. তুমি করে অনেক কিছু শিখেছ, তাহলে কেন পারো না? যদি আপনার ইন্ডি/টয় প্রোজেক্ট বা ব্লগে যথেষ্ট ব্যবহারকারীর ভিত্তি বা অনুসরণ করা হয়, তাহলে এটিকে একটি পরিষেবা, একটি স্ব-হোস্টেড সমাধান বা অন্য কিছুতে পরিবর্তন করুন। সর্বোপরি, সেই সময়ে আপনার কাছে একটি পণ্য রয়েছে এবং আপনার সময় নিঃসন্দেহে প্রমাণীকরণ বজায় রাখার পরিবর্তে সেই পণ্যটি তৈরিতে আরও ভাল ব্যয় হবে।

স্টার্টআপ

সাধারণত, আপনি যদি পণ্য তৈরি করছেন, আপনার নিজের প্রমাণীকরণ করবেন না। এটি একটি খুব বিরক্তিকর এবং লাল-টেপি চাকা পুনরায় উদ্ভাবন করছে। আপনার থেকে বেছে নেওয়ার জন্য প্রচুর বিকল্প রয়েছে। প্লাস, আপনি কিছু নির্মাণ করছেন, তাই না? আপনার পণ্য প্রমাণীকরণ না হলে আমরা কেন এই কথোপকথন করছি?

Scaleups এবং উপরে (তবে আমরা তাদের সংজ্ঞায়িত করতে বেছে নিই)

করবেন না। স্টার্টআপগুলির মতো একই কারণ - তবে এটি অবশ্যই এখানে আরও প্রযোজ্য।


আপনি সম্ভবত দেখতে পারেন যেখানে আমি এই সঙ্গে যাচ্ছি. "প্রমাণ করা কঠিন" হল, আমি বলব, একটি বিপণন পিচ যখন একটি কম্বল বিবৃতি হিসাবে ব্যবহৃত হয়। আপনি প্রমাণ বুঝতে পারেন, আপনি এটি তৈরি করতে পারেন, কিন্তু এটি বিরক্তিকর, এটি বজায় রাখা মজাদার নয় এবং এটি একটি সমস্যা যা সমাধান করা হয়েছে৷ এইভাবে, এটি একটি পণ্য হিসাবে বিবেচিত হতে পারে - যেটি আপনি যে ফ্লেভারটি বেছে নিন তাকটি বেছে নিতে পারেন (নীচে কিছু বিকল্প)।

স্ব-হোস্টেড এবং FOSS ল্যান্ডস্কেপ

যারা তাদের স্ট্যাকের মালিকানায় রয়েছে (যেমনটি সত্যিই আপনার), আপনার কাছেও বেছে নেওয়ার জন্য প্রচুর বিকল্প রয়েছে:

অথ libs

  • Passport.js, বিস্তারিত উপরে আচ্ছাদিত
  • লুসিয়া - আধুনিক ওয়েব অ্যাপ্লিকেশনগুলির জন্য একটি সহজ এবং নমনীয় প্রমাণীকরণ লাইব্রেরি, বিকাশকারীর অভিজ্ঞতা এবং ব্যবহারের সহজতার উপর দৃষ্টি নিবদ্ধ করে।
  • Auth.js - Node.js-এর জন্য একটি লাইটওয়েট এবং কাস্টমাইজযোগ্য প্রমাণীকরণ লাইব্রেরি, বিভিন্ন ফ্রেমওয়ার্ক এবং অ্যাপ্লিকেশনগুলিতে সহজেই একত্রিত করার জন্য ডিজাইন করা হয়েছে। নেক্সট এর জন্য একটি লাইব্রেরি হিসাবে শুরু হয়েছিল।

প্রমাণ সার্ভার

  • কীক্লোক - একটি ওপেন-সোর্স আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট সার্ভার যা একক সাইন-অন (SSO), পরিচয় দালালি, এবং ব্যবহারকারী ফেডারেশনের মতো বৈশিষ্ট্যগুলি অফার করে৷
  • সুপারটোকেনস (উপরে দাবিত্যাগ দেখুন) - একটি ওপেন-সোর্স প্রমাণীকরণ সমাধান যা নিরাপত্তা এবং সরলতার উপর ফোকাস সহ সেশন পরিচালনা, সামাজিক লগইন এবং ইমেল/পাসওয়ার্ড প্রমাণীকরণের মতো পূর্ব-নির্মিত বৈশিষ্ট্য প্রদান করে।
  • FusionAuth - একটি নমনীয় প্রমাণীকরণ প্ল্যাটফর্ম যা ডেভেলপারদের সরবরাহ করে, ব্যবহারকারী ব্যবস্থাপনা, মাল্টিফ্যাক্টর প্রমাণীকরণ (MFA), এবং একক সাইন-অন (SSO) এর মতো বৈশিষ্ট্যগুলি অফার করে৷
  • অথেলিয়া - একটি ওপেন-সোর্স প্রমাণীকরণ সার্ভার যা মাল্টিফ্যাক্টর অথেনটিকেশন (MFA) এবং SSO প্রদান করে, বিপরীত প্রক্সি ব্যবহার করে অ্যাপ্লিকেশনগুলিকে সুরক্ষিত করার জন্য ডিজাইন করা হয়েছে।

স্টোরেজ + প্রমাণ

  • সুপাবেস - একটি ওপেন-সোর্স ব্যাকএন্ড-এ-সার্ভিস (BaaS) প্ল্যাটফর্ম যা ফায়ারবেস বিকল্প হিসাবে ডিজাইন করা ডেটাবেস, প্রমাণীকরণ এবং রিয়েল-টাইম ক্ষমতা প্রদান করে।
  • পকেটবেস - একটি ওপেন-সোর্স ব্যাকএন্ড সলিউশন যা ডাটাবেস, প্রমাণীকরণ এবং ফাইল স্টোরেজকে একত্রিত করে, যার লক্ষ্য আধুনিক ওয়েব এবং মোবাইল অ্যাপ্লিকেশনের বিকাশকে সহজ করা।


সুতরাং, আপনি যদি Auth-এর জন্য থার্ড-পার্টি সফ্টওয়্যার ব্যবহার করতে না চান, তবুও আপনি আপনার প্রয়োজন এবং পছন্দের উপর নির্ভর করে শেলফ থেকে একটি ওপেন-সোর্স বেছে নিতে পারেন এবং এটির সাথে রোল করতে পারেন।

টেকঅ্যাওয়ে: auth হল দেবের "লাল ফিতা"

আমার "বড়" টেকঅ্যাওয়ে হল চাকার নতুন উদ্ভাবন এড়াতে, বিশেষ করে যদি এটি একটি সমাধান করা সমস্যা হয়, যেমন প্রমাণ করা হয়। উল্লিখিত চাকা সম্পর্কে শিক্ষিত হন, তাদের সাথে পরীক্ষা করুন, একটি খেলনা চাকা তৈরি করুন এবং এটি বুঝুন। কিন্তু দয়া করে, অনুগ্রহ করে, এটিকে বোঝা এবং নির্মাণ করা অসম্ভব কঠিন জিনিস হিসাবে এটি বিক্রি করবেন না। শিক্ষিত করুন, গেটকিপ করবেন না।