[GSoC2016] Jenkins WebUI

647 views
Skip to first unread message

Samat Davletshin

unread,
Mar 5, 2016, 11:55:44 AM3/5/16
to Jenkins Developers
Hi there! My name is Samat and I am from Moscow.

Although, I am a business major (at HSE University), I spend most of my time learning about development and creating applications (mostly web). I interned at Intel and Yandex, and cofounded a startup project as a full stack web developer. I also finished one of the top ranked high schools in Russia (AESC MSU math and physics school).

I am interested in Jenkins for two main reasons: being able to help and to get valuable experience. As Jenkins servers are actively used by lots of people, I would love to work on something what would actually improve experience of real users. In my case, as I am excited about front-end and UI/UX development, I can imagine saving users time,  as they launch their Jenkins applications, and easing the process of getting new projects up and running. Personally, I could also learn a great deal about developing process in a larger scale applications and in a professional team.

I would love to work on Jenkins WebUI project. Since my main interests and expertise are UI/IX and front-end development, I think this project would fit me greatly. I think that I have the competences and knowledge to achieve desired results since I had good practice with HTML, CSS, and JavaScripts while working on my web projects. I had experience building websites using such tools as Bootstrap, jQuery, and LESS. Particularly, I would like to point out my last startup project at expfood.ru where I personally developed design, illustrations, interfaces, front-end and back-end implementation. 

Regarding my ideas of what could be done with Jenkins WebUI. I watched the video where Tom and Gus explained issues and directions of improvement of WebUI. I totally agree with them on their thoughts and also think that it is important to allow users navigate the panel as quickly and intuitively as possible. 
I installed Jenkins on my computer and spent about an hour playing with it and watched various basic tutorials. To be honest, I have to admit that I did not fully understand all the functionality and tools of Jenkins yet. So, for now, it may be hard for me to understand the typical use cases, and the workflow with the panel. I am willing to spend more time working with it and try to make an app working there. For now I have only some general ideas about how some of the GUI could be improved. In essence, I would describe it as focusing on most important interface elements. This, of course, have to rely on typical usage patters to serve users best. A simple example, may be a newly created projects in Jenkins. There, I personally found navigation not obvious (as a new user) since many of main interface elements (left column with Status, Changes, Workspace, etc.) where useless at this stage of the project as there were no natural transition to the place where I actually needed to work. Also I would like to say that I find interface of Parse.com rather appealing (although I maybe biased as a user of the platform), so may be there are some ideas that could be derived from there (although, of course, Parse has different functionality).

While learning about the project I got a couple of questions:
In the video Gus says that there are three levels of UI change: from trivial to those which bring new functionality. So my question is to which extend a GSoC student is expected to contribute on each level? As I understood a good part of work of a student may be at level two which Gus describes as "making things easier and nicer to work with". However, to what extend would you like a student to be involved into third level which "brings new functionality"? I would be happy to work at any of the levels, although the third level is more challenging. I am just curious for what to prepare :) 
Are there any other suggestions for me to better prepare for application process? Here on the forum I saw Oleg recommending trying to create an application on Jenkins to better understand places of improvements, what I am going to try to do. Are there any additional suggestions for me to learn better about Jenkins and make sure that Jenkins fits me and I fit Jenkins? 

My profiles at:


Sincerely,
Samat.

Oleg Nenashev

unread,
Mar 6, 2016, 5:30:22 AM3/6/16
to Jenkins Developers, Michael Neale, Tom Fennelly
Hi Samat,

Thanks a lot for contacting us!
I've added the potential mentors of this project to Cc.

I'll try to provide a detailed response on this evening.
We're planning office hours to Monday and Wednesday, so we can also discuss possible topics there: https://wiki.jenkins-ci.org/display/JENKINS/Google+Summer+Of+Code+2016.

Best regards,
Oleg Nenashev


суббота, 5 марта 2016 г., 19:55:44 UTC+3 пользователь Samat Davletshin написал:

Samat Davletshin

unread,
Mar 9, 2016, 3:35:40 PM3/9/16
to Jenkins Developers, michae...@gmail.com, tfen...@cloudbees.com, jenkinsci...@googlegroups.com
Oleg, thank you for today's office hours, that was very helpful! I am looking for the next meeting to discuss WebUI project in more details. I CCed orgs mailing list. Hopefully, there will be convenient time to gather and talk about the project.

Here I also would like to update you on my progress since the previous message. I spent about 5-10 hours working with Jenkins and tried to launch a simple app there. That was very helpful and I got a better understanding from it. Building on my new experience and great videos form Gus and Tom I created a small document, where I drafted some of my ideas. You can find them on this Google Doc. I hope some of these ideas are reasonable, but, again, those are only preliminary drafts.

Until the next meeting I am going to continue exploring Jenkins in two main ways: take a look at Jenkins WebUI 2.0 alfa and explore libraries in github, as Oleg suggested. I hope that will help me understand the ways that Jenkins WebUI may be improved on a deeper level.

I am excited to talk to you soon!

Kirill Merkushev

unread,
Mar 12, 2016, 9:49:27 AM3/12/16
to Jenkins Developers
Hello, Samat!
I'm one of the mentors on this GSoC and i have a few thoughts.
Your proposals is very interesting! But new UI of jenkins (maintained by Gus and co) is a little bit unfinished and looks like it can be changed in any way.
I propose to look at the popular bounded plugins - one of them is Credentials Plugin (https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Plugin)

It requires some fresh look and few very important features - for example dynamically preselected type of credentials after clicking on the creds btn in front of selector.
(Its a real problem to end users).

Also, you can look at build log page - it can be little more user-friendly with elements like in other build tools such as Travis/Teamcity (now it only tons of text without any chance to quickly find smth)

If you interested in such thing, just let me know and i can explain in more detailed way what i mean.



суббота, 5 марта 2016 г., 19:55:44 UTC+3 пользователь Samat Davletshin написал:
Hi there! My name is Samat and I am from Moscow.

Samat Davletshin

unread,
Mar 12, 2016, 1:57:48 PM3/12/16
to Jenkins Developers

Hello, Kirill!

Thank you very much for the attention and the feedback! So would you advise not to touch on the new UI changes? During office hours Oleg said that students are welcome to work on both new UI and students’ own suggested areas. If the latter is more preferred I would be glad to focus on it, although, in my view, there are many interesting core pages, which are already touched by Gus and Tom.


Yes, I would love to work on areas suggested by you! Considering that I am new to Jenkins, I appreciate pointing to areas to work at.


I took a look at credentials plugin at "Manage Jenkins" -> "Manage Credentials". I found this page layout similar to the one of other configuration pages. So does it have something in common with new Configuration page overhaul proposed by Gus in his video? Or do you talk about different type of change? 

And I am sorry I did not quite get what did you mean in your example. 

Do you mean preselected type of credentials as shown on the first picture? But what is is the credentials button if front of which selector? I am sorry for silly questions, just did not use the plugin before. :)
















I took a loot at Travis build log page, by building a simple app there. I think there are indeed a few features that could be useful to Jenkins users as well. I shown below, I liked the following interface elements:
1. Numbering the lines (personally, I think this is more convenient than identifying rows by time stamps as at TeamCity).
2. Collapsing similar information into one block (I would love this feature)
3. Allowing see the row output (what may be liked by those who are used to Jenkins original interface)
4. Adding a button to go to the end of the log (as it is often what you need to do)
5. Allowing to restart build from the log itself (I personally, while Jenkins by tutorial, remember myself going back and forth many times to rebuild a job and then see what went wrong).

What do you think about it? Is this what you meant? Or there are other ideas that you had? 


Please tell me more about what you think could be useful for me to work at. I want take a closer look at this issues and maybe try improve it in code. 


Oleg Nenashev

unread,
Mar 13, 2016, 7:06:16 AM3/13/16
to Jenkins Developers
Hi,
 
During office hours Oleg said that students are welcome to work on both new UI and students’ own suggested areas. If the latter is more preferred I would be glad to focus on it, although, in my view, there are many interesting core pages, which are already touched by Gus and Tom.

Yes, students are welcome to propose their own projects or projects based on ideas.
In the first case it's highly recommended to find a potential mentor before the application. Org admins will help with it, but it may be complicated if you propose something narrow specific.

Kirill's idea regarding credentials UI/UX improvements is definitely interesting. It also fits well into the 2.0 UX scope. But the final decision on the project to apply for is on you. Whatever project you select, we will try to find mentors and to allocate the project slot.

Regarding the Travis functionality, there are similar features in Jenkins plugins:
All this stuff can be improved, of course :)

BR, Oleg

суббота, 12 марта 2016 г., 21:57:48 UTC+3 пользователь Samat Davletshin написал:

Samat Davletshin

unread,
Mar 13, 2016, 3:10:19 PM3/13/16
to Jenkins Developers, jenkinsci...@googlegroups.com, tfen...@cloudbees.com, gre...@cloudbees.com, michae...@gmail.com
Hello there!
I CCed org list, Michael, Tom, and Gus. May be it would be possible to organize a discussion of Web UI improvements with interested students and mentors. I hope to discuss possible UI changes on Google Hangouts to better understand on what direction to focus before drafting a proposal. I also would love to find a potential mentor for my projects. Personally, I am available most of the days from 3 AM to 7 PM UTC. 

I updated the doc with my ideas and comments, by answering Oleg's comments and adding few more ideas. 

Oleg, as always, thanks for the feedback. On this stage, I would say that most of the WebUI projects are interesting to me. So, I would like to choose projects by what I could do the best and what would have the highest impact for Jenkins community. Thanks for pointing out the plugins for build logs! However, what do you think about making some plugin functionality be pre-installed (default)? It seems that these features are useful to users, but may be not necessary enough to force users install the plugins. This way, user experience may be improved by having some useful plugins pre-installed, which users may turn off if they want, as this is the case for the essential plugins. 

Kirill Merkushev

unread,
Mar 13, 2016, 6:26:51 PM3/13/16
to Jenkins Developers
In each creds config there is "add" btn. When you click on it - it provides all existing credentials type in modal. But most of the time when you want to add credentials by this btn it should be only one type. For example GitHub plugin requires "secret text" only creds, but you see username/password credentials config page  when click on this button.


 Also, you can't define on which domain this credentials is binded.

On the global config page, on "Manage Credentials" section it requires lot of clicks and page reloads to create any type of credentials.

Yep, this config pages has same styles as in new look and feel of 2.0 jenkins. But in plugin you can change it easily by your own.



Kirill Merkushev

unread,
Mar 13, 2016, 6:42:19 PM3/13/16
to Jenkins Developers
All your proposals for the logs is very useful, but if it already implemented by plugins maybe just make one of them as complete solution to transform jenkins log page to new robust log page with all features described.

p.s. after looking on your idea to new project page i am vote for it. But its your decision.

Michael Neale

unread,
Mar 14, 2016, 4:07:27 AM3/14/16
to Jenkins Developers, Samat Davletshin, gre...@cloudbees.com, jenkinsci...@googlegroups.com, tfen...@cloudbees.com
Some intersting proposals going around. Still need some work to narrow the scope of every one. I think a focussed single feature proposal (it may seem annoyingly small at first), vs a broad one, will be most likely to succeed. And small improvements can be appreciated by many!

Samat Davletshin

unread,
Mar 18, 2016, 10:41:53 AM3/18/16
to Jenkins Developers, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com

Hi everybody!

After a lot of valuable feedback, I would like to update you on the projects that I could do during this summer. Here is the new doc. Mainly, I am interested in job creation and configuration pages. However, I also present two smaller ideas, which may also turn out to be useful. I do not mean to accomplish everything what is in the doc: it is just a current accumulation of possibly viable ideas. I would love to hear your feedback on what do you think about these ideas and which (parts) of them would be a good combination for the summer. I hope you like the ideas and then soon I will post a proposal template here. I also consider an option of having more than one proposal for Jenkins.


Thanks again for all the help!



Oleg Nenashev

unread,
Mar 18, 2016, 3:10:49 PM3/18/16
to Jenkins Developers, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com
Hi Samat,

The proposal LGTM from the technical PoV.
My recommendation would be to start writing other sections like abstract, list of deliverables, timeline, etc.
See this guide: http://write.flossmanuals.net/gsocstudentguide/writing-a-proposal/

BR, Oleg

пятница, 18 марта 2016 г., 15:41:53 UTC+1 пользователь Samat Davletshin написал:

Samat Davletshin

unread,
Mar 19, 2016, 3:44:50 PM3/19/16
to Jenkins Developers, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com, michae...@gmail.com
Hello again!

I am excited to present you with my proposal draft! I would love to hear you feedback here and/or at tomorrow office hours at 9 AM UTC. 
My personal concerns are currently the timeline, and the number of required/optional type goals.

Hope to hear from you soon!

Sincerely,
Samat.

Michael Neale

unread,
Mar 20, 2016, 5:09:44 AM3/20/16
to Samat Davletshin, Jenkins Developers, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com
I think this is ready to submit to the https://summerofcode.withgoogle.com web app. 

Maybe these are 3 or 4 proposals (I wouldn't put it all as one proposal)

Samat Davletshin

unread,
Mar 20, 2016, 9:17:06 AM3/20/16
to Jenkins Developers, sama...@gmail.com, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com
I posted and shared the proposal on GSoC website. Would love to hear some final feedback. If you like it I will soon submit the final version in PDF.

Oleg Nenashev

unread,
Mar 22, 2016, 8:37:51 AM3/22/16
to Jenkins Developers, sama...@gmail.com, tfen...@cloudbees.com, gre...@cloudbees.com, twil...@gmail.com
The proposal looks good to me.
Thanks for sharing it in advance!

воскресенье, 20 марта 2016 г., 14:17:06 UTC+1 пользователь Samat Davletshin написал:

Samat Davletshin

unread,
Apr 25, 2016, 9:40:16 AM4/25/16
to Jenkins Developers
Hello!
I am very glad that I was accepted for GSoC for this summer and I will do my best to meet your expectations! Thank you for a lot of support during the application period. 
Now, during the community bonding period, I would like to already start getting involved into the development process. In this period it would likely mostly consist of learning and getting familiar with the code and tools. However, I hope to start writing some code as early as possible. 
I also think that I could post reports about my progress and challenges to this tread once every couple of weeks (or more/less often if you want). Michael and Kirill are mentioned as my mentors so I believe I can discuss details with them.
Currently I am mostly guided by my proposal, but I would love to hear any feedback both on the proposal and not. 
Honestly, at this point the project seems to me rather complicated and challenging since this is my first experience with open source and such a big code. However, I believe that by being committed and devoting enough time I will perform well. Jenkins is going to be main activity since today and until the end of summer. I will only week when I may have difficulties working most of the time on Jenkins is finals week at my university at the end of June. 

Thank you again! I am excited about the next four months!

Michael Neale

unread,
Apr 26, 2016, 2:25:59 AM4/26/16
to Jenkins Developers
Congrats Samat. 

Yes, it could be a bit overwhelming, I am interested to see what others suggest as to what to tackle. 
Are you on irc (I am on GMT+10 timezone as "michaelneale" so say hi!)?

I think starting by building Jenkins 2.0 and mapping what you think you want to improve with that may be a good idea. Depending on how much Javascript is involved, may get others to drop in tips on tools etc. A nice place to start would be to find one "confidence building" improvement in your proposal (I have my ideas, but would like to hear others first - mine are not based on science but just pain over the last week!). 

Kirill Merkushev

unread,
Apr 26, 2016, 3:51:55 PM4/26/16
to Jenkins Developers
Glad to see you here. Are you read about react, webpack, commonjs module system, marionette, bem?

Samat Davletshin

unread,
Apr 27, 2016, 7:20:28 AM4/27/16
to Jenkins Developers
Hello, Kirill,
Not yet, but I plan to read about it this week. 
I think I could get general understanding of it now, and then learn required details down the road.
Message has been deleted

Kirill Merkushev

unread,
Apr 27, 2016, 3:15:54 PM4/27/16
to Jenkins Developers
I've developed a simple weather app to demonstrate java + js stack together using maven, jersey, webpack, marionette. It can be useful for you to start learning.

https://github.com/autoschool/weather

среда, 27 апреля 2016 г., 14:20:28 UTC+3 пользователь Samat Davletshin написал:

Michael Neale

unread,
Apr 27, 2016, 8:47:49 PM4/27/16
to Jenkins Developers
note that a lot of this has to work within the constraints of Jenkins 2.0 as it is today. 

Samat Davletshin

unread,
May 16, 2016, 9:32:23 AM5/16/16
to Jenkins Developers, Tom Fennelly
Hello! Tom Fennelly kindly agreed to talk to me about my project tomorrow at 11AM UTC. If anyone wants to join in, you are welcome!
After the talk I plan to write here about what I plan to work on.

Oleg Nenashev

unread,
May 16, 2016, 9:37:42 AM5/16/16
to JenkinsCI Developers
After the talk I plan to write here about what I plan to work on.

Or maybe a blogpost on jenkins.io? Depends on the design/planning status, of course

2016-05-16 15:32 GMT+02:00 Samat Davletshin <sama...@gmail.com>:
Hello! Tom Fennelly kindly agreed to talk to me about my project tomorrow at 11AM UTC. If anyone wants to join in, you are welcome!
After the talk I plan to write here about what I plan to work on.

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/c6e4b72c-541b-45da-b76b-fa5bdaef0aea%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Baptiste Mathus

unread,
May 16, 2016, 10:08:38 AM5/16/16
to Jenkins Developers
2016-05-16 15:37 GMT+02:00 Oleg Nenashev <o.v.ne...@gmail.com>:
After the talk I plan to write here about what I plan to work on.

Or maybe a blogpost on jenkins.io? Depends on the design/planning status, of course

Possibly both :). 
IMO, the blog post is strongly recommended, but discussing/refining its content here is welcome if you need help samat. (and we can also review the blog post PR, obviously).

Cheers

-- Baptiste

Samat Davletshin

unread,
May 16, 2016, 12:11:20 PM5/16/16
to Jenkins Developers
I would glad to do both if this is a good idea.
However, I am not very familiar with the blog format. Is it appropriate for discussion of mere plans without a ready result? If so should I follow some style guides?

Oleg Nenashev

unread,
May 16, 2016, 12:44:07 PM5/16/16
to JenkinsCI Developers
Regarding the format, just follow the approaches in previous blogposts

2016-05-16 18:11 GMT+02:00 Samat Davletshin <sama...@gmail.com>:
I would glad to do both if this is a good idea.
However, I am not very familiar with the blog format. Is it appropriate for discussion of mere plans without a ready result? If so should I follow some style guides?

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Michael Neale

unread,
May 16, 2016, 5:17:12 PM5/16/16
to Jenkins Developers
If you aren't 100% sure of formatting or details of how to publish a blog, open a pull request anyway and people will help fix it in review. 

Samat Davletshin

unread,
May 18, 2016, 6:58:40 AM5/18/16
to Jenkins Developers, Kirill Merkushev, Michael Neale
I wanted to ask what would be the best (and easiest) way to implement the following feature:
To able to do some of configuration functionality on newJob page.
For example, to add build triggers.

It seems that connection between various pages is rather complicated and it is easy to break things there.
What would the best way to approach it? Do you think it is reasonable?

Samat Davletshin

unread,
May 18, 2016, 10:48:46 AM5/18/16
to Jenkins Developers, Tom Fennelly
I also do not quite get how name validation happens on newJob creation.
add-item.js sends GET request to localhost:8080/jenkins/checkJobName
If the job name is incorrect it receives an error string "message".

Where can see what happens at /checkJobName?
Are there any problems with the check happening on client side in JavaScript?

It seems to me that job validation should not be very complicated and it would be better to do it on client side.
This way it would be possible to give the user a real time feedback and show the warning message right after he typed it. Currently it happens only on blur what is inconvenient in my view.

Kirill Merkushev

unread,
May 18, 2016, 2:30:22 PM5/18/16
to jenkin...@googlegroups.com, Tom Fennelly
https://wiki.jenkins-ci.org/display/JENKINS/Form+Validation

You can save validation logic on the server side (as of any client side validation logic may be overridden), but change the trigger for ajax request to keypress.

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Kirill Merkushev

unread,
May 18, 2016, 2:33:13 PM5/18/16
to jenkin...@googlegroups.com, Tom Fennelly
As for configuration functionality on newJob page - what kind of functionality do you want to see on this page (popup)? Build triggers can be very complicated in their configuration, so i suggest to not to place it there

Michael Neale

unread,
May 18, 2016, 7:04:41 PM5/18/16
to Jenkins Developers, tfen...@cloudbees.com
It is common in webapps to validate on the server side. Even if you also validate on the client side, server side will enforce the rules (there may be reasons such as security, to avoid injection attacks). 

Michael Neale

unread,
May 18, 2016, 7:08:38 PM5/18/16
to Jenkins Developers, tfen...@cloudbees.com
So which option is this in the GSoC proposal - under "New Job Creation" there are 3 things that were proposed - the first one (new job creation wizard) seems somewhat redundant with Jenkins 2.0 which totally reworked that screen. 
The second option was job name validation, which is also more "real time" than it was before (although it isn't as you type now, it is only when it loses focus. Given these changes, the third proposal may make more sense:

[Optional] Simple new job configuration.
○ After creation, a new job are configured in the same creation popup.
○ This configuration contain only essential options such as SCM and main
build actions.

This would be interesting to see - the config page has been redesigned but it still doesn't directly guide you to setting up SCM and other critical things yet. Is that a better place to look? 

Samat Davletshin

unread,
May 19, 2016, 4:56:31 AM5/19/16
to Jenkins Developers, Kirill Merkushev, Michael Neale
Hello
I talked with Tom about new job creation process yesterday and here are some ideas from it:
1. Inner structure of pages may be complicated and it easy to break things there. So it may be better for me to work (at least start) with only CSS, JavaScript changes. This is how current 2.0 visual changes in new job creation and configuration are made: only in CSS and JavaScript.
This is why I was asking about the process of including functionality from configuration page to new job page. This is also what Michael advised in his last message. So how it is done and how complicated it is actually?

2. Again since changing pages may be complicated, Tom said that adding a popup to home page may be hard and time consuming.

3. Tom was proposing a step by step new job creation. Currently it would contain only 2 steps - job name and job type. "Next, next" process would be more intuitive and quicker to understand what to do. That may be done with only JavaScript and CSS by hiding and showing parts. Tom liked this idea.

So I am not saying that I do not want to do anything except JavaScript and CSS. It is just may be better to start from more manageable surface and then move deeper. What do you think? Kirill, Michael?

Then about job validation. I personally think that there are now two ways of improvements that could be a good place for me to start at:
1. Job name is checked for validity only when it loses focus. I think that should not be hard to display a warning message right after the user types in an invalid character
2. It is possible to submit job creating form with an invalid name. It takes user to unnecessary empty page with error message forcing to click back button. I tried to fix it yesterday but had difficulties with the GET request to check the name. Apparently I cannot block form submission with IF statement as it is done with empty name and no job type selected. So the validation is better happen on server side? If so how should I approach prevention of job submittion?

Do you think that above improvements in job validation worth it? It seems to me that they do.

Finally about job configuration page:
1. Changing help information probably stays now as in proposal.
2. More intuitive configuration page. There are now a lot of improvements in 2.0. However, I think there are some new approaches to try such as accordion based configuration. This part is very open to discussions and feedback.


I would love to hear any feedback.
Kirill, Michael if you think it is reasonable to talk I would be glad to do so and get your feedback almost any time.

Kirill Merkushev

unread,
May 19, 2016, 7:13:46 AM5/19/16
to Samat Davletshin, Jenkins Developers, Michael Neale
As for me - nothing changed in 2.0 about job creation process. Its still ugly and very slow.
Why Tom thinks that popup creation is difficult? Credentials plugin already have this behaviour without any problems. I think we should reduce the number of page reloads in job creation process. I think the most efficient and easy way to start - is to remove reload after click on "New item". 

Michael Neale

unread,
May 20, 2016, 2:05:56 AM5/20/16
to Jenkins Developers, twil...@gmail.com, michae...@gmail.com
(replies inline)


On Thursday, May 19, 2016 at 6:56:31 PM UTC+10, Samat Davletshin wrote:

3. Tom was proposing a step by step new job creation. Currently it would contain only 2 steps - job name and job type. "Next, next" process would be more intuitive and quicker to understand what to do. That may be done with only JavaScript and CSS by hiding and showing parts. Tom liked this idea.

I think this makes sense. 
 

So I am not saying that I do not want to do anything except JavaScript and CSS. It is just may be better to start from more manageable surface and then move deeper. What do you think? Kirill, Michael?

Much of the work now happens in javascript so I don't think there is a problem with that unless you really dislike javascript ;)
 

Then about job validation. I personally think that there are now two ways of improvements that could be a good place for me to start at:
1. Job name is checked for validity only when it loses focus. I think that should not be hard to display a warning message right after the user types in an invalid character

Invalid character is one, but validating the whole job name in the background (for duplicates) could be good. 
 
2. It is possible to submit job creating form with an invalid name. It takes user to unnecessary empty page with error message forcing to click back button. I tried to fix it yesterday but had difficulties with the GET request to check the name. Apparently I cannot block form submission with IF statement as it is done with empty name and no job type selected. So the validation is better happen on server side? If so how should I approach prevention of job submittion?

If #1 above is addressed, this would be less of an issue right? 
 


Finally about job configuration page:
1. Changing help information probably stays now as in proposal.
2. More intuitive configuration page. There are now a lot of improvements in 2.0. However, I think there are some new approaches to try such as accordion based configuration. This part is very open to discussions and feedback.

Yes it is a bit different now, it uses a scrollspy to combine scrolling with tabs (http://www.w3schools.com/bootstrap/bootstrap_scrollspy.asp). 
I am not sure about accordion, would be interested in what Kirill thinks on this. 
I think its a big improvement on how it was, for sure, but one thing that keeps irritating me is the text editor for freestyle or pipeline - isn't big enough and I can't resize it. 

Kirill Merkushev

unread,
May 24, 2016, 4:55:25 PM5/24/16
to Michael Neale, Jenkins Developers, Michael Neale, rec...@gmail.com
Summoning Manuel Recena.

Hello Manuel!
Samat have some plans to improve UX on job creation, so we would like
to know your last and future changes about this page.

Can you post links to already finished or opened PRs and tell us about
next your steps?

Thanks!

Samat Davletshin

unread,
May 25, 2016, 4:27:58 AM5/25/16
to Jenkins Developers, Michael Neale, Kirill Merkushev

Hello!

Thank you, Kirill. Yes, I would like to see PRs and work in progress from Manuel. Since now I try to improve new job creation, I think that would be useful to me.


Now I work on new job creation popup. On the GIF below you can see my current results. I used a Remodal library for popup and put there existing New Job container. I was glad and surprised that it is 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.


What do you think? Do you have any suggestions?


Michael Neale

unread,
May 26, 2016, 2:51:36 AM5/26/16
to Jenkins Developers, michae...@gmail.com, twil...@gmail.com
I quite like that. 

Baptiste Mathus

unread,
May 26, 2016, 7:23:14 AM5/26/16
to Jenkins Developers, Michael Neale, Kirill Merkushev
+1, nice improvement.

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/3fd7d40b-da14-44ef-8fc2-dfd01616c891%40googlegroups.com.

Samat Davletshin

unread,
May 26, 2016, 7:30:19 AM5/26/16
to Jenkins Developers, Michael Neale
I wrote a post for jenkins website. So maybe you have some suggestions.
https://github.com/jenkins-infra/jenkins.io/pull/262

Samat Davletshin

unread,
May 29, 2016, 4:24:40 AM5/29/16
to Jenkins Developers, Tom Fennelly, Michael Neale
Hello,
In previous post I showed that I could make a popup dialog window on home page to create a new job.
However, I did it in a fast and dirty way and now I want to make it properly.

I am sorry if those are too simple questions. However, I would appreciate if you could at least link me to where I can read about how to do it.

Currently I see 3 issues and I would like to have a hint on how to fix them.

1. How do I add an external js, css library to js-modules or to js-libs so that I can require it on home page?

2. For some reason, when I try to include my jelly file by <st:include page="myjelly.jelly" /> it is not included. The myjelly file is in the same folder as the file (sidepanel.jelly) where I try to include it. If I just insert the same jelly in sidepanel file between <st:include> files it works.

3. Labels like ${%ItemName.label} are not replaced by the corresponding string as you can see on GIF.

Michael Neale

unread,
May 30, 2016, 2:50:21 AM5/30/16
to Jenkins Developers, tfen...@cloudbees.com
Hi Samat, I fear those are probably not simple questions at all :/

For an external script, Tom may know the best way may depend if it is a common library other plugins may use or is the code you want to contribute. 

My experience is based on the js-modules use in: https://github.com/jenkinsci/pipeline-editor-plugin (you can see in resources there is js, less etc, which gets put into place by the build chain via "gulp"). 

For jelly - I am not sure. Perhaps it is a path issue - needing / at the start of the included file? or a full path to it? (I don't quite follow what you are doing)

Do you have work on a repo/branch somewhere others can look at? 

Tom Fennelly

unread,
May 30, 2016, 3:28:22 AM5/30/16
to Jenkins Developers, michae...@gmail.com
Hi Samat.

Can you create a branch and push your changes to it?

As for remodal ... you don't need to externalize it to get things working. Externalization is a runtime optimization that you can do later.

Looking at your changes, it looks like you are planning to use remodal via add-item.js ? add-item.js is built out of the "war" directory (see war/gulpfile.js for the bunble build instruction). So, the first thing you need to do is add a dependency on remodal, which you do by running "npm install --save remodal". After doing that, you should be able to "var remodal = require('remodal')" in the ad-item JavaScript code to get the remodal instance and do whatever it does.

Also .... not sure I'd create the big .jelly file as you've done it. Maybe just outline how you are expecting this to work first and we can then figure out how best to implement it.

Samat Davletshin

unread,
May 30, 2016, 4:25:10 AM5/30/16
to Jenkins Developers
I committed my changes to my fork here. So do you advise to make a branch and re-upload changes there?

Regarding the library I just added css and js code to random existing files (hudson-behavior.js and style.css) for testing, hoping to redo it later. I was thinking that it is just like bootstrap library - only css and js files for styling and behavior. Should it be added as bootstrap? Just seems to me that there is no single instance of "remodal" there to require as it is in jQuery. Is bootstrap getting required the same way?
I am sorry, I just don't quite understand the procedure.

Tom Fennelly

unread,
May 30, 2016, 6:18:12 AM5/30/16
to Jenkins Developers
Ah ... I didn't look at remodal in detail and so didn't see that it was a jQuery plugin. You'd think that would be the first thing they'd highlight in their docs ;)

So ... the fact that it is a jQuery plugin does complicate things a bit. We do not want to use jQuery in the normal way within Jenkins i.e. expose it as a global. That causes all sorts of problems that are really hard to solve once you go down that road. It has caused problems in Jenkins in the past where we are still living with the consequences now today (e.g. the prototypejs cancer).

Anyway ... I'm guessing that remodal assumes there's a jQuery bound to the global scope. We would want remodal to not make that assumption and, instead, get and deocorate it's own instance of jQuery. Doing it that way makes sure that the remodal in use by Jenkins is something that has it's own jQuery (and so no clashes with other jQuery plugins) that's not bound to the global scope i.e. is not going to effect anything else in Jenkins and is not going to be effected by anything else in Jenkins. So, it would mean creating remodal equivalent of bootstrap-detached.

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/ee1f281e-473a-4820-9d07-b26cb302692f%40googlegroups.com.

James Dumay

unread,
May 30, 2016, 5:58:11 PM5/30/16
to Jenkins Developers
That's some awesome work! 😎

Kirill Merkushev

unread,
May 31, 2016, 5:51:29 PM5/31/16
to Jenkins Developers
Samat, maybe you'll start a PR with [WIP] in title and continue work
in that PR? So we could simply subscribe to new changes and see easily
what happens.

2016-05-31 0:58 GMT+03:00 James Dumay <jdu...@cloudbees.com>:
> That's some awesome work! 😎
>
> --
> You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/03ebc80d-535b-4b63-ac4f-07bb5615423d%40googlegroups.com.

Samat Davletshin

unread,
Jun 5, 2016, 4:25:07 AM6/5/16
to Jenkins Developers
For those who are interested, I created a [work in progress] pull request where you can see updates and discussions.
https://github.com/jenkinsci/jenkins/pull/2388/files

Currently, this is only an initial version which needs a lot of fixes.

Samat Davletshin

unread,
Jun 6, 2016, 8:00:21 AM6/6/16
to Jenkins Developers, Tom Fennelly, rec...@gmail.com, Kirill Merkushev, Michael Neale
Hello!
I would like to ask about item types when a new job is created.
It seems that add-item.js puts item types into categories: standalone-projects, uncategorized, nested-projects.

What is the purpose of these categories? Are they somehow involved in UI?
Is there a work in progress related to the categories and/or item types?

I was trying to place item types in two columns but was a bit confused by the structure.
Additionally, how does add-item.js gets the data to know which item types should be displayed?

Michael Neale

unread,
Jun 7, 2016, 3:17:15 AM6/7/16
to Jenkins Developers, tfen...@cloudbees.com, rec...@gmail.com, twil...@gmail.com, michae...@gmail.com


On Monday, June 6, 2016 at 10:00:21 PM UTC+10, Samat Davletshin wrote:
Hello!
I would like to ask about item types when a new job is created.
It seems that add-item.js puts item types into categories: standalone-projects, uncategorized, nested-projects.

What is the purpose of these categories? Are they somehow involved in UI?
Is there a work in progress related to the categories and/or item types?


I think there was some work at one point in showing them differently, but what is in Jenkins 2 is not categorised as you can see. I am not sure if they have any current meaning or future plans. 

Samat Davletshin

unread,
Jun 11, 2016, 11:27:39 AM6/11/16
to Jenkins Developers, Michael Neale, Tom Fennelly, rec...@gmail.com
Hello!
Here I show some ideas about new job creation interface I made.
On gif below you can see that I changed name input, put item types in two columns, and some other changes.
This is how I think interface could be improved. However, those are only initial ideas so many proposed changes may be discarded if they do not seem good.
If you want, I can commit this code to my pull request.



Samat Davletshin

unread,
Jun 20, 2016, 3:58:08 AM6/20/16
to Jenkins Developers
Hello,
Today I made some changes for name validation proposal and made a PR:
https://github.com/jenkinsci/jenkins/pull/2416
Now it handles blur and keypress differently.

I also removed an unnecessary warning text. When a user selects a job type first and then enters the name. I think there is no need to show bold red warning text when a user selects a job type first and then enters the name.

Next I plan fix my first PR with popup. It fails many tests and most because of improper inclusion of jQuery library for pop-up. So I think this is the first thing that I will try to fix now.

Samat Davletshin

unread,
Jun 21, 2016, 8:57:58 AM6/21/16
to Jenkins Developers
Hello,
Since today I may post daily updates on my activity: results and plans. Those are likely will not be very relevant to those who are not involved in my project. However, I think that it may help to coordinate actions with mentors and others who are helping me with my tasks.

Today I mostly tested jenkins locally using mvn test.
First, I try to make my name validation changes to pass the tests. Since I changed only add-item.js in small ways, it seems that nothing should fail. However, mvn test did fail. Trying to resolve it I cloned a fresh copy of Jenkins, but it also failed mvn test on Jenkins war saying
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:copy (resgen) on project jenkins-war: Artifact has not been packaged yet.
So it seems like first I need to make mvn test pass without any changes  - something that surprisingly does not work right away.

Additionally, my pull request with name validation did not pass Jenkins check, however all tests passed.


tested locally,
agreed on meeting

Samat Davletshin

unread,
Jun 21, 2016, 4:36:49 PM6/21/16
to Jenkins Developers
Hello,

Today I will continue working with mvn test.
First, trying to make it pass tests successfully in freshly copied instance, and then with my changes of name validation.

I will also try to properly place javascript remodal library for popup.
Currently it uses jQuery. So that may need development of detached version.

Samat Davletshin

unread,
Jun 22, 2016, 3:25:24 PM6/22/16
to Jenkins Developers
Hello,

Today I tried to make mvn test work again, but it refused to do so anyway. After mvn clean install it still said that "Artifact has not been packaged yet." So it seems that I will abandon this for a while and do other tasks.

Happily, I managed to put remodal.css to the proper place and process it to jsbundles through gulpfile.js

Finally, I had a very good chat with Tom where he very well explained what should I do to make remodal-detached to use in project.

Samat Davletshin

unread,
Jun 22, 2016, 3:31:33 PM6/22/16
to Jenkins Developers
Next I plan to do mainly two things:

1) Make the detached version of remodal library using NPM as described by Tom.
I would be very happy to solve it since that would resolve many existing issues.

2) Make a presentation for the mid-term evaluation.
Tomorrow at 8 AM UTC I will have test run with my presentation with Kirill, Michael, and Oleg.

BTW, today I also submitted mid-term evaluation for GSOC required from students.

Samat Davletshin

unread,
Jun 23, 2016, 2:55:30 PM6/23/16
to Jenkins Developers
Hello,
Today I basically did only one thing: presentation for GSOC mid-term evaluation.
Earlier today I had one hour test run with Oleg, Kirill, and Michael.
They suggested me several changes. One of them is to remove text and add more pictures.
So now my presentation is mostly visual what is hopefully will be good with my explanation on top of it.

So here is the presentation. If there are comments left, I would be glad to hear them and do the changes.
https://docs.google.com/presentation/d/1pccA1IfSmBms4Ttnkp_fvuSQ1F5sYRIzGqRlex2coSo

Oleg Nenashev

unread,
Jun 23, 2016, 4:24:11 PM6/23/16
to JenkinsCI Developers
Nice slides! I'm looking forward to see the live demos tomorrow

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Samat Davletshin

unread,
Jun 24, 2016, 5:00:47 AM6/24/16
to Jenkins Developers
Hello!
Just now I had a presentation of my progress.
https://plus.google.com/events/cj09ur9ikphda1r5dmqu1cse9q8

That was pleasant to hear that my changes may be helpful.
However, in future I think I would like to spend a bit more time to talk with currently involved developers (Manuel) to make sure my changes are on point.

Thanks again for those who are joined.

Samat Davletshin

unread,
Jun 25, 2016, 11:16:59 AM6/25/16
to Jenkins Developers
Hello,
Today I was not working my projects and have a weekend of some rest. 
Since the last week was a bit busy I though it would be ok. 
Tomorrow I plan to continue fixing library usage.

Samat Davletshin

unread,
Jun 26, 2016, 6:19:13 AM6/26/16
to Jenkins Developers
Hello,
Today I will try to create a detached version of Remodal library, following instruction provided by Tom.
The result should be the same as Bootstrap-detached https://github.com/tfennelly/bootstrap-detached
Hopefully, that should resolve most of the problems and failures of the build tests.

Samat Davletshin

unread,
Jun 26, 2016, 7:14:40 PM6/26/16
to Jenkins Developers
Hello,
Today I made the npm module using npm install and publish commands.
I inserted remodal library js inside and now I can use it like 
var $remodal = require('remodal-detached').getRemodal();

Samat Davletshin

unread,
Jun 29, 2016, 6:58:03 AM6/29/16
to Jenkins Developers
Hello,
The fixes of first popup project are currently in progress. Tom helps a lot with it.
Yesterday I was mostly watching and reading about plugin development since I may have to create one for my next project.
The functionality to change help information will consist of front-end interface (with which I would like to start) and back-end functionality to save and use changed help information.
As discussed with Kirill, the is likely no need to rewrite existing help info. Since usually there is a need just to add some additional information, a separate text box me be used, as displayed below.

           http://i.imgur.com/zoSvB1G.gif
Auto Generated Inline Image 1

Samat Davletshin

unread,
Jun 29, 2016, 7:09:06 AM6/29/16
to Jenkins Developers
Today I would like to search for existing plugins to see if some of them have relevant functionality for me (UI changes at first).
And then try to make my own simple plugin looking at the existing one.
The UI changes should be simple by themselves (to add an editable text box).
So understanding of plugin structure will likely take more time.

Samat Davletshin

unread,
Jun 29, 2016, 12:33:33 PM6/29/16
to Jenkins Developers
Hello,
Today with help of Tom, I put remodal as a npm module as it should be.
Now the build passes all tests what is good.
I also @included remodal.css to add-item.less instead of processing it through gulp.

So I did not spend much time today on plugin part. I looked at UI plugins but did not find ones with similar functionality.
So if you know a plugin which may suit for my needs as example (to add interface elements to configuration page), please refer it to me.

Michael Neale

unread,
Jun 30, 2016, 4:44:34 AM6/30/16
to Jenkins Developers
So how does this work if there is existing help and someone wants to improve it? Do they get a blank screen to add additional information? 

Samat Davletshin

unread,
Jul 2, 2016, 4:22:47 PM7/2/16
to Jenkins Developers
Oh, sorry, Michael - I though I answered this.
It seems like the more important feature would be to be able to add additional information on top of existing one. Likely, most of the problems would be solved this way without the functionality to edit existing general help information. However, as I proposed, wiki-like crow-sourced information across all instances may change the general information. But I think the first is more important.
So initially if a user wants to add his additional information he will probably see an empty box with "edit" button above general information box.

Samat Davletshin

unread,
Jul 2, 2016, 4:41:51 PM7/2/16
to Jenkins Developers, Kirill Merkushev, Michael Neale, Tom Fennelly
CC Tom, Kirill, Michael.

Hello,

1. What do you think about weekly 30 minutes (or so) meeting for WebUI project? As discussed during last office hours, Oleg suggested that it could be good to meet weekly for the project. Especially since the general office hours will not be regularly conducted anymore. I think that could be an efficient way to discuss the project. Personally, I would like to try it since it seems like there can be more useful information for me, taking less of your time.
What do you think? If you agree, we can decide a time and day for those who will participate. I think I can adjust to basically any time.

2. As discussed in office hours also, I think it would better post my daily progress in a Google Doc rather than here. Here is the link
https://docs.google.com/document/d/1bImzlfHLIUpkQd23EzufkvRx7AzXt6Q-4Ic2Zz67NwE/edit?usp=sharing
I will try to write there daily about what I did every day. You can also comment there if you want.

Michael Neale

unread,
Jul 3, 2016, 10:55:18 PM7/3/16
to Samat Davletshin, Jenkins Developers, Kirill Merkushev, Tom Fennelly
That sounds good to me.

I have 30 min put aside weekly for the office hours on Wednesday I think 8AM UTC. Would that be too early ? (I think it's a little early for Tom, but you know you can reach him as needed)

Updates are OK to list or google doc. The list makes sense if it's progress or you want feature discussion but a Google doc is also good.

Oleg Nenashev

unread,
Jul 4, 2016, 5:44:07 AM7/4/16
to JenkinsCI Developers, Samat Davletshin, Kirill Merkushev, Tom Fennelly
I'd rather vote for having two meetings per week at least.

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Samat Davletshin

unread,
Jul 4, 2016, 7:15:02 AM7/4/16
to Jenkins Developers
I would be glad to meet as often as you want.
So you can decide on a convenient time(s) and I will attend.
In particular, yes, Wednesday 8 AM UTC works well for me.

Tom Fennelly

unread,
Jul 4, 2016, 8:06:54 AM7/4/16
to Jenkins Developers
I'm happy to meet for 30 mins, but Samat also knows he can contact me directly if he needs help on something. 8am in the morning might not be such a good time for me ;)

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/fk5deO_SszU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.

Samat Davletshin

unread,
Jul 9, 2016, 4:51:01 PM7/9/16
to Jenkins Developers, Michael Neale, Kirill Merkushev, Oleg Nenashev, Tom Fennelly
Hello,
Here is an outline for the design of help information edit.
https://docs.google.com/document/d/1mgZvxIgT-TzlzePOtHJNP6EzMQBCR5CHPPSJIdYjDSo/edit?usp=sharing

I would be glad to see your suggestions and details on this project.

Samat Davletshin

unread,
Jul 11, 2016, 1:20:02 PM7/11/16
to Jenkins Developers, Kirill Merkushev, Michael Neale
Hello,
So can we agree on 8AM UTC on Wednesdays for about 30 minute weekly meetings?
Michael and Kirill, are you ok with this time?

Michael Neale

unread,
Jul 12, 2016, 1:52:01 AM7/12/16
to Jenkins Developers, twil...@gmail.com, michae...@gmail.com
yes, we can, that is fine
Reply all
Reply to author
Forward
0 new messages