StrategyDocument

Differences between revisions 24 and 25
Revision 24 as of 2011-09-20 14:31:44
Size: 43260
Editor: 71-209-42-171
Comment:
Revision 25 as of 2012-08-24 20:34:29
Size: 28171
Editor: nblzone-227-162
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from Xubuntu/Specifications/Intrepid/StrategyDocument
Line 10: Line 8:
This is the Xubuntu Strategy Document which was developed primarily by Cody Somerville (project leader at time of writing) in late Spring, early Summer 2008. The rationale and motivation behind the development of this document was to enable Xubuntu to become a sustainable and healthy project. This document will describe the long term strategy, vision, and direction of the Xubuntu project which Xubuntu developers and contributors will utilize as a guide and reference.

This document lays an important piece of foundation in the Xubuntu project. By keeping our strategy and vision documented we help ensure that our objectives are aligned and movement occurs in a forward direction that is conducive to strategic growth.

Special thanks to Jono Bacon, Eero Tamminen, Nico Veenkamp, and Lionel Le Folgoc for their contributions to this document. Some content, ideas, and inspiration were derived from existing Ubuntu documentation.

This document will describe the strategy, vision and direction of the Xubuntu project as well as act as a guide and a reference for the Xubuntu Team.

This revised version has been written by Pasi Lallinaho with the help of Elizabeth Krumbach and Simon Steinbeiß along with numerous people in the community. This version is based on the existing Xubuntu Strategy Document by Cody Somerville et al.

We wish thank to Cody Somerville, Jono Bacon, Eero Tamminen, Nico Veenkamp and Lionel Le Folgoc for their contributions to this document. Some content, ideas, and inspiration were derived from existing Ubuntu documentation.
Line 18: Line 17:
Xubuntu will provide an easy to use distribution, based on Ubuntu, using Xfce as the graphical desktop, with a focus on integration, usability and performance, with a particular focus on low memory footprint. The integration in Xubuntu is at a configuration level, a toolkit level, and matching the underlying technology beneath the desktop in Ubuntu. Xubuntu will be built and developed autonomously as part of the wider Ubuntu community, based around the ideals and values of Ubuntu. Xubuntu is a community-developed, Ubuntu-based operating system that combines elegance and ease of use. Xubuntu provides a light, stable and configurable desktop environment with conservative workflows. Xubuntu delivers a polished and unified product ready for end-users.

In addition to the technical aspects, the Xubuntu team focuses on contributor and user communities.
Line 22: Line 23:
For a project to have a useful vision and strategy, it must have a target audience or group. The target audience for Xubuntu is users who are interested in having a modestly light weight, slim, fast desktop experience while retaining the usability and functionality that is required to provide an easy to use desktop environment.

Xubuntu does not target users with specific skill sets or aptitudes. What this means is that we want Xubuntu to be a viable option for users who are new to Linux or the Ubuntu platform, but also be appealing to more experienced users. This also means that Xubuntu does not specifically focus on new users or users migrating from Windows; alternative distributions such as Ubuntu may be more appropriate for first time Linux users (especially first time Linux users who may be particularly at risk of experiencing difficulties due to lack of general experience).

Xubuntu does not exclusively target users with low, modest, or high powered machines but instead targets the entire spectrum with a strong focus on enabling lower end machines. Xubuntu's extra responsiveness and speed, among other positive traits, can be appreciated by all users regardless of their hardware.

Xubuntu is not specifically targeted to Xfce4 enthusiasts, as projects/software being hosted by the Xfce4 project or associating (officially or unofficially) with Xfce4 are not guaranteed inclusion in Xubuntu over other applications which may be a better fit for Xubuntu. However, Xubuntu is a good choice for users who want an integrated, usable, and fast desktop distribution that uses Xfce4 accompanied with a strong set of GTK applications.

Other groups of users may also be good fits for Xubuntu but they are not targeted specifically at this time.

=== Xubuntu's Three Tier Focus ===

We will use a three tier system that defines our foci and provides a transparent, agnostic framework that can be applied to dispute resolution, package selection, policy, and our decision making processes. Our three tier system is the foundation of the Xubuntu vision and provides us with a clear set of priorities that are abstract enough to be simple but also concrete enough to be actionable. As the foundation of the Xubuntu vision, this construct is static in nature and should not be confused with release specific goals and priorities but instead recognized as the principles which the release specific goals are based on.

==== Focus 1: Integration ====
   
It is important for us to provide an integrated desktop and is a prerequisite to enabling Xubuntu as a useful desktop, a usable desktop, and an effective desktop. Without integration, the Xubuntu desktop will be rough and unpolished which is unappealing to our end-users. We will provide an integrated desktop by selecting packages that work well with each other and applying patches (aka "glue") to further synergize existing dynamics. For example: we will ship GTK applications that conform properly to the system's look and feel; we will ship applications that integrate or interact with the Xfce4 desktop environment where the applications are mature, stable, maintainable, and provide a positive net benefit.

See "Package Selection" section for further discussion on how to determine an application's fit in the Xubuntu stack.

Success is measured by considering the progress made during a release cycle towards related specifications and user feedback. In the future, more comprehensive metrics will be developed.

==== Focus 2: Usability ====
   
We want Xubuntu to be usable. By this, not only do we mean we want Xubuntu to be easy to use but also accessible and localized to enable users who face impairments and those wishing to work in their native language. To accomplish this, we'll strongly consider the usability and accessibility of an application when deciding on package selection, invest in contributing to upstream usability and localization efforts, and pulling on talent from our commnity to provide interface usability analysis.

Success in providing an accessible desktop can be measured through testing (including automated) and user feedback while localization will be measured by looking at the percentage of the desktop that is translated. To measure how easy to use Xubuntu is, we'll employ test cases and draw on the community talent to provide professional grade analysis.

==== Focus 3: Performance ====
   
Being lightweight, slim, and fast are all words that have been used to describe and market Xubuntu. However, over the last few releases we've noticed that not only does Xubuntu pale in comparison to some of the other Xfce4 distributions but we've also been putting on even more weight and bulk. Although it is not Xubuntu's goal nor target to provide a desktop environment which will run on the most minimal of systems, it is Xubuntu's goal to provide a desktop that is modest and can run with minimal problems on machines that have aged a few years.

To achieve this, Xubuntu will focus on "profiles". Each profile will define a system coupled with well defined expectations (ie. test cases). Meeting the expectations set for the different profile will be the measure of success for this focus.

An example profile set:

"Light Profile" : 192mb of ram, 333mhz
 1. User should be able to browse the web.
 2. User should be able to listen to music.
 3. User should be able to use text editing tools.

"Modest Profile" : 512mb of ram, 800mhz
 1. User should be able to browse the web and listen to music.
 2. User should be able to browse the web and do word processing.
 3. User should be able to have applications like pidgin running while doing
    day-to-day operations.

"Enhanced Profile" : 1.0gb of ram or more, 1.8ghz or greater
 1. User should be able to have xchat, web browser, pidgin, text editor, and
    music player running.
 2. If the user has accelerated graphics, they should be able to use compositor.
 3. User should be able browse the web, do word processing, and have two other
    applications such as x-chat, pidgin, and/or music player running in the
    background.
   
At the start of the release cycle, the performance targets should be re-evaluated to determine if they continue to be realistic. Actual test cases and profiles should be documented in the Xubuntu testing team wiki pages.

==== (Unofficial) Focus 4: Community ====
   
Although not an official element of the Xubuntu Three Tier focus (which is limited in scope to technical considerations), community *is* most certainly a focus and priority within the Xubuntu project. Xubuntu is community driven meaning that it is developed, maintained, and supported by members of the Xubuntu community. For Xubuntu to be a healthy and successful project, it must maintain an equally healthy and successful community. Xubuntu, as a project, will aim to be composed of a vibrant, active and energized community and will attempt to accomplish this by being proactive in its development of said community. Xubuntu will host bug days, packaging jams, and other public events specifically targeted to raising awareness and interest in the Xubuntu project.

Success will be measured via IRC, forum, and list acitivty as well as turn out to Xubuntu events.
The target audience for Xubuntu consists of users who are interested in having an elegant, easy to use, polished and unified operating system. Xubuntu is a good option for those who want a stable, configurable and/or relatively light desktop environment too. Finally, Xubuntu is an appealing choice for users who prefer conservative workflows over the newest innovations.

Xubuntu does not target users with specific skill sets or aptitudes. We want Xubuntu to be a viable option for users who are new to Linux or the Ubuntu platform, but also be appealing to more experienced users. Xubuntu does not specifically focus on new users or users migrating from Windows, but according to this ease of use, it is a good alternative for those users as well.

Xubuntu does not explicitly target users with low, modest, or high powered machines but instead targets the entire spectrum. Xubuntu's extra responsiveness and speed, among other positive traits, can be appreciated by all users, regardless of their hardware.

While Xubuntu uses Xfce, it is not specifically targeted to Xfce enthusiasts or projects and software being hosted by the Xfce project or associating (officially or unofficially) with Xfce are not guaranteed for inclusion in Xubuntu.

=== The areas of focus ===

This part of the strategy document provides a transparent framework and a set of priorities for the whole Xubuntu development and its tasks, including but not limited to decision making processes, package selection and technical dispute resolution.

The areas of focus are presented in an abstract and simple form but are also concrete enough to be actionable. As the foundation of the Xubuntu vision, the specifications in the strategy document should not be confused with release-specific goals and priorities, but instead recognized as the principles which the release-specific goals are based on.

==== Focus 1: Usability ====
   
Usability is one of the most important parts of an operating system which is used on a daily basis. This is why Xubuntu should be easy to use and have an appearance that doesn't get in the way. The appearance should be an all-round experience, covering all user interfaces from booting to shutting down.

Xubuntu should be localized to allow users to work in their preferred language. Another important aspect of usability is configurability. We believe Xfce gives users the possibility to configure their system in a meaningful way; other applications should live up to this expectation at least moderately well.

While accessibility is not one of the main priorities of Xubuntu, it should be taken into serious consideration as long as it doesn't require unreasonable efforts to integrate, implement or maintain. At least common accessibility tools should be installed in the default Xubuntu installation.

==== Focus 2: Performance ====
   
The Xubuntu team should strive to make Xubuntu lightweight. This means every Xubuntu release should work moderately well on machines that date to a few years before the release date. This ultimately means that newer Xubuntu releases may not able to support older computers. However, it assures that the Xubuntu team is able to work on other improvements and provide a release that is able to fulfill the expectations for a modern operating system.

Users wanting the most lightweight system possible should be pointed at the minimal CD, more lightweight derivatives (such as Lubuntu) or other options.

At the start of the release cycle, the minimum system requirements should be re-evaluated to determine if they continue to be realistic.

==== Focus 3: Ready to use product ====
   
It is important for us to provide a polished and unified product that is ready for end-users. It is also a prerequisite to enabling Xubuntu as a useful, usable and effective desktop. Without the mentioned integration, the Xubuntu desktop will appear rough and unpolished which is unappealing to end-users.

The integration is accomplished also by selecting applications and libraries that work well with each other as well as by applying patches to assure a more bug-free system.

See the "Package Selection" section for guidelines on how to determine if an application fits in the Xubuntu stack.

==== Focus 4: Community ====

The Xubuntu community is an important force in creating Xubuntu and making it as perfect as it can be. It's essential that regular coordination between contributors work well. The infrastructure to allow good communication between the contributors as well as users is described more closely in "Xubuntu Community" and "Xubuntu Development".

Where possible and appropriate, the Xubuntu team should work together with other communities, including other Ubuntu teams and upstream. If cooperation at a given time is not possible but would be beneficial for both parties, the Xubuntu team should try to allocate some resources to the cooperation at a later time.
Line 87: Line 69:
=== Xubuntu Governance & Team Structure ===

The following sections explore the Xubuntu governance and team structure. The workflow, procedures, policies, and other relevant information for the function that the team provides can be found later in this document under the "Standard Operations" header.
   
A simple overview of this structure would show you that there are three main groups:
   
 1. Xubuntu Users
 2. Xubuntu Contributors
 3. Xubuntu Council

Xubuntu users is a collection of users who use Xubuntu or are interested in Xubuntu.
   
Xubuntu Contributors is the recognized contributing user body. Individuals who have made a significant and sustained contribution
   
Xubuntu Council is a small team of individuals from different fields in the Xubuntu community who are responsible for making important decisions about Xubuntu, providing leadership and direction, resolution of internal conflicts, and ensuring Xubuntu policies and procedures are executed as desired. This team is led by the Xubuntu Project Lead.
   
Below, each section describes a team and their sub teams. In each team description, you will find a short description, rationale, membership policy, team ownership, team leadership, team responsibilities, and sub-teams.
   
==== Xubuntu Users (xubuntu-users) ====
       
The Xubuntu users team is a collection of dedicated Xubuntu users.
       
Rationale: Provide a group for users to organize and identify themselves with. This team already exists.
           
This is an open team. To join this team, you agree to assist other users (when you can) on IRC and the xubuntu-users mailing list. Furthermore, members of this team are encouraged to assist in Xubuntu marketing efforts. It is the member's responsibility to adhere to the terms of their membership.
           
This team is owned by the Xubuntu Council and is lead by Xubuntu Contributors.
           
This team team is responsible for:
  * Community, user support; and
  * Marketing.
               
The following teams are members of this team:
  * Xubuntu Contributors; and
  * Xubuntu Council.
           
==== Xubuntu Contributors (xubuntu-team) ====
       
This team exists to recognize and help coordinate Xubuntu contributors. Furthermore, this team will be the bug contact for all Xubuntu packages. The e-mail contact for this team will be set to the xubuntu-bugs mailing list (resulting in all bug mail being sent to the list instead of individual members) allowing optional subscription to Xubuntu bug mail for both team members and non-team members.
       
Rationale: To provide a team to identify Xubuntu contributors and allow for members to organize themselves. This team already exists but will be re-branded for improved clarity.

This is a moderated team. To join, the following criteria must be met:
  * User has demonstrated sustained and significant contribution for a minimum of three months;
  * User has clear plan for future contributions;
  * User has detailed their contributions on their wiki page; and
  * the User has demonstrated a good understanding of the Xubuntu community and its operation.
               
This team is owned by the Xubuntu Council and is led by its senior members and the Xubuntu Council.
               
This team is responsible for:
  * Coordinating contribution efforts;
  * Community, user support;
  * Marketing;
  * Coordinating bug triage efforts;
  * Managing Xubuntu products; and
  * Working with upstream to see that bugs are fixed upstream;
               
The following teams are members of this team:
  * Xubuntu Documentors; and
  * Xubuntu Developers.
              
==== Xubuntu Documentors ====
           
The Xubuntu documentors team exists to coordinate development and maintenance of Xubuntu system documentation, Xubuntu wiki, and the Xubuntu website.
           
Rationale: Allow select individuals (ie. recognized contributors) commit access to bazaar branch containing Xubuntu system documentation and Xubuntu website development copy. (The doc branch would be merged regularly with the official Xubuntu system documentation branch hosted by the Ubuntu documentation project core team.) Furthermore, it would allow users to organize themselves and their activities including writing wiki pages and developing the website.
           
This team is a moderated team. To join, the following criteria must be met:
  * User is interested in writing system documentation and/or work on the Xubuntu website;
  * User has demonstrated appropriate skill (ie. written language, docbook, html, php, etc.); and
  * User has been a positive contributor via patches/sponsorship already.
               
This team is owned by the Xubuntu Council and is lead by its senior members.
           
This team is responsible for:
  * Writing and maintaining system documentation;
  * Writing and maintaining wiki pages;
  * Writing and managing content on Xubuntu website; and
  * Developing the Xubuntu website, including theme.
               
No other teams are a member of this team.
           
The Xubuntu documentors team has several virtual (ie. the only launchpad team is ubuntu-docs) teams that work on specific components/projects: Xubuntu website editors, Xubuntu wiki team, and Xubuntu doc team.
           
The Xubuntu community is comprised of two main groups, Xubuntu users and Xubuntu team. The Xubuntu team has four subteams; Xubuntu Artwork team, Xubuntu Developers, Xubuntu Documenters and Xubuntu Website team. This section covers the governance and team structure of the aforementioned teams, along with the definition of Xubuntu Project Lead.

=== Xubuntu Users ===

Xubuntu users is a collection of users who use or are interested in Xubuntu. The purpose of this group is to identify and organize Xubuntu users.

The users in this group will be able to vote in the Xubuntu community meetings. The members in the Xubuntu users group are encouraged to give user support on IRC and the xubuntu-users mailing list as well as spread the word about Xubuntu anywhere they see fit, including but not limited to blogs, social media and conferences.

The group is registered in Launchpad as xubuntu-users. It is open for anybody to join. The Xubuntu team is a member of this group.

=== Xubuntu Team ===

The Xubuntu team is a group of individuals who are primarily responsible for the Xubuntu development.

This team is responsible directly or via its subteams for:
 * Coordinating contribution efforts
 * Managing the community
 * User support
 * Marketing
 * Coordinating bug triaging
 * Managing Xubuntu products
 * Working with upstream on bugs

Members of this group can be appointed as team leads by the Xubuntu project lead. Any member appointed as a team lead by the project lead should have a second casting vote in addition to the Xubuntu project lead, if the said issue clearly concerns the team lead's team/area of expertise. For example, the artwork team lead will have a casting vote in artwork-related issues.

The group is registered in Launchpad as xubuntu-team. The team is moderated. The individuals wanting to join this team are required to meet the criteria described below prior to applying or they will be automatically declined. The Xubuntu project lead is responsible for moderating this team.

==== Becoming and staying a member ====

To be accepted to this team, applicants participants must demonstrate their motivation and ability to contribute to Xubuntu. This is to ensure that any Xubuntu team member has a sufficient understanding of the Xubuntu community and its operation. The different steps one must go through will also indicate that the candidate member is able to work within the guidelines, and more important, with other people and communities.

The process to become a Xubuntu team member is explained below. Please note that approving to subteams and the Xubuntu team has no specific schedule and happens only when the concerning people think it is appropriate to approve. For example, to join the Xubuntu Developers team usually takes more contributions to join than the rest of the subteams.
 * Commit meaningful contributions to one of the subteams; you will be approved to the subteam for "probation" by a subteam administrator
 * Demonstrate motivation to contribute perpetually; you will be approved to the Xubuntu team by the Xubuntu project lead

Since the Xubuntu contributor community fluctuates in its size, the subteams are established or discontinued based on the current situation by the Xubuntu project lead whenever it makes sense. If newly established subteams need access or have other technical needs, the Xubuntu project leader will set those up with the help of other concerning parties, including team leads and other Ubuntu members.

To stay a member of this team, the members will have to have desire to continue contributing in the future. Any member with no contributions for more than a complete cycle (6 months) will be deactivated from the team and will have to reapply. A team member can get an exception to this by simply leaving a note that they will be taking a break from contributing. However, if the break is to last longer than a cycle, or the contributor is unsure if they will contribute at all in the future, it would be preferable for the contributor to leave the team and reapply at a later time. Membership in the subteams is not as strict, but people with no contributions for a significantly long time will be deactivated from the subteams too.
Line 173: Line 109:
                The Xubuntu developers are individuals who have a sustained and positive record of contribution via packaging.
           
Rationale: It is important to have a team to distinguish individuals who are recognized developers as developers are often responsible for making day to day decisions regarding packages and other development related topics. This team would also host the Xubuntu seeds.
           
This team is a moderated team. To join, the following criteria must be met:
  * User has a sustained and positive record of contribution via packaging to Xubuntu;
  * User has demonstrated appropriate skill and trustworthiness to be entrusted with upload privileges to Xubuntu and Xubuntu related packages; and
  * User is willing to assist in merging, syncing, and packaging of Xubuntu related packages.
               
This team is owned by the Xubuntu Council and is lead by its senior members.
           
This team is responsible for:
  * Packaging, merging, syncing, and developing Xubuntu;
  * Fixing bugs;
  * mentoring promising contributors; and
  * helping the other teams make Xubuntu rock.
           
==== Xubuntu Council (xubuntu-council) ====
       
The Xubuntu council is a small group of people who have been designated as "movers and shakers" by the Xubuntu project lead; this body is responsible for making final decisions regarding Xubuntu and its policies, assets, resources, priorities, and disputes.

Initially, the Xubuntu project leader will be the sole member of this team and no launchpad group will exist. When the Xubuntu project leader requires further individuals to be a member of the council, he or she will then create a launchpad team which will contain the members of the council.

Rationale: It is important that an official governance body exists so that Xubuntu can be autonomous and self-sufficient.
       
This team is a restricted team. To join, the following criteria must be met:
  * User has extensive experience with Xubuntu and Xfce4;
  * User is well known within the Xubuntu and Ubuntu community;
  * User has demonstrated strong leadership, communication, and collaboration skills;
  * User has been selected to help lead Xubuntu by the Xubuntu project lead.
           
This team is owned and lead by the project team leader.

The Xubuntu developers is a team that is responsible for:
 * Packaging, merging, syncing and developing Xubuntu
 * Fixing bugs
 * Mentoring new contributors to development
 * Managing the Xubuntu seeds

The criteria to join this team are:
 * Sustained and positive contribution via packaging to Xubuntu
 * Appropriate skill and trustworthiness to be entrusted with upload privileges to Xubuntu and related packages
 * Willingness to assist in merging, syncing and packaging Xubuntu and related packages

The group is registered in Launchpad as xubuntu-developers. The team is moderated. The individuals wanting to join this team are required to meet the criteria described above prior to applying or they will be declined. The Xubuntu Technical lead (or if one doesn't exist, the Xubuntu project lead) is responsible for moderating this team.
Line 209: Line 125:
The Xubuntu project lead is ultimately responsible for Xubuntu and ensuring that a quality product is able to be released on schedule.

The project lead also has the casting vote/veto ability. This capacity is not used lightly. The community functions best when it can reach broad consensus about a way forward. However, it is not uncommon in the open source world for there to be multiple good arguments, no clear consensus, and for arguments to divide communities rather than enrich them. The argument absorbs the energy that might otherwise have gone towards the creation of a solution. In many cases, there is no one "right" answer, and what is needed is a decision more than a debate. The project lead should act to provide clear leadership on difficult issues, and set the pace for the project. It is understood that the divisive use of the project leads authority could weaken the project. For that reason the authority is used carefully, in the hope that it will create momentum in the best direction for the project, breaking stalemates where otherwise competing views would fail to reach consensus.

The Xubuntu project lead serves a term of three releases after which he or she must seek reconfirmation from the Xubuntu community via a public meeting. If consensus is unable to be found, the matter is referred to the Ubuntu Community Council.

The Xubuntu project lead is chosen by a popular vote during a Community Meeting. Those elgible to vote are the members of the Xubuntu Users team in launchpad. This team includes both Xubuntu Contributors and Xubuntu Council, thus will be able to choose an effective project lead. Project lead nominations are made in the preceding month in advance of the election, by members of Xubuntu Users. These nominations may be submitted by an
individual nominating themselves or someone else. The leader is to be voted on during a Xubuntu community meeting.

It is recommended that nominees add relevant information for the election to their personal wiki pages (eg: activities in the relevant team and specific interests today, thoughts about the most important challenges of the team in the next year, what you'd like to see change in the team, work to focus on as the project leader).

The project lead is to be the person receiving a simple majority vote. The person receiving the second highest vote will be the interim project lead should the project lead be unable to fulfill the entire term.
   
=== Dispute Resolution ===
   
Disputes occur in every project. A project is healthy not when they experience no disputes but when they do experience disputes they're able to work through them through collaboration or come to compromise when necessary. For that to happen, there needs to be a dispute resolution process that is easy to follow and use and able to give clear, concise resolutions in the end. The Xubuntu project is no different.
   
The Code Of Conduct is one of the most fundamental documents in the Ubuntu community. Within it, expected core standards of behavior are laid out, which while innate in most people, the document clearly defines standards of "being excellent to each other" in the Ubuntu community.

Although the CoC defines these core standards of behavior, it is not intended to be a document that is used against people accused of not adhering to the concepts in it. The CoC is really intended as a document to outline clearly what the community expects. If someone is quite clearly behaving against the standards of the CoC, the CoC should not be used as evidence against them, the person is quite clearly not acting within the spirit of the community, and their actions are what they should be judged on.

If you feel that someone is not acting within the spirit of the community and their behavior is not within the CoC, you should be careful not to shout, "You are breaking the CoC!" at them. Any accusations of unsuitable behavior should focus on their actions and why their actions are causing problems in your community. If this is not effective and the issue persists, the next step would be to ask for intervention/assistance from a trusted third-party in the community.
  
Although a majority of disputes will be resolved though effective communicate, in situations that require further assistance the appropriate escalation would be to the Xubuntu council by adding the issue to the Xubuntu council's agenda for the next meeting. At the meeting, attending parties will explain their issues and point of view to members of the council and the council will be able to either assist in mediating the issue or provide a resolution for the involved parties.

The Ubuntu Community Council and Ubuntu Technical Board can be asked to act as mediators/advisors where their expertise (whether being diplomatic or technical) would be useful when the Xubuntu council is unavailable or requires assistance.
   
=== Instigating Growth ===
   
If Xubuntu is not growing, it is dying. To ensure constant and sustained growth of the project, it is important the Xubuntu leaders stay involved and keep the community informed of developments, news, and progress. Activity and growth is viral. When activity in a project is present, it tends to generate further activity and interest. If interest and involvement is not maintained then the project's community will regress.
   
Xubuntu will also host community events such as bug days, packaging jams, and other sessions to promote and encourage Xubuntu awareness and activity.
   
Xubuntu contributors will be encouraged to blog about Xubuntu on their blogs and have their blogs syndicated to locations such as the Ubuntu Planet.
   
An active effort will be made to ensure that Xubuntu related stories and articles of interest make their way to the community at large via mediums such as the planet and the Ubuntu weekly newsletter.
   
Xubuntu contributors will work with Ubuntu counterparts and establish mutually beneficial working relationships and flows of contribution.
   
The Xubuntu project lead is ultimately responsible for Xubuntu and ensuring that a quality product is able to be released on schedule.

The Xubuntu project lead serves a term of four releases. The term should start with a release just after LTS, and end with an LTS release to make long-term planning and major undertakings possible within a term. After the term they must seek reconfirmation from the Xubuntu community via a public vote. If consensus is unable to be found, the matter is referred to the Ubuntu Community Council.

The Xubuntu project lead is chosen by a popular vote. Anyone in the Xubuntu Users group is eligible to vote. Project lead nominations are to be made in the month preceding the election by the members of Xubuntu Users. These nominations may be submitted by individuals nominating themselves or someone else. The project lead is to be the person receiving a simple majority vote. The person receiving the second highest vote will be the interim project lead should the project lead be unable to fulfill the entire term.

The voting should be arranged in a way that allows people in any timezone to vote. Ideally, the voting should be possible for 24 consecutive hours. Any voting method needs to fulfill the requirement to only allow members of the Xubuntu users Launchpad group to vote.

To make sure relevant information is available for anyone wanting to vote, the nominees are required to provide a wiki page with their thoughts on at least (but not limited to):
 * A brief history of the nominee in the FOSS world
 * Activities in any relevant teams
 * Thoughts about the Xubuntu development, including the biggest challenges and possibilities
 * Areas of interest as a project lead, including any changes the nominee is wishing to see in the team

In addition to the team leads, the project lead has a casting vote on any issue. If the vote is tied, the casting vote of the project lead will take precedence.

Ultimately, the project lead has a veto ability. The primary purpose of the veto vote is to prevent exhausting and interminable quarrels in the community. This authority is not to be used unless consesus has not been reached even after thorough, but not overly lenghty discussions. It's also encouraged to be in touch with other Ubuntu teams and ask for advice where applicable.

== Xubuntu Development ==
Line 250: Line 147:
For Xubuntu to be successful, its members and community must have the right tools to enable useful and helpful communication:
   
 * The xubuntu-devel mailing list is where discussions regarding general Xubuntu development takes place.
 * The xubuntu-users mailing list is where discussion occurs and support given by fellow Xubuntu users.
 * The #xubuntu IRC channel is where real time discussion and support is given by fellow Xubuntu users.
 * The #xubuntu-devel IRC Channel is where real time discussion, coordination, and collaboration occurs between Xubuntu contributors.
 * The #xubuntu-offtopic IRC Channel is where real time, offtopic chit-chat between members of the Xubuntu community occurs.
 * Launchpad is used for the tracking and management of specifications and bugs for/in Xubuntu.
 * The Xubuntu pages on the Ubuntu wiki are used to share information about teams, getting involved, procedures, meetings, and other useful information for contributors.
 * The Xubuntu pages on the Ubuntu community help wiki are used to share community generated and supported Xubuntu documentation.
 * The Xubuntu website will be used to provide general information and serve important news releases about Xubuntu - linking to wiki and other resources as appropriate.

== Xubuntu Development ==

This section describes topics related specifically to Xubuntu development.

=== Coordination ===
   
Day to day coordination of Xubuntu development is done by the senior members of the Xubuntu development team with their direction coming from the Xubuntu council, previous meetings, specifications, and other written documentation.
   
Every two weeks, an Xubuntu developer meeting will be held where each attending developer will go over what they worked on over the last two weeks and problems they faced. This will be followed by discussion of pending agenda items. The meeting will be concluded with a general priority being set for the next two weeks by the Xubuntu development lead and each attending developer will describe their plans and intentions taking into account the current priorities.
   
For bigger decisions such as release priorities, the Xubuntu council members will be responsible for making sure that developers and contributors are aware of said decisions and current project priorities. The Xubuntu council will meet monthly to discuss and review process and review pending agenda items. However, this monthly meeting should not be considered blocking - appropriate discussion via the mailing list can be just as effective and allow for quicker response times.
   
=== Release Cycle ===

==== Designing a release ====
       
At the start of each release, it is important for Xubuntu to have a proper release plan and release goals. The design phase starts at the very beginning of the release cycle and ends shortly after the Ubuntu Developer Summit.
       
Each release, the Xubuntu council and Xubuntu developers will decide on a number of specifications that are of interest and which are obtainable within Xubuntu's available resources and manpower. Specifications are documents that describe a priority, process, or feature including details such as rationale, design, implementation, dependencies, use cases, and more. A specification is not required to be created for regular release processes such as merges and syncs of Xubuntu packages. However,the topics of the specifications will be influenced by the general priorities and interests for the release set by Xubuntu council which will be inspired by Mark Shuttleworth's direction for Ubuntu.
       
By the end of the design phase, all specifications should be close to being ready for approval. Once a specification has been approved (which will generally be done by a member of the Xubuntu council or appropriate designated delegate) then the developer responsible for developing it will begin implementation which leads us into the next phase.
   
==== Developing a release ====
       
Each release cycle, there are number of tasks that will occur every time:
       
 * Each release, Xubuntu packages will be synced or merged with Debian as appropriate.
 * Each release, bugs reported by users will be reviewed, fixed, and/or passed up stream.
 * Each release, we will attempt to reduce our delta by pushing appropriate patches upstream.
 * Each release, we will profile Xubuntu to ensure we are meeting our hardware targets.
 * Each release, we will evaluate the seeds to ensure we are shipping the optimal software.
 * Each release, we will work on improving and updating the Xubuntu documentation.
 * Each release, we will test Xubuntu to ensure stability and uncover bugs.
           
Otherwise, we'll be working on developing the specifications we have targeted.
       
==== Testing a release ====
       
Throughout the release cycle and even more so nearing the end, we will test Xubuntu to ensure that Xubuntu is a quality product that we are proud of and that the changes we have been making work correctly, work as expected, and do not cause regressions. The Xubuntu testing team will help ensure that when milestone ISOs are released that all tests are completed and results reported to the tracker. Xubuntu testers will also test the daily builds, upgrading through supported and unsupported release paths, and running Xubuntu to help detect problems. Xubuntu testers play an instrumental role in producing a quality product for end-users and their time is greatly valued.
        
The daily images between milestone releases (usually called "nightly releases" or "nightly images") will typically only be tested by developers, testers and enthusiasts. The milestones ("Herds" in the case of the Fawn) are more widely announced and will be tested by a larger audience. As such, the two types of releases serve different purposes, and need to be tested differently. The most important goal with testing the nightly images is simply to find as many bugs as possible and report them with enough detail that they can be fixed. Finding the bugs ahead of the milestone crunch (in random dailies) is helpful as it gives developers more time to fix them. Timely feedback regarding nightly-image test results is important. Furthermore, in doing specific testing of the CD/DVD images it is important to focus on those aspects that are typically not used by those who simply run the latest unstable version on their system through daily updates (Such testing is of course also extremely valuable). Key points in image testing include image integrity (md5sums), Live CD and installer functionality.
   
==== Deploying a release ====
       
When it comes time to deploying a release (both milestones and final), first several conditions must be met:
       
For Xubuntu to be successful, its members and community must have the right tools to enable useful and helpful communication and ultimately, to help the community grow. These communication tools include the following "core" tools:
 * Mailing lists
  * xubuntu-users for community support and user discussions
  * xubuntu-devel for development discussion and coordination
 * IRC channels
  * #xubuntu for community support
  * #xubuntu-devel for development discussion and coordination
  * #xubuntu-offtopic for general discussion with a more relaxed mood
 * Launchpad, for organizing teams as well as tracking and managing specifications and bugs
 * The Xubuntu pages in the Ubuntu wiki for development coordination
 * The Xubuntu website for news, development articles and general information about Xubuntu

The Xubuntu team members are highly encouraged to spread the word about Xubuntu anywhere they see fit, including but not limited to their personal blogs, social media and conferences.

In addition to communicating with each other and the Xubuntu community, the Xubuntu team should communicate continuosly with other Ubuntu contributors, upstream and other projects related to Xubuntu. The team members should take part in the development discussion outside Xubuntu as well to create and maintain healthy relationships with other projects and their developers.

=== Development coordination ===

The direction of the development of the project is coordinated by:
 * The strategy document
 * Release-specific blueprints and specifications specified in the Roadmap
 * The Xubuntu community meetings

The Xubuntu community meeting will be held as often as the Xubuntu team needs fit, but it's encouraged to have at least one meeting per month. The community meetings are held in #xubuntu-devel and usually chaired by the project lead. When the project lead is not available, any other team lead can chair the meeting as well. If no team leads are available, the rest of the attendees are encouraged to have an informal meeting and inform the Xubuntu team of any discussion had.

The community meeting will more or less conform the following structure:
 * Any business that is carried on from the previous meeting
 * Team updates, including updating the team reports and release notes
 * Announcements by the project lead or other team leads
 * Any new business added in the agenda of the meeting

During any of the sections, the chair can assign action items to individuals or teams, with their permission. These action items are usually things that can't or aren't tracked in Launchpad (blueprint work items and bugs) and will be implemented or acted upon before the next meeting.

=== Dispute Resolution ===
   
The Code Of Conduct (CoC) is one of the most fundamental documents in the Ubuntu community, including Xubuntu, and it functions as the base for a working community. Everybody and every communicating medium in the Xubuntu community is CoC-compliant at all times.

Anybody behaving contrary to the standards of the CoC should be notified with consideration and adequate reasoning. If this is not effective and the issue persists, the next step would be to ask for assistance from a third-party member in the community.

When appropriate, the dispute should be escalated to the agenda of the next Xubuntu community meeting. At the meeting, attending parties will be given the opportunity to explain and justify their issue and/or stance, after which the Xubuntu team and project lead will assist in mediating the issue or, if not possible, provide a resolution for the involved parties.

The Ubuntu Community Council can be asked to act as mediators/advisors where their expertise would be useful when the Xubuntu team and project lead requires assistance. In development disagreements, the Ubuntu Technical Board may be called upon to help, particularly if the disagreement relates to broader project policy. The Xubuntu team and project lead are free to hear any other teams in the Ubuntu community if it helps resolving the issue.

When disputes on developement issues occur, developers are strongly encouraged to refraim from making the disputed changes to avoid sabotaging the dispute resolution process. For example, if there is an issue over package selection, then developers will not go ahead and make the related changes to the seeds until the dispute is resolved.

== Release Cycle ==

=== Designing a release ===
       
At the start of each release, the Xubuntu contributors will create a Roadmap for the release. Building and following the Roadmap has four phases:
 * Brainstorming and finding assignees
 * Approving blueprints
 * Finalizing blueprints and specifications
 * (Further discussion and) implementing

In the brainstorming phase, the contributors determine what they would like to work on during the release cycle. Adding items to the list is open for everybody in the Xubuntu community. After the brainstorming, this list will be closed. Settling on the goals in advance will make planning, focusing and estimating the likelihood for the features to be implemented easier.

In the approving phase, the Xubuntu team will approve or reject the proposed blueprints by a simple majority vote. Any items with no assignee will be automatically rejected. Items should also have a rationale. Having an assignee and a rationale will not guarantee that the blueprint is approved. Other criteria include, but are not limited to: likelihood of getting the feature implemented, maintenance weight in the future, possible stability issues, influence on other blueprints, et cetera.

The Xubuntu team can decide to postpone any items instead of approving or rejecting. In this case the items will be eventually moved to the Roadmap for the next release, unless they get an assignee and the Xubuntu team approves them for the release. Any items added to the list after the brainstorming phase and those that were postponed at the approving phase will need to be approved by the Xubuntu project lead along with the concerning team leads.

After blueprints are approved, they should be finalized and detailed specifications should be written. These specifications will inform the team about which changes are planned and will help guide the implementation. Any changes to the specifications after the finalizing phase need to be approved either by the concerning team lead or the project lead. At this phase, the Xubuntu team will set deadlines for the blueprints according to appropriate freezes specified in the Ubuntu release schedule. A deadline should usually be at least two or three weeks before the concerning freeze.

After the finalizing phase, assignees should implement the specified features before the deadlines specified by the Xubuntu team in the finalizing phase.
 
=== Developing a release ===
       
In addition to implementing the features and/or improvements set in the Roadmap, there are a number of tasks which will occur during each release cycle.
 * Xubuntu packages will be synced or merged with Debian as appropriate
 * Bugs reported by users will be reviewed, fixed, and/or passed upstream
 * Attempt to reduce our delta by pushing appropriate patches upstream
 * Review the Xubuntu system requirements
 * Evaluate the seeds to ensure we are shipping the optimal software
 * Work on improving and updating the Xubuntu documentation
 * Test Xubuntu to ensure stability and uncover bugs

=== Testing a release ===

Throughout the release cycle and even more so nearing the end, we will test Xubuntu to ensure that Xubuntu is a quality product that we are proud of. This includes testing that changes we have been making meet the release goals, work as expected, and do not cause regressions. Any tests run will be reported to the QA tracker.

The Xubuntu testing team will help ensure that when milestone ISOs are released, all tests are completed and results reported to the tracker. Xubuntu testers will also test the daily builds, upgrading through supported release paths and running Xubuntu to help detect problems. The most important goals for testing the daily images are simply to find as many bugs as possible and report them with sufficient detail to the tracker along with the ISO testing result.

When needed, the Xubuntu team will run application tests too. One example of this would be a new default application to be included in the next Xubuntu release.

=== Deploying a release ===
       
When it comes time to deploy a release (both milestones and final) several conditions must be met:
Line 311: Line 237:
 * Xubuntu must be of sufficient quality that it would not damage Xubuntu's, Ubuntu's, or any of the other derivative's reputation/image.
       
When a release is made, the following steps/actions must be taken:
       
 * Xubuntu must be of sufficient quality that it would not damage Xubuntu's, Ubuntu's, or any of the other derivatives' reputations/images.
       
When a release is made, the following steps/actions must be taken (note that many of the items need to be prepared before release):
Line 316: Line 241:
 * Release announcement must be written and published post release;  * Release announcement must be written before and published after release;
Line 318: Line 243:
 * wiki updated; and
 * IRC channel topics updated.
           
When a final release is made then the tour, screenshots, and download page must also be updated on the Xubuntu website.
       
Although not essential, it would be very beneficial for contributors to blog about the release. This can be especially beneficial for milestone releases in attracting testers and reviewers to help find bugs and build hype respectively.
       
==== Maintaining a release ====
       
After a release is made, bugs and problems are bound to reported. During the period between the release and the start of the next release cycle is the optimal time to perform Stable Release Updates as long as developers do not forget to fix the issue in the next release as well once the repository opens. Once the next release cycle has started, primary focus will be on the next release and the severity/importance of the SRU candidates will be more important when decided if an SRU will be performed or not.
       
Although Xubuntu can not provide commercial support or commercial guarantees, Xubuntu will make every effort to match the Canonical support period and provide security updates for Xubuntu packages.

=== Seeds & Composition ===
   
Seeds and package composition of Xubuntu has been a touchy issue in the past. To help avoid issues and disputes, this section will describe core components of Xubuntu which will always be shipped with Xubuntu, packages/types of packages that are not appropriate for Xubuntu, and information on how to decide which packages best fit Xubuntu.

Most importantly, we define the bottom line.

'''The Bottom Line:''' Changes will not be rationalized using the below guidelines alone but instead will rely on well thought out arguments, useful measurements, and meaningful test cases in conjunction with evidence of affinity with the Xubuntu mission statement and three tier focus.
   
==== Core components of Xubuntu ====
       
Core components of Xubuntu are packages that are considered to be so fundamental that if removed/replaced then the product would no longer be Xubuntu unless Xfce4 upstream deprecates and/or replaces them or very compelling reasons required for them to be substituted. For example, there has been upstream discussion about removing the Xfce4 session manager from the stack. If this were to occur, it would be acceptable (and probably desirable) for Xubuntu to no longer ship that package.
       
 * release-specific pages on the website updated;
 * wiki updated;
 * IRC channel topics updated; and
 * official social media accounts updated.
       
=== Maintaining a release ===
       
After a release is made, bugs and problems are bound to reported. The period between the release and the start of the next release cycle is the optimal time to perform Stable Release Updates (SRU) as long as developers do not forget to fix the issue in the next release as well, once the repository opens. Once the next release cycle has started, primary focus will be on the next release and the severity/importance of the SRU candidates will be more important when it comes to deciding whether an SRU will be performed or not.
       
Although Xubuntu can not provide commercial support or commercial guarantees, Xubuntu will make every effort to conform with the acknowledged support period and provide security updates for Xubuntu packages.

== Seeds & Composition ==
   
This section will describe core components of Xubuntu which will always be shipped with Xubuntu, packages/types of packages that are not appropriate for Xubuntu, and information on how to decide which packages best fit Xubuntu.

The bottom line is that changes will not be rationalized using the below guidelines alone but instead will rely on well thought out arguments, useful measurements, and meaningful test cases in conjunction with evidence of affinity with the Xubuntu mission statement.
   
=== Core components ===
       
Core components of Xubuntu are packages that are considered to be so fundamental that if removed/replaced then the product would no longer be Xubuntu unless Xfce4 upstream deprecates and/or replaces them or very compelling reasons required for them to be substituted. These packages are:
Line 349: Line 269:
 * xfce4-mcs-manager (Xfce4 settings manager)
       

Other applications which contribute to the Xubuntu identity as well but are not considered "critical" (and hence may be removed, replaced, etc. with solid/reasonable and concrete discussion and rationale) are:
         * orage (Simple Calendar)

Other applications which contribute to the Xubuntu identity as well but are not considered "critical" are:
Line 355: Line 272:
 * mousepad (Simple text editor)  * leafpad (Simple text editor)
Line 358: Line 275:
The above packages also pull in other packages (such as libraries like libxfcegui4, libxfce4util, libxfce4mcs and exo) but they are not listed here as it is assumed to be understood that their inclusion in this category is implied.
       
==== Incongruous Packages & Precedents ====
       
Packages that work against our goals and our mission statement obviously aren't appropriate when considering them for inclusion in Xubuntu. However, what isn't always obvious or easy is making that determination due to deliberate flexibility in interpretation and variable perceptions. To assist in that process, the following list of guidelines can be used to help identify areas of concern in candidate packages.
=== Unsuitable Packages ===
Line 364: Line 277:
 * Packages that do not use GTK toolkit (ie. QT/KDE applications) should not be included.
 * Packages that use interpreted languages are generally slower and require more memory then ones that are compiled.
 * C++ programs tend to be heavier than C programs.
 * Packages that will pull heavy/costly libs (ex. certain gnome libs) are discouraged. This is especially true for packages that will run and/or start frequently.
 * If possible, we should limit the number of gnome libs we pull in. However, we should not remove/change applications for alternatives to reduce the number of applications that use a gnome lib unless we can remove the lib all together with a net positive benefit. The reasoning being that use of gtk equivalents (where available) is preferred.
 * If an application shares its functionality with other applications through libraries whereas the alternative choice does not then the former is preferred as it will generally correlate to better security (better reviews & more testing), localization, and mean the cost of those libraries is divided among the benefit provided by those applications compared to application suffering from NIH.
       
==== Package Selection Matrix ====
       
To meet our performance objectives, we must be very careful about the applications we seed/include with Xubuntu; we have to think objectively and may not be biased. Applications that make it into Xubuntu must be clearly rationalized and are in the spirit of Xubuntu. The Xubuntu council and Xubuntu developers will determine if a package is right for Xubuntu by measuring and comparing elements such as usability, usefulness, memory consumption, integration, maintainability, file size, stability, translations, maturity, upstream, performance, and user demand/interest. We will call this measurement "weight" and where a package/software is more heavy, the more undesirable it is in Xubuntu. Furthermore, when measuring if a package is right for Xubuntu, your decision will not be made based on your analysis of package alone but instead the collective target package and its dependencies.
       
First, to fit well in Xubuntu the software must be usable. It must have a well designed interface that is easy and uncomplicated; ultimately the goal is to enable the users to accomplish their desired task quickly and effectively.
       
There is no point of including an application in Xubuntu if it is not useful, and useful to the majority of users who will be using Xubuntu. Since users are free to install/remove/etc. software after install, we will want to include the most relevant software that will give the impression that Xubuntu is a useful operating system that allows users to get what they need done done.
       
When an application is running, it takes up memory. If an application makes use of a library, then the library is also loaded into memory which means the more libraries an application uses then the more memory it is using. Luckily, memory management is smart in that it does not store data twice. If two applications us the same lib, the lib is still only loaded into memory once (although there will still be a small portion that is unique to each application, ex. 4kb). This means that when deciding to include an application, we must not only consider its memory consumption and weight but the weight of all of its dependencies. Software that is slow and CPU intensive is probably not a good fit for Xubuntu either.
       
Software that is well integrated and provides a polished desktop experience is a huge benefit to Xubuntu and its users. Software that comes well integrated from upstream is desirable as it reduces the burden placed on Xubuntu developers to provide that integration and the associated maintainability costs.
       
Software that causes developers extra work and is more difficult to maintain (this includes software that is immature, buggy, and/or lacking a solid upstream) is a serious consideration and one that must not be taken lightly. Due to manpower constraints, we should aim to reduce reoccurring workload and eliminate maintenance burdens.
       
Although not as important as some of the other elements, the amount of file space required to include an application must be considered when deciding if an application should be included. Xubuntu ships on a standard CD-ROM and space is always tight since we try to ship as many language packages as possible so that users with slow or nonexistent internet connections can use Xubuntu in their native tongue.
       
A requirement for any software to make it into Xubuntu is that the software is tested to ensure that it has an appropriate level of stability and doesn't contain an unusually large number of bugs (which will result in more work for developers who will have to do SRUs). In cases where the software appears stable, you'll want to consider the software's "maturity". How long has it been around? How long has it been being developed? How mature are the upstream processes? How mature does the software appear overall? Xubuntu is not a testing ground for new, immature software and certainly not appropriate for software that is new, immature, *and* buggy. Furthermore, the author (or who the upstream is) of the software will only have minimal impact - an author we've worked with and know to be of high caliber helps lend credibility to software (and the reverse for authors who we maintain poor relationships with) but can only be used as supporting rationale. For example, software that is being hosted on the Xfce4 server or is a member of the xfce4 goodies project is not given unfair appreciation; The merit and measured weight is more important then whether it's an official Xfce4 (side) project or not (excluding components listed in the prior core component section).

The name of the software/package will have absolutely no bearing on inclusion. Just because the developer brands the software in way to suggest affiliation or integration with Xfce4 does not mean the software is appropriate for Xubuntu or the optimal choice.
               
In the future, a quantitative system will be developed to assist us in the package selection process.

The above points should not be considered an exhaustive list of elements to weigh; always use common sense.
       
=== Upstream Relations ===
   
Maintaining healthy relationships with projects that are upstream of Xubuntu is an important task and delicate one at that. By maintaining healthy personal and professional relationships with upstream projects and their developers/maintainers, we allow for more fluid communication and collaboration which results in a better product for everyone.
   
To build this relationship, developers and bug traigers alike will want to start by subscribing to upstream discussion and bug mailing lists. This will help keep you informed about bugs that get reported and fixed, allowing us to respond quickly and efficiently. Specifically with Debian, working with and keeping the delta minimal will allow us to take full advantage (ie. reducing duplication) of their efforts. In reverse, it would not necessarily be expected that Debian or Xfce4 developers would be subscribed to our discussion and bug mailing lists so we need to actively and consciously push fixes that are applicable and useful to our upstream counterparts. This gives us the added benefit of developing more one on one relations of trust and respect with the upstream developers furthering the objective of making collaboration are smooth and easy as possible.
   
Once we begin to work more and more with upstream, we'll likely run into situations where our project disagrees with a decision that the upstream project has made. In these cases, we need to make sure that we always remain polite and objective in our evaluations. Although we will always make decisions that are best for Xubuntu, sometimes compromising with upstream is required. These situations will be handled case by case with a strong desire to always maintain the best of relations with upstream.

Xubuntu aims to be known as a constructive contributor to the open source software ecosystem.
   
=== Dispute Resolution: Development Issues ===
   
When disputes occur in the development team (or with upstream), always remember to remain polite and civil to your fellow developers. The Xubuntu developer meetings are a great time to hash out problems with the assistance of the whole team. When developers are unable to reach consensus then normal escalation to the Xubuntu council will occur where the Xubuntu council will decide via vote.
   
When disputes do occur, developers are strongly recommended that they withhold from making the changes under dispute to avoid sabotaging the dispute resolution process. For example, if there is an issue over package selection then developers will not go ahead and make the related changes to the seeds until the dispute is resolved.
Packages that work against our goals and our mission statement aren't appropriate when being considered for inclusion in Xubuntu. The following list of guidelines can be used to help identify areas of concern in candidate packages:
 * Packages that do not use GTK toolkit (i.e. QT/KDE applications)
 * Packages that use interpreted languages (generally slower and require more memory)
 * C++ programs (tend to be heavier than C programs)
 * Packages that will pull heavy/costly libs (i.e. "half of GNOME"), especially if they will run and/or start frequently

=== Package Selection ===
       
To meet our performance objectives and other set goals, we must be careful about the applications we seed with Xubuntu; thinking objectively is the foundation to proper application selection. Applications that make it into Xubuntu must be rationalized and be in the spirit of Xubuntu. The Xubuntu Project lead with the help of the Xubuntu technical lead will determine if a package is right for Xubuntu with the help of Xubuntu developers.

The following guidelines will help the developers to determine if a package is a good fit for Xubuntu:
 * Usability. Is the application easy to use? Does it have a well designed UI? How easy is it to accomplish the task that the application is seeded for?
 * Usefulness. Is the package useful for Xubuntu users?
 * Resource consumption. In its entirety, along with all libraries, how much memory does the application use? Does it use libraries that are already in use?
 * Integration and workload. How much work does it take to integrate the package to the system? Is the package well maintained upstream? Is the package used by other Ubuntu derivatives?
 * File size. Does the package take so much space that the team has to consider dropping something from the ISO?
 * Stability and maturity. Is the application tested well? How many bugs are there in the application? How mature the application is? How likely is it to get bugfixes to the application through normal processes and/or personal relations?
 * Localization. Does the application have translations in the most commonly used languages?

Furthermore, when measuring if a package is right for Xubuntu, your decision should not be based on your analysis of package alone but should take into account the entire target package along with its dependencies.

The name of the software/package will have absolutely no bearing on its inclusion. Software being or suggested as being affiliated or integrated with Xfce is not the only argument for justifying appropriateness for Xubuntu.

The above points should not be considered an exhaustive list of elements to weigh; always use common sense.

Introduction

About this document

This document will describe the strategy, vision and direction of the Xubuntu project as well as act as a guide and a reference for the Xubuntu Team.

This revised version has been written by Pasi Lallinaho with the help of Elizabeth Krumbach and Simon Steinbeiß along with numerous people in the community. This version is based on the existing Xubuntu Strategy Document by Cody Somerville et al.

We wish thank to Cody Somerville, Jono Bacon, Eero Tamminen, Nico Veenkamp and Lionel Le Folgoc for their contributions to this document. Some content, ideas, and inspiration were derived from existing Ubuntu documentation.

Mission Statement

Xubuntu is a community-developed, Ubuntu-based operating system that combines elegance and ease of use. Xubuntu provides a light, stable and configurable desktop environment with conservative workflows. Xubuntu delivers a polished and unified product ready for end-users.

In addition to the technical aspects, the Xubuntu team focuses on contributor and user communities.

The Target

The target audience for Xubuntu consists of users who are interested in having an elegant, easy to use, polished and unified operating system. Xubuntu is a good option for those who want a stable, configurable and/or relatively light desktop environment too. Finally, Xubuntu is an appealing choice for users who prefer conservative workflows over the newest innovations.

Xubuntu does not target users with specific skill sets or aptitudes. We want Xubuntu to be a viable option for users who are new to Linux or the Ubuntu platform, but also be appealing to more experienced users. Xubuntu does not specifically focus on new users or users migrating from Windows, but according to this ease of use, it is a good alternative for those users as well.

Xubuntu does not explicitly target users with low, modest, or high powered machines but instead targets the entire spectrum. Xubuntu's extra responsiveness and speed, among other positive traits, can be appreciated by all users, regardless of their hardware.

While Xubuntu uses Xfce, it is not specifically targeted to Xfce enthusiasts or projects and software being hosted by the Xfce project or associating (officially or unofficially) with Xfce are not guaranteed for inclusion in Xubuntu.

The areas of focus

This part of the strategy document provides a transparent framework and a set of priorities for the whole Xubuntu development and its tasks, including but not limited to decision making processes, package selection and technical dispute resolution.

The areas of focus are presented in an abstract and simple form but are also concrete enough to be actionable. As the foundation of the Xubuntu vision, the specifications in the strategy document should not be confused with release-specific goals and priorities, but instead recognized as the principles which the release-specific goals are based on.

Focus 1: Usability

Usability is one of the most important parts of an operating system which is used on a daily basis. This is why Xubuntu should be easy to use and have an appearance that doesn't get in the way. The appearance should be an all-round experience, covering all user interfaces from booting to shutting down.

Xubuntu should be localized to allow users to work in their preferred language. Another important aspect of usability is configurability. We believe Xfce gives users the possibility to configure their system in a meaningful way; other applications should live up to this expectation at least moderately well.

While accessibility is not one of the main priorities of Xubuntu, it should be taken into serious consideration as long as it doesn't require unreasonable efforts to integrate, implement or maintain. At least common accessibility tools should be installed in the default Xubuntu installation.

Focus 2: Performance

The Xubuntu team should strive to make Xubuntu lightweight. This means every Xubuntu release should work moderately well on machines that date to a few years before the release date. This ultimately means that newer Xubuntu releases may not able to support older computers. However, it assures that the Xubuntu team is able to work on other improvements and provide a release that is able to fulfill the expectations for a modern operating system.

Users wanting the most lightweight system possible should be pointed at the minimal CD, more lightweight derivatives (such as Lubuntu) or other options.

At the start of the release cycle, the minimum system requirements should be re-evaluated to determine if they continue to be realistic.

Focus 3: Ready to use product

It is important for us to provide a polished and unified product that is ready for end-users. It is also a prerequisite to enabling Xubuntu as a useful, usable and effective desktop. Without the mentioned integration, the Xubuntu desktop will appear rough and unpolished which is unappealing to end-users.

The integration is accomplished also by selecting applications and libraries that work well with each other as well as by applying patches to assure a more bug-free system.

See the "Package Selection" section for guidelines on how to determine if an application fits in the Xubuntu stack.

Focus 4: Community

The Xubuntu community is an important force in creating Xubuntu and making it as perfect as it can be. It's essential that regular coordination between contributors work well. The infrastructure to allow good communication between the contributors as well as users is described more closely in "Xubuntu Community" and "Xubuntu Development".

Where possible and appropriate, the Xubuntu team should work together with other communities, including other Ubuntu teams and upstream. If cooperation at a given time is not possible but would be beneficial for both parties, the Xubuntu team should try to allocate some resources to the cooperation at a later time.

Xubuntu Community

The Xubuntu community is comprised of two main groups, Xubuntu users and Xubuntu team. The Xubuntu team has four subteams; Xubuntu Artwork team, Xubuntu Developers, Xubuntu Documenters and Xubuntu Website team. This section covers the governance and team structure of the aforementioned teams, along with the definition of Xubuntu Project Lead.

Xubuntu Users

Xubuntu users is a collection of users who use or are interested in Xubuntu. The purpose of this group is to identify and organize Xubuntu users.

The users in this group will be able to vote in the Xubuntu community meetings. The members in the Xubuntu users group are encouraged to give user support on IRC and the xubuntu-users mailing list as well as spread the word about Xubuntu anywhere they see fit, including but not limited to blogs, social media and conferences.

The group is registered in Launchpad as xubuntu-users. It is open for anybody to join. The Xubuntu team is a member of this group.

Xubuntu Team

The Xubuntu team is a group of individuals who are primarily responsible for the Xubuntu development.

This team is responsible directly or via its subteams for:

  • Coordinating contribution efforts
  • Managing the community
  • User support
  • Marketing
  • Coordinating bug triaging
  • Managing Xubuntu products
  • Working with upstream on bugs

Members of this group can be appointed as team leads by the Xubuntu project lead. Any member appointed as a team lead by the project lead should have a second casting vote in addition to the Xubuntu project lead, if the said issue clearly concerns the team lead's team/area of expertise. For example, the artwork team lead will have a casting vote in artwork-related issues.

The group is registered in Launchpad as xubuntu-team. The team is moderated. The individuals wanting to join this team are required to meet the criteria described below prior to applying or they will be automatically declined. The Xubuntu project lead is responsible for moderating this team.

Becoming and staying a member

To be accepted to this team, applicants participants must demonstrate their motivation and ability to contribute to Xubuntu. This is to ensure that any Xubuntu team member has a sufficient understanding of the Xubuntu community and its operation. The different steps one must go through will also indicate that the candidate member is able to work within the guidelines, and more important, with other people and communities.

The process to become a Xubuntu team member is explained below. Please note that approving to subteams and the Xubuntu team has no specific schedule and happens only when the concerning people think it is appropriate to approve. For example, to join the Xubuntu Developers team usually takes more contributions to join than the rest of the subteams.

  • Commit meaningful contributions to one of the subteams; you will be approved to the subteam for "probation" by a subteam administrator
  • Demonstrate motivation to contribute perpetually; you will be approved to the Xubuntu team by the Xubuntu project lead

Since the Xubuntu contributor community fluctuates in its size, the subteams are established or discontinued based on the current situation by the Xubuntu project lead whenever it makes sense. If newly established subteams need access or have other technical needs, the Xubuntu project leader will set those up with the help of other concerning parties, including team leads and other Ubuntu members.

To stay a member of this team, the members will have to have desire to continue contributing in the future. Any member with no contributions for more than a complete cycle (6 months) will be deactivated from the team and will have to reapply. A team member can get an exception to this by simply leaving a note that they will be taking a break from contributing. However, if the break is to last longer than a cycle, or the contributor is unsure if they will contribute at all in the future, it would be preferable for the contributor to leave the team and reapply at a later time. Membership in the subteams is not as strict, but people with no contributions for a significantly long time will be deactivated from the subteams too.

Xubuntu Developers

The Xubuntu developers is a team that is responsible for:

  • Packaging, merging, syncing and developing Xubuntu
  • Fixing bugs
  • Mentoring new contributors to development
  • Managing the Xubuntu seeds

The criteria to join this team are:

  • Sustained and positive contribution via packaging to Xubuntu
  • Appropriate skill and trustworthiness to be entrusted with upload privileges to Xubuntu and related packages
  • Willingness to assist in merging, syncing and packaging Xubuntu and related packages

The group is registered in Launchpad as xubuntu-developers. The team is moderated. The individuals wanting to join this team are required to meet the criteria described above prior to applying or they will be declined. The Xubuntu Technical lead (or if one doesn't exist, the Xubuntu project lead) is responsible for moderating this team.

Xubuntu Project Lead (XPL)

The Xubuntu project lead is ultimately responsible for Xubuntu and ensuring that a quality product is able to be released on schedule.

The Xubuntu project lead serves a term of four releases. The term should start with a release just after LTS, and end with an LTS release to make long-term planning and major undertakings possible within a term. After the term they must seek reconfirmation from the Xubuntu community via a public vote. If consensus is unable to be found, the matter is referred to the Ubuntu Community Council.

The Xubuntu project lead is chosen by a popular vote. Anyone in the Xubuntu Users group is eligible to vote. Project lead nominations are to be made in the month preceding the election by the members of Xubuntu Users. These nominations may be submitted by individuals nominating themselves or someone else. The project lead is to be the person receiving a simple majority vote. The person receiving the second highest vote will be the interim project lead should the project lead be unable to fulfill the entire term.

The voting should be arranged in a way that allows people in any timezone to vote. Ideally, the voting should be possible for 24 consecutive hours. Any voting method needs to fulfill the requirement to only allow members of the Xubuntu users Launchpad group to vote.

To make sure relevant information is available for anyone wanting to vote, the nominees are required to provide a wiki page with their thoughts on at least (but not limited to):

  • A brief history of the nominee in the FOSS world
  • Activities in any relevant teams
  • Thoughts about the Xubuntu development, including the biggest challenges and possibilities
  • Areas of interest as a project lead, including any changes the nominee is wishing to see in the team

In addition to the team leads, the project lead has a casting vote on any issue. If the vote is tied, the casting vote of the project lead will take precedence.

Ultimately, the project lead has a veto ability. The primary purpose of the veto vote is to prevent exhausting and interminable quarrels in the community. This authority is not to be used unless consesus has not been reached even after thorough, but not overly lenghty discussions. It's also encouraged to be in touch with other Ubuntu teams and ask for advice where applicable.

Xubuntu Development

Communication

For Xubuntu to be successful, its members and community must have the right tools to enable useful and helpful communication and ultimately, to help the community grow. These communication tools include the following "core" tools:

  • Mailing lists
    • xubuntu-users for community support and user discussions
    • xubuntu-devel for development discussion and coordination
  • IRC channels
    • #xubuntu for community support
    • #xubuntu-devel for development discussion and coordination
    • #xubuntu-offtopic for general discussion with a more relaxed mood
  • Launchpad, for organizing teams as well as tracking and managing specifications and bugs
  • The Xubuntu pages in the Ubuntu wiki for development coordination
  • The Xubuntu website for news, development articles and general information about Xubuntu

The Xubuntu team members are highly encouraged to spread the word about Xubuntu anywhere they see fit, including but not limited to their personal blogs, social media and conferences.

In addition to communicating with each other and the Xubuntu community, the Xubuntu team should communicate continuosly with other Ubuntu contributors, upstream and other projects related to Xubuntu. The team members should take part in the development discussion outside Xubuntu as well to create and maintain healthy relationships with other projects and their developers.

Development coordination

The direction of the development of the project is coordinated by:

  • The strategy document
  • Release-specific blueprints and specifications specified in the Roadmap
  • The Xubuntu community meetings

The Xubuntu community meeting will be held as often as the Xubuntu team needs fit, but it's encouraged to have at least one meeting per month. The community meetings are held in #xubuntu-devel and usually chaired by the project lead. When the project lead is not available, any other team lead can chair the meeting as well. If no team leads are available, the rest of the attendees are encouraged to have an informal meeting and inform the Xubuntu team of any discussion had.

The community meeting will more or less conform the following structure:

  • Any business that is carried on from the previous meeting
  • Team updates, including updating the team reports and release notes
  • Announcements by the project lead or other team leads
  • Any new business added in the agenda of the meeting

During any of the sections, the chair can assign action items to individuals or teams, with their permission. These action items are usually things that can't or aren't tracked in Launchpad (blueprint work items and bugs) and will be implemented or acted upon before the next meeting.

Dispute Resolution

The Code Of Conduct (CoC) is one of the most fundamental documents in the Ubuntu community, including Xubuntu, and it functions as the base for a working community. Everybody and every communicating medium in the Xubuntu community is CoC-compliant at all times.

Anybody behaving contrary to the standards of the CoC should be notified with consideration and adequate reasoning. If this is not effective and the issue persists, the next step would be to ask for assistance from a third-party member in the community.

When appropriate, the dispute should be escalated to the agenda of the next Xubuntu community meeting. At the meeting, attending parties will be given the opportunity to explain and justify their issue and/or stance, after which the Xubuntu team and project lead will assist in mediating the issue or, if not possible, provide a resolution for the involved parties.

The Ubuntu Community Council can be asked to act as mediators/advisors where their expertise would be useful when the Xubuntu team and project lead requires assistance. In development disagreements, the Ubuntu Technical Board may be called upon to help, particularly if the disagreement relates to broader project policy. The Xubuntu team and project lead are free to hear any other teams in the Ubuntu community if it helps resolving the issue.

When disputes on developement issues occur, developers are strongly encouraged to refraim from making the disputed changes to avoid sabotaging the dispute resolution process. For example, if there is an issue over package selection, then developers will not go ahead and make the related changes to the seeds until the dispute is resolved.

Release Cycle

Designing a release

At the start of each release, the Xubuntu contributors will create a Roadmap for the release. Building and following the Roadmap has four phases:

  • Brainstorming and finding assignees
  • Approving blueprints
  • Finalizing blueprints and specifications
  • (Further discussion and) implementing

In the brainstorming phase, the contributors determine what they would like to work on during the release cycle. Adding items to the list is open for everybody in the Xubuntu community. After the brainstorming, this list will be closed. Settling on the goals in advance will make planning, focusing and estimating the likelihood for the features to be implemented easier.

In the approving phase, the Xubuntu team will approve or reject the proposed blueprints by a simple majority vote. Any items with no assignee will be automatically rejected. Items should also have a rationale. Having an assignee and a rationale will not guarantee that the blueprint is approved. Other criteria include, but are not limited to: likelihood of getting the feature implemented, maintenance weight in the future, possible stability issues, influence on other blueprints, et cetera.

The Xubuntu team can decide to postpone any items instead of approving or rejecting. In this case the items will be eventually moved to the Roadmap for the next release, unless they get an assignee and the Xubuntu team approves them for the release. Any items added to the list after the brainstorming phase and those that were postponed at the approving phase will need to be approved by the Xubuntu project lead along with the concerning team leads.

After blueprints are approved, they should be finalized and detailed specifications should be written. These specifications will inform the team about which changes are planned and will help guide the implementation. Any changes to the specifications after the finalizing phase need to be approved either by the concerning team lead or the project lead. At this phase, the Xubuntu team will set deadlines for the blueprints according to appropriate freezes specified in the Ubuntu release schedule. A deadline should usually be at least two or three weeks before the concerning freeze.

After the finalizing phase, assignees should implement the specified features before the deadlines specified by the Xubuntu team in the finalizing phase.

Developing a release

In addition to implementing the features and/or improvements set in the Roadmap, there are a number of tasks which will occur during each release cycle.

  • Xubuntu packages will be synced or merged with Debian as appropriate
  • Bugs reported by users will be reviewed, fixed, and/or passed upstream
  • Attempt to reduce our delta by pushing appropriate patches upstream
  • Review the Xubuntu system requirements
  • Evaluate the seeds to ensure we are shipping the optimal software
  • Work on improving and updating the Xubuntu documentation
  • Test Xubuntu to ensure stability and uncover bugs

Testing a release

Throughout the release cycle and even more so nearing the end, we will test Xubuntu to ensure that Xubuntu is a quality product that we are proud of. This includes testing that changes we have been making meet the release goals, work as expected, and do not cause regressions. Any tests run will be reported to the QA tracker.

The Xubuntu testing team will help ensure that when milestone ISOs are released, all tests are completed and results reported to the tracker. Xubuntu testers will also test the daily builds, upgrading through supported release paths and running Xubuntu to help detect problems. The most important goals for testing the daily images are simply to find as many bugs as possible and report them with sufficient detail to the tracker along with the ISO testing result.

When needed, the Xubuntu team will run application tests too. One example of this would be a new default application to be included in the next Xubuntu release.

Deploying a release

When it comes time to deploy a release (both milestones and final) several conditions must be met:

  • Appropriate testing has been done on the image;
  • There are no known bugs which cause data loss or damage to hardware;
  • The image must not be oversized; and
  • Xubuntu must be of sufficient quality that it would not damage Xubuntu's, Ubuntu's, or any of the other derivatives' reputations/images.

When a release is made, the following steps/actions must be taken (note that many of the items need to be prepared before release):

  • Release notes must be prepared and made available;
  • Release announcement must be written before and published after release;
  • website news item added;
  • release-specific pages on the website updated;
  • wiki updated;
  • IRC channel topics updated; and
  • official social media accounts updated.

Maintaining a release

After a release is made, bugs and problems are bound to reported. The period between the release and the start of the next release cycle is the optimal time to perform Stable Release Updates (SRU) as long as developers do not forget to fix the issue in the next release as well, once the repository opens. Once the next release cycle has started, primary focus will be on the next release and the severity/importance of the SRU candidates will be more important when it comes to deciding whether an SRU will be performed or not.

Although Xubuntu can not provide commercial support or commercial guarantees, Xubuntu will make every effort to conform with the acknowledged support period and provide security updates for Xubuntu packages.

Seeds & Composition

This section will describe core components of Xubuntu which will always be shipped with Xubuntu, packages/types of packages that are not appropriate for Xubuntu, and information on how to decide which packages best fit Xubuntu.

The bottom line is that changes will not be rationalized using the below guidelines alone but instead will rely on well thought out arguments, useful measurements, and meaningful test cases in conjunction with evidence of affinity with the Xubuntu mission statement.

Core components

Core components of Xubuntu are packages that are considered to be so fundamental that if removed/replaced then the product would no longer be Xubuntu unless Xfce4 upstream deprecates and/or replaces them or very compelling reasons required for them to be substituted. These packages are:

  • xfce4-session (Xfce4 Session Manager)
  • xfwm4 (Xfce4 Window Manager)
  • xfdesktop4 (Xfce4 desktop)
  • xfce4-panel (Xfce4 panel)
  • thunar (Xfce4 file manager)
  • xfce4-utils (Xfce4 utilities)

Other applications which contribute to the Xubuntu identity as well but are not considered "critical" are:

  • xfce4-terminal (Xfce4 terminal emulator)
  • leafpad (Simple text editor)
  • xfce4-appfinder (Xfce4 application finder)

Unsuitable Packages

Packages that work against our goals and our mission statement aren't appropriate when being considered for inclusion in Xubuntu. The following list of guidelines can be used to help identify areas of concern in candidate packages:

  • Packages that do not use GTK toolkit (i.e. QT/KDE applications)
  • Packages that use interpreted languages (generally slower and require more memory)
  • C++ programs (tend to be heavier than C programs)
  • Packages that will pull heavy/costly libs (i.e. "half of GNOME"), especially if they will run and/or start frequently

Package Selection

To meet our performance objectives and other set goals, we must be careful about the applications we seed with Xubuntu; thinking objectively is the foundation to proper application selection. Applications that make it into Xubuntu must be rationalized and be in the spirit of Xubuntu. The Xubuntu Project lead with the help of the Xubuntu technical lead will determine if a package is right for Xubuntu with the help of Xubuntu developers.

The following guidelines will help the developers to determine if a package is a good fit for Xubuntu:

  • Usability. Is the application easy to use? Does it have a well designed UI? How easy is it to accomplish the task that the application is seeded for?
  • Usefulness. Is the package useful for Xubuntu users?
  • Resource consumption. In its entirety, along with all libraries, how much memory does the application use? Does it use libraries that are already in use?
  • Integration and workload. How much work does it take to integrate the package to the system? Is the package well maintained upstream? Is the package used by other Ubuntu derivatives?
  • File size. Does the package take so much space that the team has to consider dropping something from the ISO?
  • Stability and maturity. Is the application tested well? How many bugs are there in the application? How mature the application is? How likely is it to get bugfixes to the application through normal processes and/or personal relations?
  • Localization. Does the application have translations in the most commonly used languages?

Furthermore, when measuring if a package is right for Xubuntu, your decision should not be based on your analysis of package alone but should take into account the entire target package along with its dependencies.

The name of the software/package will have absolutely no bearing on its inclusion. Software being or suggested as being affiliated or integrated with Xfce is not the only argument for justifying appropriateness for Xubuntu.

The above points should not be considered an exhaustive list of elements to weigh; always use common sense.

Xubuntu/StrategyDocument (last edited 2016-02-16 17:58:45 by xdsl-83-150-81-40)