Linux System developing
OpenMandriva technical overview
The OpenMandriva Linux distribution is made possible by two major fields of technical contribution:
- creation and maintanance of the tools, configuration and art special to the distribution (like the installer, the configuration center, themes,..)
- consistent packaging of several thousand different programs and libraries in order to make them available to the user in a simple and consistent way
You are invited to help in both fields and will find the guidelines and rules at these pages.
Tools, configuration & Themes
General Information about the tools
mdawkins: please provide a boiler text here.
How to contribute here...
We are in the process of moving the tools to a central place, so it may take a while until it is easy to contribute here.
mdawkins: cann you also add some more details here?
Packaging software and keep everything working together is an Herculean task (and one of the major reasons why there aren't even more Linux distributions as there are now). OpenMandriva uses a separational approach to achieve this task:
- packages in the "main"-repository are very high-maintained and cared for
- packages in the "contrib"-repository, though generally working and functional generally aren't as focussed on and may not be as well integrated
However, even if the rules for packages in contrib are treated a bit more lax, the rules for both repositorys are generally the same.
General packaging rules
General things you should know about packaging in OpenMandriva:
- There's a group called Technical Committee (aka TC), which is closely related to the active packagers and developers. This is the group which also is in charge of the technical decisions like "which software to include", "upgrade to a newer version of a software" and "when to release". So if you've questions like that, ask them on irc or mailinglist.
- We follow several package guidelines <-- bero? fedya? mdawkins?
- In order to protect us from trolls new contributors might at first have to do pull-requests, only afterwards they may get writer access to the repositories.
- We find it important that you talk about what you do in form of clear clear communication on irc or the Mailinglists.
- Do not try to touch software which people from the TC agreed to freeze for a certain time (most possible until the next release). We do not always want the newest features if that opposes our main aim of a working Linux distribution.
How to contribute to packaging
Most often your wish of contribution on packaging will come from a software in OpenMandriva where you've found a bug, or where you'd like to see a feature we've not already compiled into. We thus expect that you're at least slightly familiar with RPM packages (good knowledge in other package formats might also do, as the differences aren't the world), the *nix trinity of configure, make and make install.
- If you're not we also happily help you with that, but our main focus is at developing the OpenMandriva distribution, so we won't be able to substitute a computer science class. However, there are lot's of nice tutorials and helpful people around the net where you can find additional help. Just do a web search for eg. "linux rpm howto".
For everyone else:
Quickstart guide on how to fix a 'broken' package
- join #openmandriva-cooker to get in contact with the other contributors and be able to discuss the changes/contributions you'd like to make
- subscribe the cooker-mailinglist here Mailing Lists
- it's not just avout developing, as everything is building up, atm. But it will again be the place for mostly technical discussions, after the initial phase.
- get an account on abf (The BuildSystem we use)
- how to do that
- You can find an introduction to and more details concerning abf at Rosa's wiki: http://wiki.rosalab.ru/en/index.php/Category:ABF_Build_Environment
- set up your local developing/packaging environment
- how to do that and how then to interact with abf <-- to be filled in by bero
- Documentation for the abf console client: http://wiki.rosalab.ru/en/index.php/ABF_Console_Client
- clone the package you want to fix in your personal repository
- this is as easy as
- use the search function for the projects name
- select openmandriva/projectname from the results
- click the fork-button at the projects page
- this is as easy as
- fix it
- use our guide for that
- or just edit the spec-file using the web-Editor provided by abf
- don't forget to increment the release-Number of the package
- build it
- you can do that by clicking on "new build" on the packages page
- if the build succeeded:
- you can try out the rpms by yourself (will be available in your personal repo, or from the build status page)
- if you're happy with your changes:
Tools and information surrounding packaging
- abf -- the build system we use
- Kahinah, the OpenMandriva Update System
- Github -- useful resources on the state of the packages
- Github Software -- Other useful software
Note: previously we used to work with ABF created and run by "ROSA" company, what became much harder in the second half of 2015. We were brainstorming, and the challenging solution of creating our fully own development environment was taken.
- repositories, fresh from abf:
urpmi.addmedia --distrib http://abf-downloads.openmandriva.org/cooker/repository/x86_64/ urpmi.addmedia --distrib http://abf-downloads.openmandriva.org/cooker/repository/i586/
Please use mirrors if you don't plan to actively contribute. And be aware that these repositories might be broken several times a day, and are just thought to minimize delay for active developers.
Current packaging status
- status is regularly posted at cooker-ml
- atm <1000 pkgs broken
- Contrib status here: Spreadsheet
List of unfinished artwork/theme/license packages
incomplete mind dump
- mandriva background
- mandriva greeting email
- boot background image
- installer start image
- installer desktop icon
- configure theme
- start icon
- background image
- Kickoff top tile (change svg to say OpenMandriva instead of ROSA-sth)
- change back moondrake branding to OpenMandriva
Introduction The operating system and the different components available in the OpenMandriva GNU/Linux distribution shall be called the \"Software Products\" hereafter. The Software Products include, but are not restricted to, the set of programs, methods, rules and documentation related to the operating system and the different components of the OpenMandriva GNU/Linux distribution, and any applications distributed with these products provided by OpenMandriva's licensors or suppliers. 1. License Agreement Please read this document carefully. This document is a license agreement between you and the OpenMandriva Association which applies to the Software Products. By installing, duplicating or using any of the Software Products in any manner, you explicitly accept and fully agree to conform to the terms and conditions of this License. If you disagree with any portion of the License, you are not allowed to install, duplicate or use the Software Products. Any attempt to install, duplicate or use the Software Products in a manner which does not comply with the terms and conditions of this License is void and will terminate your rights under this License. Upon termination of the License, you must immediately destroy all copies of the Software Products. 2. Limited Warranty The Software Products and attached documentation are provided \"as is\", with no warranty, to the extent permitted by law. Neither the OpenMandriva Association nor its licensors or suppliers will, in any circumstances and to the extent permitted by law, be liable for any special, incidental, direct or indirect damages whatsoever (including without limitation damages for loss of business, interruption of business, financial loss, legal fees and penalties resulting from a court judgment, or any other consequential loss) arising out of the use or inability to use the Software Products, even if the OpenMandriva Association or its licensors or suppliers have been advised of the possibility or occurrence of such damages. LIMITED LIABILITY LINKED TO POSSESSING OR USING PROHIBITED SOFTWARE IN SOME COUNTRIES To the extent permitted by law, neither the OpenMandriva Association nor its licensors, suppliers or distributors will, in any circumstances, be liable for any special, incidental, direct or indirect damages whatsoever (including without limitation damages for loss of business, interruption of business, financial loss, legal fees and penalties resulting from a court judgment, or any other consequential loss) arising out of the possession and use of software components or arising out of downloading software components from one of OpenMandriva GNU/Linux sites which are prohibited or restricted in some countries by local laws. This limited liability applies to, but is not restricted to, the strong cryptography components included in the Software Products. However, because some jurisdictions do not allow the exclusion or limitation or liability for consequential or incidental damages, the above limitation may not apply to you. %s 3. The GPL License and Related Licenses The Software Products consist of components created by different persons or entities. %s Most of these licenses allow you to use, duplicate, adapt or redistribute the components which they cover. Please read carefully the terms and conditions of the license agreement for each component before using any component. Any question on a component license should be addressed to the component licensor or supplier and not to the OpenMandriva Association. The programs developed by OpenMandriva are governed by the GPL License. Documentation written by OpenMandriva is governed by a specific license. Please refer to the documentation for further details. 4. Intellectual Property Rights All rights to the components of the Software Products belong to their respective authors and are protected by intellectual property and copyright laws applicable to software programs. OpenMandriva and its suppliers and licensors reserves their rights to modify or adapt the Software Products, as a whole or in parts, by all means and for all purposes. \"OpenMandriva\", \"OpenMandriva GNU/Linux\" and associated logos are trademarks of the OpenMandriva association. 5. Governing Laws If any portion of this agreement is held void, illegal or inapplicable by a court judgment, this portion is excluded from this contract. You remain bound by the other applicable sections of the agreement. The terms and conditions of this License are governed by the Laws of France. All disputes on the terms of this license will preferably be settled out of court. As a last resort, the dispute will be referred to the appropriate Courts of Law of Paris - France. For any question on this document, please contact OpenMandriva.", $us ? "\n\n" . N("You agree not to (i) sell, export, re-export, transfer, divert, disclose technical data, or dispose of, any Software to any person, entity, or destination prohibited by US export laws or regulations including, without limitation, Cuba, Iran, North Korea, Sudan and Syria; or (ii) use any Software for any use prohibited by the laws or regulations of the United States. U.S. GOVERNMENT RESTRICTED RIGHTS. The Software Products and any accompanying documentation are and shall be deemed to be \"commercial computer software\" and \"commercial computer software documentation,\" respectively, as defined in DFAR 252.227-7013 and as described in FAR 12.212. Any use, modification, reproduction, release, performance, display or disclosure of the Software and any accompanying documentation by the United States Government shall be governed solely by the terms of this Agreement and any other applicable licence agreements and shall be prohibited except to the extent expressly permitted by the terms of this Agreement.") . "\n" : '', $google ? N("Most of these components, but excluding the applications and software provided by Google Inc. or its subsidiaries (\"Google Software\"), are governed under the terms and conditions of the GNU General Public Licence, hereafter called \"GPL\", or of similar licenses.") : N("Most of these components are governed under the terms and conditions of the GNU General Public Licence, hereafter called \"GPL\", or of similar licenses.