ओपन-सोर्स एप्लिकेशनों की संरचना और डिज़ाइन ज्ञान साझा करना
(aosabook.org)सारांश अवलोकन
-
मुख्य विषय
- उन किताबों और संबंधित सामग्री का परिचय, जिनमें डेवलपर्स ने ओपन-सोर्स एप्लिकेशनों की आंतरिक संरचना और डिज़ाइन निर्णयों को खुद समझाया है।
-
मुख्य बातें
- आर्किटेक्ट्स के विपरीत, software developers को ऐतिहासिक रूप से महत्वपूर्ण बड़े programs की संरचना को व्यवस्थित रूप से सीखने के अवसर कम मिलते हैं।
- इससे मौजूदा सफल उदाहरणों का लाभ उठाने के बजाय मिलती-जुलती गलतियां दोहराने की समस्या पैदा होती है।
- ये किताबें प्रमुख open source projects की संरचना, components, उनके interaction के तरीके और development process से मिले सबक को संकलित करती हैं।
- शुरुआती developers अनुभवी developers की सोचने की शैली सीख सकते हैं, और intermediate व advanced developers जटिल डिज़ाइन समस्याओं के समाधान के उदाहरणों का संदर्भ ले सकते हैं।
- सारी सामग्री Creative Commons Attribution 3.0 license के तहत उपलब्ध है, और किताबों की बिक्री से होने वाली आय Amnesty International को दान की जाती है।
- त्रुटि रिपोर्ट करने, अनुवाद करने और नए अध्याय लिखने जैसे community contributions संभव हैं।
भूमिका
-
Software design सीखने की संरचनात्मक सीमाएं
- आर्किटेक्ट्स अपनी शिक्षा के दौरान असंख्य इमारतों का निरीक्षण करते हैं और experts की आलोचनात्मक समीक्षा भी साथ-साथ सीखते हैं।
- इसके विपरीत, software developers के पास बड़े programs को गहराई से समझने के अवसर सीमित होते हैं।
- कई developers मुख्यतः अपने द्वारा लिखे गए programs के आधार पर अनुभव जुटाते हैं।
- परिणामस्वरूप, वे अतीत के बेहतरीन डिज़ाइन उदाहरणों पर आगे बढ़ने के बजाय मिलती-जुलती डिज़ाइन गलतियां दोहराने की अधिक संभावना रखते हैं।
-
सामग्री का उद्देश्य
- उद्देश्य ओपन-सोर्स एप्लिकेशनों की वास्तविक संरचना को ऐसे रूप में उपलब्ध कराना है जिसका विश्लेषण किया जा सके।
- Project authors खुद software structure और design background की व्याख्या करते हैं।
- यह developers को दूसरे developers की design thinking सीखने में मदद करता है।
मुख्य भाग
ओपन-सोर्स projects की संरचना को सीधे समझाया जाता है
-
मुख्य विश्लेषण विषय
- कुल चार किताबें अलग-अलग ओपन-सोर्स एप्लिकेशनों और संबंधित विषयों को कवर करती हैं।
- हर अध्याय किसी खास project या technical topic की संरचना और design approach समझाता है।
- लेखक उस project के developers या संबंधित experts होते हैं।
-
विश्लेषण के मुख्य प्रश्न
- Program के मुख्य components क्या हैं।
- हर component किस तरह interact करता है।
- Development process में कौन-से design decisions लिए गए।
- Project बनाते समय कौन-से सबक मिले।
AOSA Volume 1 प्रमुख ओपन-सोर्स एप्लिकेशनों की संरचना पर केंद्रित है
-
मुख्य सामग्री
- Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, Sendmail जैसे विभिन्न projects को कवर करता है।
- System software, development tools, databases, distributed file systems, collaboration tools, visualization tools जैसे व्यापक क्षेत्रों को शामिल करता है।
-
महत्व
- ओपन-सोर्स projects की आंतरिक संरचना को वास्तविक developers के दृष्टिकोण से समझा जा सकता है।
- अलग-अलग technical domains में बार-बार सामने आने वाली design problems और उनके solutions की तुलना की जा सकती है।
AOSA Volume 2 विस्तारित technical domains और design examples देता है
-
मुख्य सामग्री
- Scalable web architecture, Firefox release engineering, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ आदि को कवर करता है।
- Web, compilers, operating systems, distributed systems, language runtimes, frameworks, infrastructure tools जैसे विविध topics शामिल हैं।
-
महत्व
- जटिल software systems को design और operate करने के तरीकों पर case studies देता है।
- Intermediate और advanced developers के लिए design decisions के वास्तविक उदाहरणों की समीक्षा करने में उपयोगी है।
POSA ओपन-सोर्स एप्लिकेशनों की performance समस्याओं पर केंद्रित है
-
मुख्य सामग्री
- Chrome में high-performance networking, SocialCalc से EtherCalc में बदलाव, Ninja build system, XML parsing optimization, MemShrink, mobile network performance, bioinformatics में big data processing आदि को कवर करता है।
-
महत्व
- यह दिखाता है कि software performance improvement सिर्फ code optimization नहीं है, बल्कि structural design, deployment methods, network environment और data processing methods से जुड़ा होता है।
- Performance problems का वास्तविक उदाहरणों के आधार पर विश्लेषण किया जा सकता है।
500 Lines or Less छोटे code में core ideas लागू करता है
-
मुख्य सामग्री
- Visual programming tools, continuous integration system, dynamic build system, web crawler, in-memory graph database, event-driven web framework, Python interpreter, OCR, web spreadsheet, static analysis, template engine, simple web server आदि को कवर करता है।
-
महत्व
- सीमित code size के भीतर core design principles समझाता है।
- छोटे implementations के जरिए complex system concepts सीखने के लिए संरचित है।
License और contribution methods स्पष्ट हैं
-
License
- यह सामग्री Creative Commons Attribution 3.0 Unported license के तहत उपलब्ध है।
- Attribution की शर्त पूरी करने पर सामग्री का उपयोग किया जा सकता है।
-
आय का उपयोग
- किताबों की बिक्री से मिलने वाली सारी royalties Amnesty International को दान की जाती हैं।
-
Contribution methods
- त्रुटियां रिपोर्ट की जा सकती हैं।
- दूसरी भाषाओं या formats में अनुवाद में भाग लिया जा सकता है।
- नए ओपन-सोर्स projects की architecture समझाने वाला अध्याय लिखा जा सकता है।
- नए translation या chapter writing में रुचि रखने वाले लोग project maintainers से संपर्क कर सकते हैं।
निष्कर्ष
-
मुख्य सार
- यह सामग्री ओपन-सोर्स एप्लिकेशनों की आंतरिक संरचना और design decisions को व्यवस्थित रूप से सीखने के लिए case studies का संग्रह है।
- Developers केवल अलग-अलग code snippets नहीं, बल्कि पूरे system की structure और design reasoning को समझ सकते हैं।
- शुरुआती developers के लिए यह अनुभवी developers की सोचने की शैली सीखने का starting point है।
- Intermediate और advanced developers के लिए यह जटिल design problems को हल करने वाले वास्तविक examples की तुलना और विश्लेषण करने की सामग्री है।
-
व्यावहारिक महत्व
- यह न केवल ओपन-सोर्स projects का उपयोग करने वाले developers, बल्कि उन्हें खुद design और operate करने वाले developers के लिए भी reference value रखता है।
- यह दोहराई जाने वाली design mistakes घटाने और verified design examples सीखने में मदद करता है।
- यह दिखाता है कि community-based knowledge sharing software development skills को बेहतर बनाने में योगदान दे सकती है।
1 टिप्पणियां
धन्यवाद