From Mageia wiki
Jump to: navigation, search

Summary

Improve UI abstraction layer, based on Suse libYUI[1], for Mageia Control Center so that there is consistency between the NCurses, Gtk and Qt versions.

Improve framework to build custom perl modules/tools (aka Manatools::Shared)

Improve framework to build custom python 3 modules/tools

Porting old and writing new administration tool modules, using perl, python or even C++ (see also Feature:InstallerAndDrakXReview#Standalone)

Improving graphical layout, by working on tools or upstream libyui plugins.

And finally let ManaTools becoming the default

Owners

  • Name: Angelo Naselli
  • Email: anaselli_at_linux_dot_it
  • Name: Neal Gompa
  • Email: ngompa13_at_gmail_dot_com

Resources

Developers, Packagers, Translators, QA, Doc

Angelo Naselli aka anaselli as project leader, developer and packager
Neal Gompa as developer, github manager, dnf expert, Fedora PR
Yuri Chornoivan as i18n translator manager
Matteo Pasotti aka pasmatt as developer and packager

Needs

  • Python 3 developers to work on framework and tools
  • perl developers to work on framework and tools
  • C++ (especially focused Gtk) to work on libYUI upstream fixing and improvement, on mageia custom widgets (e.g. libyui-mga) or even to tools.
  • tester and people who want to help in documenting

Current status

  • Targeted release: Mageia 7
  • Last updated: 2017/09/17
  • Percentage of completion: (UI abstraction <100%> thanks to libYUI, perl and python frameworks <WIP>)

Perl Modules (working stand alone application)

  • embedded modules
    • manaclock: date/time manager
    • manadm: login manager configuration
    • manahost: hosts manager
    • manalog: journalct log reader
    • manaproxy: proxy manager
    • manaservice: service manager
    • manauser: user manager
    • manawall: firewall manager
  • external modules
    • urpm-downloader: s/rpm downloader
    • rpmdragora: rpm install manager
    • dragoraUpdate: rpm update manager

Python Modules

  • dnfdragora: cross distro rpm package manager based on dnf
  • contribfinder: retrieve the contributor email from a given package name
  • isodumper: tool for writing ISO images on a USB stick

Detailed Description

Problem

MCC is great, and I would love to be able admin using it regardless of whether I am using text interface or gtk/qt. The interface is completely different in curses than gtk interfaces. Curses version is a second rate citizen, and Gui is all GTK Only some tools are available in curses interface while not any are in Qt one, Just think a way to install software or managing repositories for instance. It would be nice to have qt version as well as gtk.

Solution

ManaTools[2] mpan is a generic launcher application that can run internal or external modules, such as system configuration tools.

ManaTools is also a collection of configuration tools that allows users to configure most of their system components in a very simple, intuitive and attractive interface. It consists of some modules that can be also run as autonomous applications.

ManaTools started as a port of MCC (Mageia/Mandriva Control Center) to libYui (Suse widget abstraction library), but its aim is to give an easy and common interface to develop and add new modules based on libYui. Every modules as well as ManaTools mpan itself can be run using QT, Gtk or ncurses interface.

Additional feature specifications

Instead of simply porting old MCC standalone modules/code look at Feature:InstallerAndDrakXReview#Standalone. The basic idea is to clearly separate the GUI front-end layer from the back-end. Back-ends should be based on CPAN modules (if perl related) or, if better using dbus.

That would grant to have a back-end layer that can be used not only by new GUI front-ends but also shared with other applications even not based on libYUI abstraction. Back-ends could be shared with installer and also with old MCC modules for instance, if possible.

A clear separation also means that changing a back-end, the front-end would remain un-touched, e.g. no new translations, new documentation (the layout would not change), etc.

Why it would be good for Mageia to include and push it

It would provide consistency across terminal and gui administration, and in doing so provide an easy entry into text based administration for novices.

libYui is written in C++ but perl, python and ruby bindings are provided (thanks to swig). Manatools and the available modules have been written using (modern) perl, Moose and other CPAN modules for the sake of readability, object oriented approach therefore better maintainability. A python based Manatools framework is work in progress.

Perl manatools framework has been realized to increase the drakX* code reuse, but the specific gtk-related of course, that to speed up the module porting process.

Writing a module using manatools perl or python framework, or even your own implementation using libYUI abstraction means having the opportunity to run a new application using TUIs (text user interfaces) or GUIs by writing the code once.

Moreover mantools solve a common problem that comes up after a graphic installation failure, logging in in console mode allows to configure the system with those same tools that once were available in graphic mode only.


Following are some examples of standalone application tool (QT, GtK and ncurses)



manauser

AdminUser-qt.png

AdminUser-gtk.png

AdminUser-ncurses.png


rpmdragora (perl)

Rpmdragora-qt.png

Rpmdragora-gtk.png

Rpmdragora-ncurses.png


The Manatools mpan, instead is in the following pictures (layout can be improved of course)

Apanel-qt.jpeg

Apanel-gtk.jpeg

Apanel-ncurses.jpeg


dnfdragora (python and working in user space thanks to dnfdaemon)

Dnfdragora-qt.png

Dnfdragora-gtk.png

Dnfdragora-ncurses.png

Test case

Test cases are all related to modules, so they should be discussed module by module (such as userDrake -> adminUser, serviceDrake -> adminService, etc).

Software / Packages Dependencies

libYui - the Yast User interface abstraction layer. https://github.com/libyui/

libyui-qt
libyui-gtk
libyui-ncurses
libyui-bindings - For yui script bindings (perl, python and ruby)

Mageia Plugins for libYui - https://github.com/manatools/
libYui-mga
libyui-mga-qt
libyui-mga-gtk
libyui-mga-ncurses

What could disrupt development of this new feature

lack of developers / interest by developers.

Would be good to have a developers mailing list.

Planning

Port and write missing stand alone applications (new modules).

Improve perl and python framworks.

Improve documentation.

Split standalone applications into manatools RPM to allow single installation (e.g. manauser, ...)

Contingency

Develop initially as an alternative using the current stable mcc for as long as needed. If project fails, continue using using current mcc.

Release Notes

mageia 5 - https://wiki.mageia.org/en/Mageia_5_Release_Notes#ManaTools_preview

Documentation

https://github.com/manatools

http://gitweb.mageia.org/software/manatools/tree/README.md
http://gitweb.mageia.org/software/manatools/tree/MODULE_HACKING
https://github.com/manatools/python-manatools/blob/master/README.md

https://github.com/libyui/

libYUI documentation can also be found into yui-devel and yui-mga-devel packages

Useful links

Project repositories available on github: https://github.com/manatools