The subject provides insight into world of open-source projects and techniques proved to be usesfull for larger applications and operating systems development. Reasons leading to the founding of GNU project is discussed and possible andwantages of this approach for cooperation even for commercial subjects is shown. Usual tools used for development, debugging and source code control and functional testing are described. Description of POSIX type operating system structure and introduction to the driver development, user-space libraries and user graphics environments comes next. The last topic is introduction how to use earlier described techniques and support for embedded applications development and real-time control.
The intermediate knowledge of C language and at least basic experience with multi-threaded programming for POSIX systems. Basic knowledge of hardware and software structure of computer systems and logic circuits is required.
1. Introductory words for subject; Open-source software, project GNU,
license and operating systems and projects based on
2. GNU project - foundation of basic development tools and their use
3. Overview of major Open-source projects (even as guide for choice of semester work)
4. Founding of independent project and participation in existing project
5. Tools infrastructure (version control, bug tracking, communication, wiki)
6. Commercial model; Social and decision making concept
7. Inter-developers communication
8. Version releasing, packaging and continual development
9. Volunteers, evolution and branching
10. Licenses, copyrights and patents
11. Target platforms, portability and open-source hardware
12. Linux kernel - foundation, development, structure and drivers
13. Future trends and development
Introduction to GNU/Linux system environment and overview of development tools:
Implementation of simple application in "C" language using automake
or alternative methods for program assembly.
Work with large project and its history:
Good candidate is Linux kernel.
Examination an learning from history (git), development trees, configuration and building
Own work to implement simple character device.
The student select work on it own or some existing project. The project
should have structure of project using conventional programming
languages (C, C++, Java, Mono) and should follow portability rules (POSIX)
or should be targetted to some open source operating system/components development.
Work on project/patches, interaction with project community, consultations with exercises leader.
Project result presentation and evaluation and rating of the work success, incorporation into mainline projects and the student ability to cooperate
and communicate with other team members.
 Fogel K.: How To Run A Successful Free Software Project - Producing Open Source Software,
CreateSpace, 2009, ISBN-13: 978-1441437716
 The Linux Documentation Project http://tldp.org/
 GNU Operating System http://www.gnu.org/
 Embedded Linux kernel and driver development, http://free-electrons.com.
 Love R.: Linux Kernel Development (2nd Edition), Novell Press, 2005.
 Corbet J., Rubini A., Kroah-Hartman G.: Linux Device Drivers (3rd Edition),
O'Reilly Media, Inc., 2005, ISBN-10: 0596005903, ISBN-13: 978-0596005900