From Fedora Project Wiki
m (→‎Planning: fix list formatting)
(→‎Planning: Split "Development Method" off from "Planning", elaborate more, add links)
Line 16: Line 16:
Formal meetings will be held by the Modularity Working Group, once established.  See the [[Modularity_Working_Group|Modularity Working Group page]] for more information.
Formal meetings will be held by the Modularity Working Group, once established.  See the [[Modularity_Working_Group|Modularity Working Group page]] for more information.


We will use agile development for Modularization, using a Fedora Taiga instance [http://taiga.fedorainfracloud.org/project/langdon-modularity/] to manage the project. If you're not familiar with agile methodology, here are two videos to provide you an outline:
==Development Method==
 
We will use [https://en.wikipedia.org/wiki/Agile_software_development agile software development] methods for Modularization, more specifically: a hybrid of [https://en.wikipedia.org/wiki/Scrum_(software_development) Scrum] and [https://en.wikipedia.org/wiki/Kanban_(development) Kanban] adapted to the constraints we have in Fedora. For instance, not all contributors can commit to be involved like a regular, full-time employee, meaning that rigid use of 2-week-long Scrum Sprints can be an obstacle to participating for some people.
 
If you're not familiar with agile development or the methods we use, here are some links to get you started:


* [https://www.youtube.com/watch?v=_QfFu-YQfK4 Learn Scrum in 8 minutes]
* [https://www.youtube.com/watch?v=_QfFu-YQfK4 Learn Scrum in 8 minutes]
* [https://www.youtube.com/watch?v=0EIMxyFw9T8 Kanban applied to Scrum]
* [https://www.youtube.com/watch?v=0EIMxyFw9T8 Kanban applied to Scrum]
Agile development methods often come with their own lingo that can be confusing to the "uninitiated"—like [http://agiledictionary.com/epic/ "epic"], [http://agiledictionary.com/iteration/ "sprint"] (or  [http://agiledictionary.com/iteration/ "iteration"]), [http://agiledictionary.com/spike/ "spike"]. Many of the terms used are explained over at the [http://agiledictionary.com/ Agile Dictionary].
We manage the project using a [http://taiga.fedorainfracloud.org/project/langdon-modularity/ Fedora Taiga instance].


==Technical details==
==Technical details==

Revision as of 11:22, 11 April 2016

Introduction to the Modularization initiative in Fedora

Modularity (formerly, Modularization) is an ongoing initiative in Fedora to resolve the issue of divergent, occasionally conflicting lifecycles of different components. A module provides functionality (for instance a web server) and includes well-integrated and -tested components (for instance Apache httpd and the libraries on which it depends). It can be deployed into production in various ways, for instance as "classic" RPM packages or a container image, and is updated as a whole. Different modules can emphasize new features, stability, security, etc. differently.

Note we are all still getting organized and nothing's set in stone yet.

Get in touch

There's no dedicated mailing list yet and everything regarding this topic should be discussed on the general Fedora Development list [1]. Most of us also hang out on the #fedora-modularization channel on Freenode.

Planning

Formal meetings will be held by the Modularity Working Group, once established. See the Modularity Working Group page for more information.

Development Method

We will use agile software development methods for Modularization, more specifically: a hybrid of Scrum and Kanban adapted to the constraints we have in Fedora. For instance, not all contributors can commit to be involved like a regular, full-time employee, meaning that rigid use of 2-week-long Scrum Sprints can be an obstacle to participating for some people.

If you're not familiar with agile development or the methods we use, here are some links to get you started:

Agile development methods often come with their own lingo that can be confusing to the "uninitiated"—like "epic", "sprint" (or "iteration"), "spike". Many of the terms used are explained over at the Agile Dictionary.

We manage the project using a Fedora Taiga instance.

Technical details

Architecture

The current idea we're working with comprises of three main parts, some more complex than others. This can change at any point.

  1. Module sources - not yet defined; these could be RPM repositories, comps files, simple component lists, COPRs, docker images...
  2. A service consuming the module sources and providing digested metadata for the end clients.
  3. The end clients communicating with the service, for example a standalone installation tool, a dnf plugin or a web service providing pretty module overview.

Code repositories

We currently host all of our code at Pagure [2] - the metadata service, its client, metadata drafts and even a couple of proof-of-concept modules. Repositories typically start with the fm- prefix and are open to all members of the Pagure modularization group [3].

Documentation

This differs for every project.

Documentation for the client is hosted at ReadTheDocs.org [4] and is being automatically rebuilt every 15 minutes. This will be handled by Pagure commit hooks once that feature is implemented and deployed.

Metadata service

The metadata service was deployed on a test server and populated with testing data. The client is configured to use this instance at this point.