
VIPACK Manager by Ruben Khachatryan BA in Computer Science, National Polytechnic University of Armenia, 2016 A thesis submitted in partial satisfaction of the requirements for the degree of Master of Science in Computer & Information Science in the Zaven and Sonia Akian College of Science and Engineering of the AMERICAN UNIVERSITY OF ARMENIA Supervisor:Norayr Chilingaryan Signature: __________________ Date: ___________ Committee Member: Aram Hajian Signature: __________________ Date:_____________ Committee Member: ____________________ Signature: __________________ Date:_____________ Committee Member: ____________________ Signature: __________________ Date:_____________ Abstract: Modern trend with programming tools is having a tool to manage libraries and library dependencies. To name a few, those are pip for python, npm or yarn for nodejs, golang has several (godep, wgo), composer for php, etc… Package managers currently have big scale of usage and for some platforms are an inseparable part of the ecosystem(like npm in NodeJS or bundler in Ruby). We are going to explore how to create one for Oberon ecosystem. Author: Ruben Khachatryan Keywords: Oberon programming language, Package manager, package managers, package manager in modular programming languages, module management 1 Licenses for Software and Content Software Copyright License (to be distributed with software developed for masters project) Copyright (c) 2019, Ruben Khachatryan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. (This license is known as “The MIT License” and can be found at http://opensource.org/licenses/mit-license.php) Content Copyright License (to be included with Technical Report) LICENSE 2 Terms and Conditions for Copying, Distributing, and Modifying Items other than copying, distributing, and modifying the Content with which this license was distributed (such as using, etc.) are outside the scope of this license. 1. You may copy and distribute exact replicas of the OpenContent (OC) as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the OC a copy of this License along with the OC. You may at your option charge a fee for the media and/or handling involved in creating a unique copy of the OC for use offline, you may at your option offer instructional support for the OC in exchange for a fee, or you may at your option offer warranty in exchange for a fee. You may not charge a fee for the OC itself. You may not charge a fee for the sole service of providing access to and/or use of the OC via a network (e.g. the Internet), whether it be via the world wide web, FTP, or any other method. 2. You may modify your copy or copies of the OpenContent or any portion of it, thus forming works based on the Content, and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified content to carry prominent notices stating that you changed it, the exact nature and content of the changes, and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the OC or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License, unless otherwise permitted under applicable Fair Use law. These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the OC, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the OC, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Exceptions are made to this requirement to release modified works free of charge under this license only in compliance with Fair Use law where applicable. 3 3. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, distribute or modify the OC. These actions are prohibited by law if you do not accept this License. Therefore, by distributing or translating the OC, or by deriving works herefrom, you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or translating the OC. NO WARRANTY 4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK OF USE OF THE OC IS WITH YOU. SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION. 5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MIRROR AND/OR REDISTRIBUTE THE OC AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. (This license is known as “OpenContent License (OPL)” and can be found at http://opencontent.org/opl.shtml) 4 VIPACK Manager (Vishap package manager for Oberon) Ruben Khachatryan Supervisor: Norayr Chilingaryan 5 Abstract: 1 Author: 1 Keywords: 1 Licenses for Software and Content 2 Software Copyright License (to be distributed with software developed for masters project) 2 Introduction(intention) 8 What is the concept of package manager? 8 What is Oberon? 8 Choice of the development platform. 8 Why it is important? 9 General and specific Goals of the Thesis: 9 Defining the granularity of the package. 10 Hypothesis 10 Testing 10 Validation 10 Quality Measurement 11 Things required to study. 11 Literature review 11 Areas to look in 11 Questions 12 Searching terms 12 Criteria 12 The list of papers 12 The literature review conclusion 13 Comparison between gentoo vs debian package managers 13 How Package Manager works? 14 How can we use Oberon to create Package manager? 15 What speed we expect from the package manager? 15 Do we need optimizations in package install/uninstall strategies? 15 Which kind of problems people encounter in current implementations of package managers? 15 How to maintain security of the package manager? 16 Architecture 16 Introduction 16 6 Definition of a package 17 Package dependencies 17 What are the use cases for the final product? 17 Server side file system hierarchy diagram 18 Package File Content 18 Version file 19 * versioning 20 Approach 21 Package manager 21 Architecture 22 Modules description 22 Dependency tree 23 Why do we use JSON as manifest file? 23 The Lack of libraries 23 Description 23 JSON parsing module architecture and OOP 23 Code of the JSON class definition 24 HTTP module 25 Comparison 27 Possible enhancements 27 Circular Dependencies prevention 27 Package manager allows to build package when creating dependency tree 28 Conclusion 28 7 Introduction(intention) What is the concept of package manager? Package manager is a piece of software that helps developers to keep track of external dependencies and libraries for a project. ● Package manager is used as a collaboration tool ● Package manager is needed to implement big scale projects which are very hard to implement all by hand ● Package manager allows to reduce the size of the project and not keep big modules and inside the project itself ● Version controlling What is Oberon? Oberon is a highly efficient, general-purpose programming language, descendant of Pascal and Modula-2. It is simpler yet more powerful than its predecessors. Oberon programs are structured, modular and type-safe. Object-oriented programming is supported through the type extension mechanism, single inheritance, procedural variables, type-bound methods, data hiding and encapsulation, and garbage collection. https://modulaware.com/mdltws.htm “Oberon is a general-purpose programming language that evolved from Modula-2. Its principal new feature is the concept of type extension. It permits the construction of new data types on the basis of existing ones and to relate them.“ The Programming Language Oberon Defining “Oberon” is not trivial.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages30 Page
-
File Size-