Application of Software Components in Operating System Design
Total Page:16
File Type:pdf, Size:1020Kb
CHARLES UNIVERSITY IN PRAGUE FACULTY OF MATHEMATICS AND PHYSICS DOCTORAL THESIS Martin Děcký Application of Software Components in Operating System Design Department of Distributed and Dependable Systems Supervisor of the Doctoral Thesis: Doc. Ing. Petr Tůma, Dr. Study Programme: Computer Science Specialization: I2 Software Systems Prague 2015 ii Acknowledgements The text of this doctoral thesis captures my original thoughts related to the HelenOS microkernel multiserver operating system. The text describes my overall inluence on the design of HelenOS and also my individual contributions to the implementation of HelenOS. That being written, it is completely necessary to acknowledge that no human is an island and (almost) all ideas are always extensions and recombination of previous ideas. The current source code of HelenOS in its mainline branch [42] comprises of more than 287,000 physical lines of code (see Figure 7.2). These 287,000 physical lines of code were contributed by more that 50 individuals and organizations (including myself) over the entire history of HelenOS and its direct ancestors since 2001. The size of the code would be even higher if we would also count in all the original code that can be found in the numerous feature branches of HelenOS [41] and the code in standalone patches that still wait for their inal review and merging into the main- line branch. For the sake of simplicity, we also ignore the code that was once written, but later refactored, replaced or removed. Assessing my own personal contribution to the HelenOS mainline branch can be done in a straight- forward way by examining the source code repository. A conservative estimate is that the mainline branch contains about 15 % of source lines created or modiied by me (ignoring copyright headers, refactoring of foreign code, trivial coding style ixes, generated and binary iles, all my contribu- tions before August 2009, etc.). 589 iles out of 3215 (i.e. approximately 18 %) carry my copyright header. Putting one’s name into the copyright header is a HelenOS custom to tag iles that contain a signiicant contribution (not just minor modiications) from the given developer. Historically, I am the second most active contributor with a total of 2171 changesets committed (out of 7017). It is also fairly easy to quantify my other work related to HelenOS: At the Charles University in Pra- gue, I have personally supervised 19 successfully defended master theses and 2 successfully de- fended bachelor theses related to HelenOS (an additional master thesis is currently in progress under my supervision). I have also supervised 1 successfully defended individual project and 2 suc- cessfully defended team software projects that were related to HelenOS. I have acted three times as HelenOS organization administrator for Google Summer of Code (in 2011, 2012 and 2014) and twice for ESA Summer of Code in Space (in 2013 and 2015). Within these programs, I have men- tored 3 students. Finally, I have presented HelenOS at 5 major international events (ISARCS 2010, FOSDEM 2012, FOSDEM 2013, FOSDEM 2014 and FOSDEM 2015). Assessing my contribution from qualitative point of view is certainly not so straightforward. As it is with the ideas themselves, every singular contribution can be analyzed for an almost arbitrary long time to evaluate the proportion of personal effort. Just as a model example, I have person- ally reviewed the source code of many (but not all) deliverables of the theses and projects I have supervised or mentored before merging it into the mainline branch of HelenOS. I have modiied the source code written by the students – at times, these modiications were only minor coding style cleanups, but at different times, it was a major refactoring or rewrite. The success of my “gatekeeping” work was clearly conditioned by the existence of the source code delivered by the original authors. On the other hand, I have also indirectly inluenced that source code via my supervision or mentoring and even more importantly, my modiications to the source code during the reviewing process represent my own original input. iii Acknowledgements iv Therefore I leave the judgement about the proportion of my contribution to HelenOS to the kind reader. I hereby declare that I am completely open about the fact that HelenOS is an open source project, a long-term team and community effort and a mosaic assembled from individual ideas and contributions of many people working on a shared source base and in a shared design environment. In case of any doubt, I am ready to provide any additional information necessary to clarify the actual extent of my contribution to HelenOS. I irmly believe that my own body of work on HelenOS entitles me to express my ideas in this doctoral thesis. Any time I use the phrases “the authors of HelenOS”, “the developers of HelenOS” and similar ex- pressions in the context of design and implementation of HelenOS, the expressions should be under- stood in the following way: The given subject matter has been under discussion among the mem- bers of the HelenOS community (including me) and the described opinion is a generally accepted consensus in the HelenOS community. Personal Remarks First and foremost, I would like to express my gratitude to Jakub Jermář for starting HelenOS and accepting me into the original HelenOS team. Without Jakub, his enthusiasm for operating systems and his natural leadership authority, my professional life would have undeniably went on a com- pletely different path. I would have missed many interesting events and encounters that HelenOS enabled us. I would also like to thank Jakub for being my close personal friend over the years. His constant optimism, his openness and certainly also his dedication to HelenOS helped not only me, but all contributors to HelenOS to realize their dreams. A big thank you also goes to the other members of the original HelenOS team software project: Sergey Bondari, Josef Cejka, Ondřej Palkovský, Jakub Váňa and our supervisor Jakub Yaghob. With- out their effort, HelenOS would have never grown beyond a simple toy kernel. We are still building on the solid foundations that we have designed and implemented together as a team from 2004 to 2006. These were really the pioneering times and I often remember them in a rather nostalgic way. As there would be no foundations of HelenOS without the original team members, there would be little beyond that without the contributors that followed later on. The manpower and time donated by them allowed HelenOS to grow from an intricate loader for Tetris to an operating system that is just on the verge of actual practical usability. Let me divide the list of names I would like to explicitly mention into several groups. Tomáš Benhák, Zdeněk Bouška, Tomáš Brambora, Jan Buchar, Jan Dolejš, Stepán Henek, Vojtěch Horký, Adam Hraška, Jan Kolárik, Petr Koupý, Stanislav Kozina, Jan Mareš, Lukáš Mejdrech, Fran- tišek Princ, Pavel Rı́mský, Antonı́n Steinhauser, Jiřı́ Svoboda, Dominik Táborský, Jiřı́ Tlach, Lenka Trochtová and Ján Veselý are the authors of master or bachelor theses at the Charles University in Prague that I have supervised. Andrey Erokhin, Julia G. Medvedeva and Jiřı́ Zárevúcky are the stu- dents that I have mentored within Google Summer of Code. Matúš Dekánek, Matěj Klonfar, Jiřı́ Michalec, Ľuboš Slovák, Radim Vansa and Jan Záloha contributed into HelenOS in the framework of two team software projects at the Charles University in Prague under my supervision. Finally, Jiřı́ Kavalı́k, Michal Kebrt, Michal Konopa, Pavel Jančı́k, Martin Jelen, Petr Jerman, Peter Majer, Vojtěch Mencl and Petr Stěpán contributed to HelenOS in the framework of the Operating Systems course at the Charles University in Prague under my supervision. Thank you all for accepting the high quality requirements of HelenOS, tolerating my not always timely replies to your emails and especially for devoting your time and resources to HelenOS. v Acknowledgements A similar gratitude goes also to the other contributors who worked within Google Summer of Code or ESA Summer of Code in Space and who were mentored by other members of the HelenOS com- munity: Tobias Börtitz, Sean Bartell, Jakub Klama, Vivek Prakash, Oleg Romanenko and Agnieszka Tabaka. A special honorable mention goes to Jiřı́ Zárevúcky and to the supervisor of his bachelor thesis Zdeněk Rı́ha from Masaryk University in Brno, and to Martin Sucha and to the supervisor of his master thesis Jaroslav Janáček from Comenius University in Bratislava. The respective supervisors bravely embarked on supporting the theses although not being members of the HelenOS commu- nity. Not all of the deliverables of all the theses and projects done by the previously mentioned people have been integrated directly into the HelenOS mainline branch, but in all cases they served as ex- tremely valuable input for future development of HelenOS. Thanks again! My endless gratitude goes also to all the independent contributors from the wider open source com- munity. These people sacriiced their free time to improve the source code of HelenOS without any speciic compensation from our side and therefore deserve our respect. For the sake of brevity, let me name at least those whose contributions are in the mainline branch of HelenOS: Dmitry Bolkhovityanov, Lubomı́r Bulej, Tomáš Bureš, Manuele Conti, Matteo Facchinetti, Beniamino Gal- vani, Matthieu Gueguen, Zbigniew Halas, Mohammed Q. Hussain, Adrian Jamróz, Fan Jinfei, Sandeep Kumar, Maurizio Lombardi, Vineeth Pillai, Tim Post, Alexander Prutkov, Marin Ramesa, Jeff Rous, Thomas Sanchez, Ondřej Serý, Martin Sucha, Petr Tůma and Laura-Mihaela Vasilescu. There are also people who contribute to the HelenOS wiki, send us bug reports, talk to us via our development mailing list or over IRC and even contribute patches that are unfortunately still wait- ing in the queue for a review.