Contents
- 1 Summary
- 2 Owners
- 3 Resources
- 4 Current status
- 5 Detailed Description
- 6 Why it would be good for Mageia to include and push it
- 7 Test case
- 8 Software / Packages Dependencies
- 9 What could disrupt development of this new feature
- 10 Planning
- 11 Contingency
- 12 Release Notes
- 13 Documentation
- 14 Useful links
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
mga#27465 mpan is broken, WONTFIX. The perl-manatools has been abandoned. We still work on python tools https://github.com/manatools
- Targeted release: Mageia 7
- Last updated: 2022/08/28
- 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
rpmdragora (perl)
The Manatools mpan, instead is in the following pictures (layout can be improved of course)
dnfdragora (python and working in user space thanks to dnfdaemon)
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
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
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