Hi all,
if you are still not sure which project to join during the next Hackweek
(starting
this Friday [1]) here are some projects and ideas for you:
Projects
--------
1. "Controlling and Testing the YaST UI Remotely" [2]
This is a continuation of my previous project [3] which worked well but has some
limitations and it was a too big step forward. This time I would make smaller
steps
but more stable. The goal is to have a REST API for controlling and testing the
libyui based applications (not limited only to YaST).
(BTW I'll be working on this one, but this can be easily split to several tasks
for
more developers. You are welcome to join!)
2. "The Team Dashboard Web Application" [4]
As we already discussed several times, having a central dashboard application
collecting the status from Github, Travis, Jenkins, Open Build Service,
Bugzilla,
Trello... would be nice to have.
I already started a prototype some time ago but it is still far from production
use.
You can see a live demo at [5]. There are some usability and technical issues.
So if you would like to try something different but still stay with Ruby (as
this is
written in Ruby on Rails) this might be a good project for you.
Ideas
-----
If the projects above look too complex for you I have bunch of simpler ideas.
These
are not entered at the hackweek project page, add them by yourselves if you
want to
work on something from the list below.
1. Drop the Remaining YCP Files
Although we switched to Ruby there are still lot of YCP data files used in YaST.
Most of them are in yast2-country, see [6].
The goal would be to replace all YCP files by some generic format, readable even
outside YaST. My proposal would be YAML, but also JSON or XML would be
acceptable...
(Each of them has some advantages and disadvantages so there is no clear
winner.)
2. Simplify the Popup Module
The YaST Popup module provides a huge number of functions like
Popup.Error, Popup.TimedError, Popup.LongError, Popup.LongErrorGeometry,
Popup.TimedLongError, Popup.TimedLongErrorGeometry, Popup.ErrorDetails ...
It would be nice to clean the mess and have a single function covering all
combinations via optional arguments, for example:
Popup.Display("Message")
Popup.Display("Message", timeout: 60)
Popup.Display("Message", headline: "Headline")
Popup.Display("Message", details: "...", timeout: 60)
Popup.Display("Do you want to ...", type: :yes_no)
3. Drop yast2-xml, use the native Ruby XML parser
We have a .xml agent for parsing the XML files. But Ruby has a native support
for
XML, we not need any extra agent for that.
As a backend we could use REXML ([+] pure Ruby, included in Ruby stdlib [-]
slower)
or the nokogiri gem ([+] faster [-] external dependency). As we need the parser
only
rarely (e.g. the AY XML profile is parsed only once at the beginning) we do not
need
a super fast parser. Personally I'd prefer the builtin REXML, but obviously
it's up
to you what you choose...
4. Drop .dev.tty agent, use native Readline
For input/output in the command line mode we use the .dev.tty agent. That's for
historical reasons, YCP YaST could not read/write to STDIN/STDOUT. Now with
Ruby we
can use the native Readline support and drop this ugly Perl agent...
5. Folding the Travis Output
Our Travis builds run quite a lot of steps and each step produces a huge amount
of
log messages, e.g. yast2 log is almost 7000 (!) lines long [7]. To make the log
navigation easier Travis supports "folds". Simply print a message in format
"travis_fold:start:<name>" and later "travis_fold:end:<name>" to stdout.
The lines between the tags will be folded by default and described by the <name>
string. So we could define "Rubocop", "Unit tests", "Package build",... steps.
You can see the tags after clicking the "Raw log" button at Travis.
See how the docu team used this feature in the past [8].
(This is quite easy project, you might choose it as a secondary project if you
finish
your primary project sooner :-))
More Ideas or Details?
----------------------
If you are interested in some idea and need more details just ping me. If you
still
cannot find the right project for you ping me as well, I still have some more
in my
sleeve... ;-)
[1] https://hackweek.suse.com/
[2]
https://hackweek.suse.com/16/projects/controlling-and-testing-the-yast-ui-remotely-for-integration-tests-openqa
[3] https://hackweek.suse.com/16/projects/yast-integration-tests-using-cucumber
[4]
https://hackweek.suse.com/16/projects/the-yast-team-dashboard-web-application
[5] https://ydashboard.herokuapp.com
[6]
https://github.com/yast/yast-country/blob/master/language/src/data/languages/language_de_DE.ycp
[7] https://travis-ci.org/yast/yast-yast2
[8] https://travis-ci.org/SUSE/doc-sle/builds/297915514
--
Ladislav Slezák
YaST Developer
SUSE LINUX, s.r.o.
Corso IIa
Křižíkova 148/34
18600 Praha 8
--
To unsubscribe, e-mail: [email protected]
To contact the owner, e-mail: [email protected]