জাভাস্ক্রিপ্টের এগারোটি লাইন ইন্টারনেট ভেঙে দিয়েছে। একটি আনপাবলিশ।
২২ মার্চ, ২০১৬, ২১:৩০ ইউটিসি: একজন ডেভেলপার তার ২৭৩টি npm প্যাকেজ আনপাবলিশ করেন যখন npm "kik" প্যাকেজের নামটি Kik, মেসেজিং অ্যাপকে হস্তান্তর করে, যার পেটেন্ট এজেন্ট "আপনার দরজায় আইনজীবী ধাক্কা দিচ্ছে" বলে হুমকি দিয়েছিল।
২২ মার্চ, ২০১৬, ২১:৩০ ইউটিসি: একজন ডেভেলপার তার ২৭৩টি npm প্যাকেজ আনপাবলিশ করেন যখন npm "kik" প্যাকেজের নামটি Kik, মেসেজিং অ্যাপকে হস্তান্তর করে, যার পেটেন্ট এজেন্ট "আপনার দরজায় আইনজীবী ধাক্কা দিচ্ছে" বলে হুমকি দিয়েছিল। ২৭৩টির মধ্যে একটি হল left-pad: এগারোটি লাইন যা একটি স্ট্রিংয়ের সামনে স্থান যোগ করে, মাসে ২.৫ মিলিয়ন বার ডাউনলোড করা হয়। মিনিটের মধ্যে Babel, React এবং Node বিল্ড বিশ্বজুড়ে ব্যর্থ হয়, প্রতি মিনিটে শত শত। দশ মিনিটের মধ্যে একটি ফর্ক আবির্ভূত হয় এবং কিছুই পরিবর্তন করে না, কারণ Babel line-numbers-এর মাধ্যমে left-pad টানে, যা 0.0.3 কে ঠিকভাবে পিন করে। ২৩:৫৫ এ npm একটি ব্যাকআপ থেকে মুছে ফেলা সংস্করণটি পুনরুদ্ধার করে — রেজিস্ট্রি ইতিহাসে প্রথম "আন-আন-পাবলিশ" — এবং এক সপ্তাহ পরে ২৪-ঘন্টার আনপাবলিশ নিয়ম চালু করে। পোস্টমর্টেম, npm-এর নিজস্ব অ্যাকাউন্ট এবং Kik প্রকাশিত ই-মেইল থ্রেড থেকে: রেজিস্ট্রি যা কোনো লেখককে কোনো নির্ভরশীলতা পরীক্ষা ছাড়াই যেকোনো সংস্করণ মুছে ফেলার অনুমতি দিয়েছে, প্রতিটি ইনস্টলেশনের সময় ট্রানজিটিভ ট্রি লাইভভাবে সমাধান করা হয়েছে, ডিফল্টভাবে কোনো লকফাইল ছিল না। Git দোষ: ৬০ npm / ২৫ Kik / ১৫ নির্ভরশীলতার অভ্যাস। ফিক্সের উপর রায়: SHIP IT।
লিখিত সংস্করণ পড়ুন (ইংরেজি) ↗
এই ভিডিওতে যা আছে
- ১১ মার্চ: Kik-এর পেটেন্ট এজেন্ট Azer Koçulu-কে `kik` এর নাম পরিবর্তন করতে বলেন; এক ঘন্টা পরে: আইনজীবীরা "আপনার দরজায় ধাক্কা দিচ্ছে এবং আপনার অ্যাকাউন্টগুলি বন্ধ করে দিচ্ছে"; Azer: $30,000; Kik npm সহায়তায় ই-মেইল করে
- ১৮-২০ মার্চ: npm-এর সিইও Kik-কে নামটি হস্তান্তর করেন ("যুক্তিসঙ্গতভাবে এটি kik.com এর সাথে সম্পর্কিত হবে বলে আশা করা যায়"); Azer তার সমস্ত মডিউল মুছে ফেলার অনুরোধ করেন
- ২২ মার্চ, ২১:৩০–২৩:৫৫ ইউটিসি: ২৭৩টি প্যাকেজ আনপাবলিশ করা হয়; [email protected] Babel, Atom, Node প্রকল্পে 404s; ২১:৪২ এ fork 1.0.0; npm-এর সিটিও ২৩:০৩ এ "আন-আন-পাবলিশিং" টুইট করেন; ২৩:৫৫ এ ব্যাকআপ থেকে 0.0.3 ফিরে আসে — ২.৫ ঘন্টা
- ২৩ মার্চ এবং ২৯ মার্চ: npm-এর পোস্টমর্টেম ("আমরা ভুল করেছি") এবং নতুন নীতি: শুধুমাত্র ২৪ ঘন্টার মধ্যে আনপাবলিশ করা যাবে, সরানো নামগুলির জন্য নিরাপত্তা স্থানধারক (২০২০ সাল থেকে ৭২ ঘন্টা)
অনুবাদিত প্রতিলিপি
মূল ইংরেজি বর্ণনা থেকে অনূদিত। উপলব্ধ অডিও এবং ক্যাপশন YouTube দ্বারা নিয়ন্ত্রিত।
0:00 একজন ডেভেলপার জাভাস্ক্রিপ্টের এগারোটি লাইন মুছে ফেলেন, এবং মিনিটের মধ্যে Babel, React এবং Node বিল্ড বিশ্বজুড়ে ব্যর্থ হচ্ছে, প্রতি মিনিটে শত শত। ফাংশনটি হল left-pad। এটি একটি স্ট্রিংকে স্থান দিয়ে প্যাড করে, এবং সন্ধ্যার শেষে npm সেই একটি কাজ করে যা তারা করতে পারে না বলে দাবি করে: একটি মুছে ফেলা সংস্করণ পুনরায় প্রকাশ করা। এটি কীভাবে ঘটে, কেন এটি সম্ভব এবং কে দোষী। এটি হল The Daily Diff, পোস্টমর্টেম। ১১ মার্চ। Kik, মেসেজিং অ্যাপের একজন পেটেন্ট এজেন্ট,
0:26 Azer Koçulu-কে ইমেল করেন: আপনার npm প্যাকেজের নাম পরিবর্তন করুন, kik আমাদের ব্র্যান্ড। Azer না বলেন। এক ঘন্টা পরে: আমাদের ট্রেডমার্ক আইনজীবীরা আপনার দরজায় ধাক্কা দিতে যাচ্ছে এবং আপনার অ্যাকাউন্টগুলি বন্ধ করে দিচ্ছে। Azer একটি মূল্য উল্লেখ করেন, ত্রিশ হাজার ডলার, এবং Kik থ্রেডটি npm সাপোর্টে ফরওয়ার্ড করে। ১৮ মার্চ। npm-এর সিইও রায় দেন যে, যে কেউ npm install kik টাইপ করলে মেসেজিং
0:48 অ্যাপটিই আশা করে, এবং নামটি হস্তান্তর করেন। Azer তার সবকিছু মুছে ফেলার অনুরোধ করেন। দুই দিন পরে তিনি নিজেই তা করেন: দুই শত তিয়াত্তরটি প্যাকেজ। ২২ মার্চ, ২১:৩০ ইউটিসি। left-pad-এর জন্য পৌঁছানো প্রতিটি বিল্ড একটি 404 পায়। দশ মিনিট পরে একজন অপরিচিত ব্যক্তি এটিকে 1.0.0 হিসাবে পুনরায় প্রকাশ করেন, এবং কিছুই পরিবর্তন হয় না, কারণ Babel এবং Atom এটিকে line-numbers নামক একটি প্যাকেজের মাধ্যমে লোড করে, যা ঠিক 0.0.3 চায়।
1:13 ২৩:০৩ এ npm-এর সিটিও টুইট করেন: আন-আন-পাবলিশিং। ২৩:৫৫ এ, 0.0.3 একটি ব্যাকআপ থেকে ফিরে আসে। আড়াই ঘন্টা। কেন একজন ব্যক্তি এটি করতে পারে? তিনটি কারণ। npm-এর যেকোনো সংস্করণ এর লেখক দ্বারা মুছে ফেলা যায়, তাৎক্ষণিকভাবে, এর উপর কে নির্ভর করে তা পরীক্ষা না করেই। দ্বিতীয়ত, নির্ভরশীলতাগুলি ট্রানজিটিভ: Babel জানে না left-pad বিদ্যমান, এটি line-numbers জানে, এবং পুরো ট্রি প্রতিটি ইনস্টলেশনে লাইভভাবে সমাধান করা হয়।
1:36 তৃতীয়ত, ২০১৬ সালে ডিফল্টভাবে কিছুই সেই ট্রিকে পিন করে না; লকফাইলগুলি অপ্ট-ইন, তাই প্রতিটি CI রান ইন্টারনেটে আবার জিজ্ঞাসা করে যে এগারো লাইন কোড দেখতে কেমন। একটি রেজিস্ট্রি, কেউ এটিতে নির্ভর না করে চালিত। git blame। npm, ষাট শতাংশ: তাদের নিজস্ব পোস্টমর্টেম বলে যে অনিয়ন্ত্রিত আনপাবলিশিং ব্যথা সৃষ্টি করেছে, এবং, উদ্ধৃতি, আমরা ভুল করেছি। Kik, পঁচিশ: একজন পেটেন্ট এজেন্ট, আইনজীবী নন, একটি নামের উপর আইনজীবীদের দরজায় আসার প্রতিশ্রুতি দেওয়া যা Kik ইতিমধ্যেই ব্যবহার না করার সিদ্ধান্ত নিয়েছিল। নির্ভরশীলতার অভ্যাস, পনেরো: যারা npm-ইনস্টল করেছে এগারোটি লাইন টাইপ না করে
2:06 তাদের মধ্যে সবাই। Kik সহ, যাদের বিল্ডগুলিও ভেঙে যায়। বিস্ফোরণের ব্যাসার্ধ: দুই শত তিয়াত্তরটি প্যাকেজ প্রত্যাহার করা হয়েছে, তাদের মধ্যে একটি মাসে আড়াই মিলিয়ন বার ডাউনলোড করা হয়েছে। ফিক্স করতে আড়াই ঘন্টা লাগে; ফাংশনটি এগারো লাইন নেয়। হ্যাকারের সংবাদে, একটি পোস্ট জিজ্ঞাসা করে যে আমরা প্রোগ্রাম করতে ভুলে গেছি কিনা সতেরো শত পয়েন্ট পায়, বেশিরভাগই সেইসব লোকের কাছ থেকে যাদের বিল্ডগুলি এখনও লাল। রায়, পোস্টমর্টেম: SHIP IT।
2:26 npm ব্যাকআপ থেকে পুনরুদ্ধার করে, পরের দিন পোস্টমর্টেম পোস্ট করে, এবং এক সপ্তাহের মধ্যে সেই নিয়মটি চালু করে যা এখনও কার্যকর: আপনি চব্বিশ ঘন্টার জন্য আনপাবলিশ করতে পারবেন, তার পরে আপনাকে একজন মানুষের সাথে কথা বলতে হবে। সোমবার: আপনার লকফাইল কমিট করুন, এবং যদি একটি ফাংশন এগারো লাইন হয়, এটি একটি অনুচ্ছেদ, একটি নির্ভরশীলতা নয়। আমাকে সেই ঘটনাটি পাঠান যা নিয়ে আপনি এখনও কথা বলতে পারবেন না, মন্তব্যে, অথবা daily diff dot dev এ। এবং এটিই আজকের জন্য diff।
2:48 আমি Axrisi থেকে Niko। দায়িত্বের সাথে মার্জ করুন।
উৎস
- npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)blog.npmjs.org
- npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)blog.npmjs.org
- Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)web.archive.org
- Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)web.archive.org
- Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTCx.com
- left-pad 0.0.3 on the npm registry (the eleven lines)registry.npmjs.org
- Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)news.ycombinator.com
- Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)news.ycombinator.com
- Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)news.ycombinator.com
- The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"www.theregister.com



