Skip to main content
পর্দার আড়ালে

আমাদের কোডের ভেতরের আইন

একটা বাতিল বাটন যা লগইন ছাড়াই কাজ করতে হবে। একটা ফর্ম যা কখনো আপনাকে প্রত্যাখ্যান করতে পারবে না। আমাদের কাছে আইনি দায়িত্ব কেন বাঁধা গৎ নয়, বরং স্থাপত্য।

প্রকাশিত লিখেছেন AlphaCloud4 মিনিটে পড়া

যখন আমরা Premium কেনার যোগ্য করলাম, ধরে নিয়েছিলাম আইনি অংশটা ফুটারে কয়েক পাতা লেখা। সেটা ভুল ছিল। কিছু দায়িত্ব আদৌ একটা লেখায় লেখা যায় না, কারণ সেগুলো ঠিক করে দেয় একটা ফিচার কীভাবে বানাতে হবে।

চারটি উদাহরণ যেখানে এটা বিশেষভাবে স্পষ্ট হয়েছে। শুরুতেই, যাতে বোঝা যায় এটা কী: আমাদের বাস্তবায়নের একটা বর্ণনা, আইনি পরামর্শ নয়। নিচের নিয়মগুলো জার্মান আইন, যেখানে AlphaCloud পরিচালিত হয়।

যে বাতিল বাটনে লগইন থাকতে পারবে না

জার্মান দেওয়ানি বিধির 312k ধারা অনলাইনে করা চুক্তিতে বাতিলের সরাসরি পৌঁছানোযোগ্য একটা উপায় দিতে বাধ্য করে। এর ফলে এমন প্রয়োজনীয়তা তৈরি হয় যা পরে শব্দ দিয়ে যোগ করা যায় না:

  • পেজটা সাইন ইন ছাড়াই কাজ করতে হবে
  • এটা প্রতিটি পেজের ফুটারে থাকতে হবে
  • এর দরকার দুটি ধাপ: তথ্য দেওয়া, তারপর একটা দ্ব্যর্থহীনভাবে লেখা বাটন দিয়ে নিশ্চিত করা
  • লিখিত আকারে প্রাপ্তির নিশ্চিতকরণ পাঠাতে হবে

শেষ বিষয়টা স্থাপত্যকে চালিত করে। একটা বাতিল হলো একতরফা ঘোষণা আর প্রাপ্তির সাথে সাথেই কার্যকর হয়। তাই এটা সবসময় লগ ও নিশ্চিত করতে হবে, এটা যার কাছ থেকেই আসুক না কেন।

ফর্মটা কখনো আপনাকে প্রত্যাখ্যান করতে পারবে না

এখানেই সহজ পথটা আমাদের প্রায় একটা ভুলের দিকে নিয়ে যাচ্ছিল।

সহজ পথ: সার্ভার ID আর ইমেইল একটা সক্রিয় সাবস্ক্রিপশনের সাথে মিললে তবেই বাতিল গ্রহণ করা। যুক্তিসঙ্গত শোনায়, আর দুইভাবে ভুল।

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

দ্বিতীয়ত, আর এটাই বেশি অপ্রীতিকর অংশ: ত্রুটির বার্তাটাই একটা উত্তর হয়ে যেত। যিনি "কোনো সাবস্ক্রিপশন পাওয়া যায়নি" ফেরত পান, তিনি জেনে যান যে এই সার্ভার পেমেন্ট করে না। একটা Discord সার্ভার ID কোনো গোপন বিষয় নয়, যেকোনো সদস্য এটা দেখতে পারেন। ফর্মটা অন্যের সার্ভার খুঁজে দেখার একটা হাতিয়ার হয়ে যেত।

সমাধানটা এমন দুটি জিনিস আলাদা করে যা একটার মতো মনে হয়:

শর্ত
ঘোষণার প্রাপ্তি শর্তহীন, সবসময় লগ ও নিশ্চিত করা হয়
বাতিলের কার্যকরণ শুধু যখন দেওয়া ইমেইল রেকর্ডে থাকা ক্রেতার সাথে মেলে

বাকি সবকিছু একটা সারিতে যায় আর একজন মানুষ পর্যালোচনা করেন। এটা অনুমোদিত কারণ 312k ধারার উপধারা 2 স্পষ্টভাবে শনাক্তকরণের তথ্য চাওয়ার অনুমতি দেয়। শুধু এর আগে একটা লগইন নিষিদ্ধ।

একই কারণে প্রকাশ্য উত্তরে শেষ হওয়ার তারিখ শুধু তখনই বলা যায় যখন পরিচয় নিশ্চিত হয়। নইলে নিশ্চিতকরণটা আবার একটা দৈববাণী হয়ে যায়।

যে প্রত্যাহারে ইচ্ছে করেই লগইন আছে

ঠিক পাশেই একটা ফিচার আছে যা আমরা উল্টোভাবে বানিয়েছি: আনুপাতিক ফেরতসহ প্রত্যাহার একটা সাইন ইনের পেছনে থাকে।

এটা স্ববিরোধ নয়। 312k ধারা বাতিল নিয়ে, প্রত্যাহার নিয়ে নয়, আর অনানুষ্ঠানিক পথ খোলা থাকলে অনলাইন প্রত্যাহার ফর্ম দেওয়ার কোনো দায়িত্বই নেই। পার্থক্যটা পরিণতিতে: একটা বাতিল ভবিষ্যতের ওপর কাজ করে, একটা ফেরত টাকা এখনই সরায়, আর তা ফেরানো যায় না।

তিনটি নিয়ম যা এ থেকে আসে, আর যা আমরা নরম করি না:

কোনো বাধ্যতামূলক কারণ নয়। 355 ধারার উপধারা 1 স্পষ্টভাবে কারণ না দেখিয়েই প্রত্যাহারের অধিকার দেয়। ক্ষেত্রটা ঐচ্ছিক আর ঐচ্ছিকই থাকতে হবে, পরিসংখ্যানের জন্য বাধ্যতামূলক একটা যতই লোভনীয় হোক।

14 দিন পর শুধু স্বয়ংক্রিয় পথ প্রত্যাখ্যাত হয়, ঘোষণা কখনো নয়। গ্রাহককে সঠিকভাবে জানানো না হলে মেয়াদ বারো মাস চৌদ্দ দিন পর্যন্ত বাড়ে। তাই একটা ঢালাও "অনেক দেরি" ভুল হতে পারে।

দুবার পেমেন্টের বিরুদ্ধে সুরক্ষা হতাশাবাদী। ফেরত চালানোর আগেই চিহ্নটা বসানো হয়। ফেরত তারপর ব্যর্থ হলে চিহ্নটা থেকে যায় আর একজন মানুষ দায়িত্ব নেন। দুবার টাকা দেওয়াই একমাত্র ফলাফল যা সারানো যায় না।

একটা Discord DM টেকসই মাধ্যম নয়

312f ধারার উপধারা 3 একটা টেকসই মাধ্যমে চুক্তির নিশ্চিতকরণ চায়, আর তাতে দেওয়া সম্মতি পুনরুল্লেখ করতে হয়।

আমরা প্রথমে একটা Discord ডাইরেক্ট মেসেজ পাঠিয়েছিলাম, কারণ আমাদের গ্রাহকরা এমনিতেই সেখানে থাকেন। তাতে চলে না। একটা DM এমন প্ল্যাটফর্মে থাকে যা আমরা নিয়ন্ত্রণ করি না, আর বিধানটি যে অর্থে বোঝায় সেই অর্থে তা সংরক্ষণযোগ্যও নয়, অপরিবর্তনীয়ও নয়।

তাই একটা ইমেইল যোগ হলো, আর সাথে এল একটা অস্বস্তিকর নির্ভরতা: মেইলের তথ্য সেট করা না থাকলে পাঠানোর প্রক্রিয়া শুধু লগে একটা সতর্কতা লেখে আর দায়িত্ব পূরণ হয় না। একটা এনভায়রনমেন্ট ভেরিয়েবলের ওপর ঝুলে থাকা আইনি দায়িত্ব এমন একটা অবস্থা যা সম্পর্কে সচেতন থাকা উচিত।

কোনো VAT নয়, আর সেটা সব জায়গায় একইভাবে লেখা থাকতে হবে

জার্মান মূল্য সংযোজন কর আইনের 19 ধারা অনুযায়ী AlphaCloud একটা ক্ষুদ্র ব্যবসা। দাম চূড়ান্ত দাম, VAT কখনো দেখানো হয় না।

শুনতে পাদটীকার মতো, অথচ আসলে এটা অনেক জায়গায় সামঞ্জস্যের কাজ: দামের পেজ, চেকআউট ডায়ালগ, শর্তাবলি, গোপনীয়তা নীতি, ইনভয়েসের ফুটার আর পেমেন্ট প্রদানকারীর কনফিগারেশন, সবাইকে একই কথা বলতে হবে। অনেকদিন ধরে আমাদের এক জায়গায় "VAT বাদে" লেখা ছিল, যা সোজাসুজি ভুল।

আর AI

2026 সালের আগস্ট থেকে ইউরোপীয় AI আইনের স্বচ্ছতার দায়িত্বগুলো পুরোপুরি প্রযোজ্য। যে কেউ একটা AI সিস্টেমের সাথে কথা বলছেন, তাঁকে সেটা চিনতে পারতে হবে, অন্তত প্রথম মিথস্ক্রিয়ার সময়।

সেই পর্যালোচনা থেকে আমাদের কাছে সবচেয়ে গুরুত্বপূর্ণ বাক্য: ফুটারে একটা আইনি পেজ সম্ভবত এটা পূরণ করে না। প্রকাশটা হতে হবে যেখানে মিথস্ক্রিয়া ঘটে সেখানে, অর্থাৎ Discord মেসেজের ভেতরেই। সেজন্যই আমাদের AI টিকিট সাপোর্ট নিজে থেকেই পরিচয় দেয় আর একে বন্ধ করার একটা দৃশ্যমান বাটন আছে। আমাদের বিস্তারিত মূল্যায়ন AI স্বচ্ছতা-য় আছে।

মূল সুতো

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

তাই আমরা এখন আইনি লেখাকে একটা স্পেসিফিকেশনের মতো পড়ি, আর উল্টো দিকেও যাচাই করি: কোড কি সত্যিই তা করে যা আমাদের শর্তাবলি বলে? ঠিক সেই প্রশ্নেই আমরা দুটি আসল বিচ্যুতি খুঁজে পেয়েছি, আর সেগুলো নিয়ে আলাদা একটা লেখা আছে।

আরও নিবন্ধ

পর্দার আড়ালে

কেন AlphaCloud-এর প্রায় সবকিছু বিনামূল্যে থাকে

বেশিরভাগ Discord বট তাদের সবচেয়ে কাজের ফিচারগুলো একটা সাবস্ক্রিপশনের পেছনে আটকে রাখে। আমরা ইচ্ছে করেই তা করি না, আর এর সাথে উদারতার সম্পর্ক যতটা শোনায় তার চেয়ে কম।

পর্দার আড়ালে

4,000টি Discord সার্ভারের ওপর নজর: Grafana, PostHog আর এরা আমাদের যা দেখাল

একটা লুপ যা চুপচাপ আমাদের অর্ধেক ট্রাফিক তৈরি করত, দিনে তিন মিলিয়ন অর্থহীন অনুরোধ আর একটা আক্রমণ যা এক মিনিটে শেষ হয়ে গেল। আমাদের মনিটরিং কী দেখে, আর কী ইচ্ছে করেই দেখে না।

পর্দার আড়ালে

2,000+ Discord সার্ভারে একটা বট চালিয়ে আমরা যা শিখেছি

চারটি জিনিস যা বড় পরিসরে কোড লেখার সময় যা মনে হয় তার থেকে আলাদাভাবে কাজ করে।