- The course is a substitute for:
- Open-source programming (A4M35OSP)
- Department of Control Engineering
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.
- Syllabus of lectures:
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
- Syllabus of tutorials:
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.
- Study Objective:
- Study materials:
 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
- Further information:
- No time-table has been prepared for this course
- The course is a part of the following study plans:
- Cybernetics and Robotics - Robotics (elective course)
- Cybernetics and Robotics - Senzors and Instrumention (elective course)
- Cybernetics and Robotics - Systems and Control (elective course)
- Open Informatics - Computer Engineering (compulsory course of the specialization)
- Open Informatics - Software Engineering (compulsory course of the specialization)
- Communications, Multimedia and Electronics - Wireless Communication (elective course)
- Communications, Multimedia and Electronics - Multimedia Technology (elective course)
- Communications, Multimedia and Electronics - Electronics (elective course)
- Communications, Multimedia and Electronics - Networks of Electronic Communication (elective course)
- Electrical Engineering, Power Engineering and Management - Technological Systems (elective course)
- Electrical Engineering, Power Engineering and Management - Electrical Machines, Apparatus and Drives (elective course)
- Electrical Engineering, Power Engineering and Management - Electrical Power Engineering (elective course)
- Electrical Engineering, Power Engineering and Management - Economy and Management of Power Eng. (elective course)
- Electrical Engineering, Power Engineering and Management - Economy and Management of Electrical Eng. (elective course)
- Cybernetics and Robotics - Air and Space Systems (elective course)
- Communications, Multimedia and Electronics - Communication Systems (elective course)
- Open Informatics - New - Software Engineering (compulsory course of the specialization)