About me
My name is Samat Davletshin and I am from HSE University from Moscow, Russia. I
interned at Intel and Yandex, and cofounded a startup
project where I personally developed front-end and back-end of the website.
I am excited to participate in GSoC with Jenkins this summer as a chanсe to make
a positive change for thousands of users as well as to learn from great mentors.
Abstract
Although powerful, Jenkins new job creation and configuration process may be non
obvious and time consuming. This can be improved by making UI more intuitive,
concise, and functional. I plan to achieve this by creating a simpler new job
creation, configuration process focused on essential elements, and embedding new
functionality.
My mentors are Kirill Merkushev and
Michael Neale
Deliverables
New job creation
New job name validation
Initially, job validation was unresponsive, job creation was still allowed with
an invalid name, and some allowed characters even crashed Jenkins. Happily, two
of this problems were fixed in recent improvements and I plan add only a real
time name check for invalid characters.
Popup window
Jenkins has a lot of windows reloads that may time consuming. The creation of
new job is a simple process requiring only job name and job type. This way UI
may be improved by reducing page reloads and putting new job creation interface
in a dialog window. Such popup would likely consist of three steps of
implementation: rendering a dialog window, receiving JSON with job types,
sending a POST request to create the job.
Configuration page
Changing help information
As reported by some users, it would be useful to have the functionality to
change help information. Installation administrators would be able to change the
help info and choose editing rights for other users. That would likely require a
creation of extension points and a plugin using them. I also would like to
include the ability to style the help information using markdown as shown above.
[Optional] The functionality is extended to creation of crowd sourced "wiki like" documentation
As in
localization
plugin the changes are gathered and applied beyond installation of a particular
user.
More intuitive configuration page.
Pursuing to solve this issue
Although there are a lot improvements in new configuration page, there is always
a room for improvements. An advanced job still has a very complicated and hard
to read configuration page. It is still open to discussion, but I may approach
it by better division of configuration parts such as an accordion based
navigation.
Home page
[Optional] Removing "My Views" page
"My Views" page may unnecessary complicate essential sidepanel navigation. Since
it contains very small functionality, the functions may be moved to the home
page and the whole page may be removed. That may be implemented by adding icons
to "My Views" tabs. Additionally, the standard view creation page can create
either of the types
[Optional] Reducing number of UI elements
The home page may contain some UI elements that are not essential and rarely
used. This way elements "enable auto refresh", “edit description”, “icon sizes”,
”legend”, “RSS” may be removed from home page and placed under "Manage Jenkins"
or an upper menu. It is also possible to create new extension points to support
new UI elements through plugins.
Credentials store page
[Optional] Grouping credentials and their domains
Credentials page has too many reloads and requires many clicks to get to a
required credentials page. That may be improved by removing the last page and
showing credentials under domains.
Current progress
By May 25th I learned about the structure and tools of Jenkins and started
working on the first project:
I started with New Job Name validation first. Luckily, in last updates the
changes of recena there
were implemented all of the changes I proposed except real time check on name
validity. Here I proposed the change which fixes it by
sending GET request on keyup event in addition to blur.
I also made a New Job Popup with using existing interface.
View the current
pop-up progress
I used Remodal library for popup and put
there
existing
New Job container. Surprisingly, it was fully functional right away. On the GIF
you can see that popup receives all job types and then successfully submits the
post form creating a new job. I think that could be a good first step. Further I
can start changing the window itself.
Links
Initial proposal of the project
The project discussion on mailing list
Jenkins GSoC Page
Project repository