একটি $mol প্রকল্পের চারটি স্তর একটির ভিতরে আরেকটি: আপনার ক্লোন করা ওয়ার্কস্পেস, তার ভিতরের প্যাকেজ, প্যাকেজের ভিতরের মডিউল, আর মডিউলের ভিতরের ফাইল। এই বিন্যাস একটি বাস্তব প্রশ্নের উত্তর দেয় — নতুন প্রকল্প কোথায় যাবে আর তার ইতিহাস কার — এবং বিল্ড যা কিছু করে তার প্রায় সবই এখান থেকেই আসে।mam/ ওয়ার্কস্পেস — ক্লোন করা MAM├── .meta.tree রেজিস্ট্রি: কোন প্যাকেজ কোন রিপো থেকে├── mol/ প্যাকেজ — ফ্রেমওয়ার্ক নিজেই, নিজের git রিপো└── my/ প্যাকেজ — আপনার, আপনার নিজের git রিপো ├── .gitattributes বিল্ড করা বাইনারি অক্ষত রাখে ├── my.meta.tree আপনার নিজের প্রকল্পের রেজিস্ট্রি └── hello/ প্রকল্প — একটি মডিউল, আর নিজের git রিপো ├── index.html এন্ট্রি পয়েন্ট (কেবল অ্যাপ মডিউলের) ├── hello.view.tree মার্কআপ └── form/ সাবমডিউল — $my_hello_formএই পাতায় তালিকার প্রতিটি লাইনের পাশে একটি প্রশ্নচিহ্ন আছে, যেটি বলে কেন সেটি সেখানে; নিচের অংশগুলো একই কথা বিশদে বলে।
পাঁচ ধাপ। কেবল প্রথমটিই বারবার লাগে, আর শেষ তিনটি স্ক্যাফোল্ডার আপনার হয়ে করে দিতে পারে।১. ওয়ার্কস্পেসটি একবার ক্লোন করুন। এরপর আপনি যা কিছু লিখবেন, সব এর ভিতরেই থাকবে।1gitclonehttps://github.com/hyoo-ru/mam.git2cdmam২. নিজের একটি প্যাকেজ বানান। একটি ছোট নামের ফোল্ডার — আপনার নাম, আপনার কোম্পানি, আপনার হ্যান্ডল — আর নিজের একটি git রিপো। আপনি যত প্রকল্প শুরু করবেন, সবের পাত্র এটিই:1mkdirmy2cdmy3gitinitযেখানে কোড রাখেন সেখানেই তুলুন, পাবলিক হোক বা প্রাইভেট। সঙ্গে *-text একটিমাত্র লাইনের .gitattributes রেখে দিন; কারণটা নিচে প্যাকেজ অংশে আছে।৩. রেজিস্ট্রি যোগ করুন।my/my.meta.tree হলো আপনার প্যাকেজের ভিতরের প্রকল্পগুলোর তালিকা। শুরুতে ফাঁকা, প্রতিটি প্রকল্পের জন্য একটি করে লাইন যোগ হয়:1pack hello git \https://github.com/you/hello.gitMAM এটি ঠিক সেভাবেই পড়ে যেভাবে এক ধাপ উপরের ওয়ার্কস্পেসের .meta.tree পড়ে, তাই যে সহকর্মী my/ ক্লোন করবেন তিনি প্রকল্পগুলোও পাবেন।৪. প্রকল্পটি বানান, নিজের রিপোসহ। ফোল্ডারই কম্পোনেন্ট — my/hello/ মানে $my_hello — আর ইতিহাস তার নিজের, আপনার প্যাকেজের নয়, $mol-এরও নয়:1mkdirhello2cdhello3gitinitএই আলাদা থাকাটাই বিন্যাসের মূল কথা: my/hello/-এর কমিট যায় hello রিপোতে, কখনও my-তে নয়, mol-এও নয়।৫. নিবন্ধন করুন। ৩ নম্বর ধাপের pack লাইনটি my/my.meta.tree-তে যোগ করুন, তাহলে আপনার প্যাকেজের নতুন চেকআউট প্রকল্পটিকে নাম ধরে নিয়ে আসবে।২ নম্বর ধাপের পরে যেকোনো সময় স্ক্যাফোল্ডার আপনার হয়ে একটি চালু মডিউল লিখে দেবে:1npxcreate-view-tree-lspmy/hello
MAM একবার ক্লোন করে তার ভেতরেই কাজ করবেন। এটি এমন কোনো ফোল্ডার নয় যেখানে নির্ভরতাগুলো কপি হয়ে আসে: প্রতিটি প্যাকেজ সেখানে নিজস্ব git চেকআউট হিসেবে, ইতিহাস সমেত বসে থাকে, ফলে আপনি ফ্রেমওয়ার্কের সোর্স পড়তে পারেন, তাতে একটা debugger বসাতে পারেন, এবং একই ওয়ার্কিং কপি থেকে পুল রিকোয়েস্ট খুলতে পারেন।রুটের .meta.tree হলো সেই রেজিস্ট্রি যা এটিকে সম্ভব করে:1pack mol git \https://github.com/hyoo-ru/mam_mol.git2pack hyoo git \https://github.com/hyoo-ru/mam_hyoo.git3pack lib git \https://github.com/hyoo-ru/mam_lib.gitবিল্ড যখন $mol_view দেখে অথচ mol/ ফোল্ডার তখনও নেই, তখন সে নামটি এখানে খুঁজে নিয়ে রিপোজিটরিটি ক্লোন করে। কিছুই ভেন্ডর করা হয় না এবং কিছুই সমতল করা হয় না।
শীর্ষ স্তরের একটি ফোল্ডারই একটি প্যাকেজ, আর একটি প্যাকেজ হলো একটি git রিপোজিটরি। আপনার নিজের প্যাকেজ কেবল একটি ফোল্ডার যার নাম আপনি দেন: যতক্ষণ সেটি স্থানীয় থাকে ততক্ষণ কোনো নিবন্ধন লাগে না, আর যেদিন নাম দিয়ে সেটি আনতে চাইবেন সেদিন একটি pack লাইন লাগে।প্যাকেজ নেস্ট করে। একটি প্যাকেজ তার ভেতরের ফোল্ডারগুলোর জন্য নিজস্ব pack ঘোষণা বহন করতে পারে, আর MAM সেগুলো পড়ে সেই ফোল্ডারের meta.tree থেকে যেটি প্যাকেজটিকে ধারণ করবে। এই সাইটটি bog/smalljs/-এ থাকে এবং নিজেই একটি রিপোজিটরি, যা bog/bog.meta.tree-তে তালিকাভুক্ত; আর সেই ফাইলটি রুট .meta.tree-তে তালিকাভুক্ত bog/ চেকআউটের ভেতরেই আছে।