I totally agree with you.
I've started a mobile UI and noted how difficult is to
change some things, just because the layout is entirely locked
inside tables.
Although to "boil the ocean" should be a lot o work,
maybe a major rewrite of Jenkins interface (I liked the REST idea)
will bring much more responsiveness and reduce the bandwidth
traffic that Jenkins needs today.
Another great advantage is to adapt to distinct screens
and layouts much better and to add the possibility to override the
default stylesheet with plugins to fine tune.
I personally access Jenkins frequently via smartphone
and in my company it is shown in a big screen and we have some
difficult to lay out all jobs (we don't use extreme feedback
plugins). With a more semantic page design, based in CSS, it could
be more easy to adapt.
If you want to make it happens, I want to collaborate.
--
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.
For more options, visit https://groups.google.com/d/optout.
On 26.05.2014, at 21:08, Christopher Orr <ch...@orr.me.uk> wrote:
> You often hear people say "the Jenkins UI is bad", but it's usually said that there's a lack of concrete examples of *why* it's bad.
Wait, people complain but cannot provide concrete examples? Let me!
- Inserting a new 'first' build step above half a dozen existing ones is really cumbersome. As is reordering build steps in general, as they tend to be rather tall in some plugins. Hiding everything in Advanced sections by default (see above) also doesn't help when it's a bunch of 30-50 line scripts.
- Since elements have no obvious borders (unless dragging, or hovering the delete item), it's difficult to see where one element ends and another starts (Conditional Build Step, I'm looking at you!)
...
- The first run experience is pretty weird if you look at it with some Jenkins experience. It just dumps you onto an empty page telling you to create a job, while only a completely different page shows a severe warning (no security), and the global config requires changes (Jenkins URL, mail server, ...) or otherwise things won't work right.
But having seen a colleague of mine use the Jenkins API and AngularJS to
build some really nice (though narrowly focussed) Jenkins front-ends for
internal apps, dashboards and for customer use, I really like the idea
of building the Jenkins UI on top of its API.
As you may have seen, this is something Tyler did some work on during
FOSDEM last year. The basic prototype I saw at the time was pretty
decent, but as mentioned above and at the time, of course there's a
*lot* of backward- and plugin-compatibility to think about:
https://groups.google.com/forum/#!topic/jenkinsci-dev/dV680PGiI1Y
I totally agree with you.
I've started a mobile UI and noted how difficult is to change some things, just because the layout is entirely locked inside tables.
Although to "boil the ocean" should be a lot o work, maybe a major rewrite of Jenkins interface (I liked the REST idea) will bring much more responsiveness and reduce the bandwidth traffic that Jenkins needs today.
Another great advantage is to adapt to distinct screens and layouts much better and to add the possibility to override the default stylesheet with plugins to fine tune.
I personally access Jenkins frequently via smartphone and in my company it is shown in a big screen and we have some difficult to lay out all jobs (we don't use extreme feedback plugins). With a more semantic page design, based in CSS, it could be more easy to adapt.
--
On 05/26/2014 03:54 PM, Tom Fennelly wrote:
> Hi guys.
>
> I've just started looking into ways in which we can "refresh" the look
> and feel of the Jenkins UI, as well as looking at tackling some of the
> main usability issues.
You often hear people say "the Jenkins UI is bad", but it's usually said
that there's a lack of concrete examples of *why* it's bad. So, just
out of curiosity, is there a list somewhere of the main usability issues
that you've been working on?
> What I've experimented with so far:
>
> 1. Tweaking the main layout in
> core/src/main/resources/lib/layout/layout.jelly (and added some CSS
> to style.css). Everything was layed out with tables, so I changed
> that to use divs instead, allowing us to more easily do things like
> make the sidebar disappear on small screens (if that was a good
> idea) etc etc. Here's a screenshot of
> that: https://www.dropbox.com/s/vngs5jjailatanq/Screenshot%202014-05-26%2012.49.31.png
> 2. Modified the main project/job configuration page, in an effort to
> make it less cluttered, by adding accordions for the different
> config sections. The only way I found I could do this was to wire
> in some javascript to manipulate the page post-rendering. Kohsuke
> says there's a way of doing the bulk of the DOM manipulation within
> Jelly templates, but I failed to work that one out yet - I'm sure it
> will be "obvious" after I see it :) Not sure if accordions are the
> correct choice. Here's a screenshot of what it looks
> like: https://www.dropbox.com/s/wsy96r1czhzhy5z/Screenshot%202014-05-26%2012.54.39.png
Nice. That job config is looking good :)
> After a few brief conversations with some of my colleagues at CloudBees
> (Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most
> "doable" approach for now is to stick with making changes to what's
> there right now i.e. jelly templates, javascript and CSS. We also
> talked (not in detail) about the possibility of working towards more
> modern technologies and approaches e.g. a Single Page App using the
> Jenkins REST API Vs the current server-side approach with Stapler and
> Jelly. To do that now, however, seems a bit like trying to "boil the
> ocean" (quoting one of the guys there). What do you guys think?
I guess it depends what the goal is. If it's just "refreshing the UI",
then continuing with the changes so far and perhaps building on some of
the nice existing CSS themes out there would be reasonable, e.g.
https://github.com/Dakota628/jenkins-clean-theme
But having seen a colleague of mine use the Jenkins API and AngularJS to
build some really nice (though narrowly focussed) Jenkins front-ends for
internal apps, dashboards and for customer use, I really like the idea
of building the Jenkins UI on top of its API.
As you may have seen, this is something Tyler did some work on during
FOSDEM last year. The basic prototype I saw at the time was pretty
decent, but as mentioned above and at the time, of course there's a
*lot* of backward- and plugin-compatibility to think about:
https://groups.google.com/forum/#!topic/jenkinsci-dev/dV680PGiI1Y
Glad to see others coming up with this topic again!We have talked about this on many occasions and some work has been done in a separate branch too:In JIRA we also created a special component (ui-changes) to keep track of all this: https://issues.jenkins-ci.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=project+%3D+Jenkins+and+component+%3D+ui-changes&runQuery=true&clear=true…but unfortunate all/most the effort which was put into any attempts of changing the UI of Jenkins has stopped at some point. I think the biggest problem really is to find a common agreement on anything - there is always someone who does not like it.
Although I agree, the current implementation does its job and most of the people get a long with (maybe just because they have not seen anything else yet) - I absolutely think the look and feel is way off what a user can/does expect nowadays. In fact I know of a couple of teams which have chosen an other CI server then Jenkins just because of the UI (e.g. TeamCity) - I also think Jenkins has by far more capabilities then e.g. TeamCity, but not everyone needs the more advanced plugins/features/extensionpoints and these users can happily choose a nicer looking CI server (I would too).
Also the fact that there are so many different approaches on changing the UI tells me that there is something we should improve.Some more examples- https://github.com/djonsson/jenkins-atlassian-theme -> http://test.do/ (making Jenkins look like bamboo)...As a reference, there are also the notes we made about the discussions we had at another FOSDEM: https://wiki.jenkins-ci.org/display/JENKINS/UI+Enhancements
On Monday, May 26, 2014 8:08:28 PM UTC+1, Christopher wrote:As you may have seen, this is something Tyler did some work on duringFOSDEM last year. The basic prototype I saw at the time was pretty
decent, but as mentioned above and at the time, of course there's a
*lot* of backward- and plugin-compatibility to think about:
https://groups.google.com/forum/#!topic/jenkinsci-dev/dV680PGiI1YThanks for pointing me at this. I'll ping Tyler and ask him to pitch in. In some ways I feel that this might be the only real way to make meaningful usability changes to Jenkins. Maybe we could replace parts of the UI with a SPA ... do it bit-by-bit.
The biggest challenge to the API work IMO is that it's currently not RESTful,
and is quite difficult to make RESTful in a way that a Backbone collection can
easily consume from.
Part of the challenge is that Jenkins' datamodel is much more of a tree than
most front-end toolkits are familiar with, but when you add added functionality
from the plugins, modeling becomes extra tricky.
I'm still of the opinion that a simple Backbone app + basic REST API exposing
jobs, builds, basic details, would be more than enough for a large percentage
of use-cases. Putting my code where my mouth is, isn't something I've had time
for unfortunately.
- R. Tyler Croy
On 05/26/2014 06:54 AM, Tom Fennelly wrote:
1. Jelly + Stapler are not the easiest to work with. At least I've2. What will be the effect on plugins of changing project config
found it quite difficult to figure out where to make changes.
Sometimes it was obvious.... other times it was anything but e.g.
tweaking the project config page to get Jelly to create a series of
<table> elements (Vs one uber <table>). In the end... I found it
easier to do it post-rendering via Javascript, which is not good imo.3. Use of <table> for layout seems to be quite popular Vs using <div> +
layout. I already see some strange behaviour e.g. I added an
"Execute shell" build step... it works fine in the "uber
<table>" layout, but is screwed up after I manipulate it - prob easy
to fix, but still an indication that some of the plugins are
sensitive to changes in their surroundings.
CSS.
Let's work together on this --- getting rid of <table>s in favor of <div>s. It sounds like that's a necessary step to enable other people to do more aggressive experiments.
The config page layout is the most complex part of Jenkins views by far. I think I can speed you up.
This is also an area where plugin config files are shielded from the raw HTML tags through taglibs, and our control over the lower Jelly layer allows us to do some backward compatibility magic if need be.
So I'm still somewhat optimistic about this. And if this exercise makes me appreciate the problems in Stapler, that's good for me, too.
Can we schedule a two hour window (ideally your 5-7pm time which is my 9-11am time) that we do this in http://jenkins-ci.org/hangout? Perhaps other people might be interested in chiming in.
One thing that's missing from the list in this thread so far is, more dynamic content update in real time without page reloading. I think this is one of the concrete feedbacks I hear when people talk about Jenkins UI.
After a few brief conversations with some of my colleagues at CloudBees
(Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most
"doable" approach for now is to stick with making changes to what's
there right now i.e. jelly templates, javascript and CSS. We also
talked (not in detail) about the possibility of working towards more
modern technologies and approaches e.g. a Single Page App using the
Jenkins REST API Vs the current server-side approach with Stapler and
Jelly. To do that now, however, seems a bit like trying to "boil the
ocean" (quoting one of the guys there). What do you guys think?
So I hope there's an appetite/interest in this and I hope people will
let us know where they would like to see this go (or not, as the case
may be). And of course, if anyone is interested in getting involved in
a "hands-on" way, then that would be even better :) I think the next
steps are for me to gather peoples opinions and formulate an actionable
plan that people can see and comment on if they want to.
For example, the list view should be updating itself all the time based on what's going on.
--
Kohsuke Kawaguchi | CloudBees, Inc. | http://cloudbees.com/
Try Jenkins Enterprise, our professional version of Jenkins
--
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-dev+unsubscribe@googlegroups.com.
From: Jesse Glick <jgl...@cloudbees.com>
To: jenkin...@googlegroups.com
Sent: Wednesday, May 28, 2014 5:49 PM
Subject: Re: Refreshing the Jenkins UI
--
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-dev+unsub...@googlegroups.com.
--
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/zDaX4yiWLLw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
We have been using Jenkins to build bioinformatic data and image processing and workflows and the current UI has been a big challenge!None of the lab scientists using the Jenkins-based workflow tool is familiar with CI and Dev life cycle so hiding many of the Dev-centric UI elements and simplifying the interface would be a great improvement.YES, the first element I would love to hide is the side bar menu, so I can leave enough space for the job submission form!
It may also be worth considering Server Sent Events — basically one-way "push" from the server, without all the handshaking and protocol upgrade fun of WebSockets. Could be useful if clients are just listening for server updates, without sending anything (as is generally the case today).
Last week I wrote a quick experimental plugin to stream log events as they happen via SSE to remote JavaScript clients for any running build; I was surprised how simple it was to build..
(Though I just noticed that it has less support than WebSockets (thanks, Microsoft): http://caniuse.com/eventsource)
Chris
AFAIK... any proxy/gateway between the websocket client and server needs to be pretty much websocket aware. SSE would seem like a perfect fit for Jenkins since the client is listening only (not sending back to the server - could implement that on top anyway if needed). As far as I know SSE is a fancy long poll/comet style protocol and so would require the same considerations re number of concurrent users.
--
On Thu, May 29, 2014 at 5:26 PM, Tom Fennelly <tom.fe...@gmail.com> wrote:
AFAIK... any proxy/gateway between the websocket client and server needs to be pretty much websocket aware. SSE would seem like a perfect fit for Jenkins since the client is listening only (not sending back to the server - could implement that on top anyway if needed). As far as I know SSE is a fancy long poll/comet style protocol and so would require the same considerations re number of concurrent users.
--
Happy to be proven wrong but I expect that even for the heaviest users of jenkins (masters) - the number of concurrent users couldn't be more than in the hundreds - mostly that will work without any web framework contortions (happy to be proven wrong).
The biggest risk for websocket, as I see it, is the temptation to built in a real time chat client, and perhaps webrtc video conferencing (you broke the build - someone can instantly berate you via webrtc video feed). Terrible idea forget I said it ;)
Hi! I am the author of Doony, a skin on top of Jenkins that's been downloaded/used by developers at EBay, Instagram, Netflix, the BBC, Panic, and other web companies, and starred by over 600 developers on Github. We also use it extensively at Twilio, where I worked until very recently.
Here are the problems I set out to solve with Doony:
- Jenkins by default has small click targets, for forms, buttons, and links.. Per Fitts Law, small click targets take longer to locate with the mouse and make the UI seem more frustrating. In addition some users with poor eyesight or motor control have difficulty with reading/selecting small text. I made the buttons and links much bigger, and added padding around links so a mis-click (or tap, on a iPhone) would probably still take you where you wanted to go.
- The most common actions were not easily available. Specifically, 1) from a job's homepage, I wanted to view the console output of the latest build, and 2) I wanted to be able to trigger new builds from any page on a job.
- Various small UI changes - I felt that a lot of the icons (weather metaphors etc) did not add much value so I killed them, and the console could benefit from looking more like a console.
Here are the most frustrating problems I ran into:
- When writing a theme, it's difficult to select elements with CSS. For example, here's the rule I'm using to style the "Console Output" - hopefully nothing else in pre-1.538 Jenkins uses pre tags: https://github.com/kevinburke/doony/blob/master/src/doony.scss#L649. The bottom line is, if it's easier to select elements/skin, it's easier to get more experiments in UI and more data about what works and what doesn't.
NB: This has gotten better, and I've also submitted some PR's to add classes/ID's to make theming easier - see https://github.com/jenkinsci/jenkins/pulls/kevinburke?direction=desc&page=1&sort=created&state=closed.
- Some things don't have API's. For example, creating a new build doesn't return the build number, so you need to GET the job list to get the current build number and just hope the build you created will be the next one. See for example https://github.com/kevinburke/doony/blob/master/src/theme.js#L274. Similarly, there's no API for retrieving the console output. There's no API for retrieving global settings, which would be really nice and allow people to set items like the text in the title bar, or the theme's colors, or any number of things. At Twilio we routinely wrote Python scripts that simulate UI requests to trigger builds etc.
Basically with a UI, my guiding principle is make the things you do the most often the most visible, and the job homepage and the sidebar aren't great at this currently. I know people use Jenkins in a lot of different ways, but some user studies or testing could probably reveal the two or three most frequent use cases, and then the job page / instance page could be designed around those. One big win I think would be to move the console output right onto the homepage.
Finally, a few notes about specific points in this thread.
- I'm not sure about bundling websockets/a single page app with a UI redesign, for a few reasons. For one, it sounds like several large UI rewrites have failed in the past, which suggests that small, incremental changes might have a better chance of succeeding than a single bundle updating a whole lot of things. For example, one week you make the forms have round corners, add 10px padding between them and and a size 14 font, the next week you make the buttons bigger, the next week you add an API for global settings, etc. There's a lot that can be done to improve the UI/usability without necessarily making people upset.
Second, I use Travis CI for building most of my Github projects, but one of my biggest frustrations with it is its occasional ability to pin a CPU, render a completely blank page, render nonsense, become unresponsive, etc. Travis CI is a single-page app. The failure modes of Javascript are legion, especially for people on flaky connections, and maybe not as well understood as the combination of HTML/CSS/occasional AJAX requests, for developers. Jenkins' reliability in delivering a UI should be considered a core strength.
- I didn't have too many problems with Jelly, despite never using it before. However, I did mistakenly edit one template and assume my job was done, when in fact I needed to edit an additional template to make the changes I wanted. The current level of abstraction makes things a little difficult :) Perhaps a smaller number of larger files would be easier to edit.
- I also have not had too many problems with content not updating dynamically; it does so in the places where I expect it to (console output, triggering builds, though maybe not as quickly as I would like).
Thanks,Kevin
PS: If someone from Cloudbees would be interested in helping me get a Doony demo running fulltime on Cloudbees, I would be very grateful.
Hi! I am the author of Doony, a skin on top of Jenkins that's been downloaded/used by developers at EBay, Instagram, Netflix, the BBC, Panic, and other web companies, and starred by over 600 developers on Github. We also use it extensively at Twilio, where I worked until very recently.
Second, I use Travis CI for building most of my Github projects, but one of my biggest frustrations with it is its occasional ability to pin a CPU, render a completely blank page, render nonsense, become unresponsive, etc. Travis CI is a single-page app. The failure modes of Javascript are legion, especially for people on flaky connections, and maybe not as well understood as the combination of HTML/CSS/occasional AJAX requests, for developers. Jenkins' reliability in delivering a UI should be considered a core strength.
PS: If someone from Cloudbees would be interested in helping me get a Doony demo running fulltime on Cloudbees, I would be very grateful.
<mailto:jenkinsci-dev+unsub...@googlegroups.com>.an email to jenkinsci-dev+unsubscribe@googlegroups.com
--
Kohsuke Kawaguchi | CloudBees, Inc. | http://cloudbees.com/
Try Jenkins Enterprise, our professional version of Jenkins
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
On Friday, May 30, 2014 2:51:15 AM UTC+10, Kevin Burke wrote:
Second, I use Travis CI for building most of my Github projects, but one of my biggest frustrations with it is its occasional ability to pin a CPU, render a completely blank page, render nonsense, become unresponsive, etc. Travis CI is a single-page app. The failure modes of Javascript are legion, especially for people on flaky connections, and maybe not as well understood as the combination of HTML/CSS/occasional AJAX requests, for developers. Jenkins' reliability in delivering a UI should be considered a core strength.
Never thought of that, but that is a good point. I suspect a parallel REST/SPA app will probably go on, but for now, I think this is a great (probably best) place to start?
I'd love to see us bring Kevin at al's Doony work back into Jenkins. If the community (and Kevin) were agreeable to that, I'd be more than happy to work on it. I guess we'd need to audit the changes made in Donny and work out any licensing issues if there are any.
Hi guys.I've just started looking into ways in which we can "refresh" the look and feel of the Jenkins UI, as well as looking at tackling some of the main usability issues. I've really only started, but have committed a small bit of code to a branch on github at https://github.com/tfennelly/jenkins/tree/ui-refresh. As you might notice... Daniel Beck has already posted some good comments/feedback on the commit.What I've experimented with so far:
- Tweaking the main layout in core/src/main/resources/lib/layout/layout.jelly (and added some CSS to style.css). Everything was layed out with tables, so I changed that to use divs instead, allowing us to more easily do things like make the sidebar disappear on small screens (if that was a good idea) etc etc. Here's a screenshot of that: https://www.dropbox.com/s/vngs5jjailatanq/Screenshot%202014-05-26%2012.49.31.png
- Modified the main project/job configuration page, in an effort to make it less cluttered, by adding accordions for the different config sections. The only way I found I could do this was to wire in some javascript to manipulate the page post-rendering. Kohsuke says there's a way of doing the bulk of the DOM manipulation within Jelly templates, but I failed to work that one out yet - I'm sure it will be "obvious" after I see it :) Not sure if accordions are the correct choice. Here's a screenshot of what it looks like: https://www.dropbox.com/s/wsy96r1czhzhy5z/Screenshot%202014-05-26%2012.54.39.png
The above commit obviously breaks things e.g. the breadcrumbs + some of the styling is screwed up (I added Twitter bootstrap, causing the css's to clash). What I've done so far is really just hacking to see what we could do. I'm keen to hear the opinions of the community... what people thing we should concentrate on... what should we avoid... what are the risks etc etc. I'm aware there is some prior art in this area e.g. OHTAKE Tomohiro's work, the Simple Theme Plugin and others.General comments/challenges/risks, as I see it:
- Jelly + Stapler are not the easiest to work with. At least I've found it quite difficult to figure out where to make changes. Sometimes it was obvious.... other times it was anything but e.g. tweaking the project config page to get Jelly to create a series of <table> elements (Vs one uber <table>). In the end... I found it easier to do it post-rendering via Javascript, which is not good imo.
- What will be the effect on plugins of changing project config layout. I already see some strange behaviour e.g. I added an "Execute shell" build step... it works fine in the "uber <table>" layout, but is screwed up after I manipulate it - prob easy to fix, but still an indication that some of the plugins are sensitive to changes in their surroundings.
- Use of <table> for layout seems to be quite popular Vs using <div> + CSS.
- New more "modern" icons?
After a few brief conversations with some of my colleagues at CloudBees (Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most "doable" approach for now is to stick with making changes to what's there right now i.e. jelly templates, javascript and CSS. We also talked (not in detail) about the possibility of working towards more modern technologies and approaches e.g. a Single Page App using the Jenkins REST API Vs the current server-side approach with Stapler and Jelly. To do that now, however, seems a bit like trying to "boil the ocean" (quoting one of the guys there). What do you guys think?So I hope there's an appetite/interest in this and I hope people will let us know where they would like to see this go (or not, as the case may be). And of course, if anyone is interested in getting involved in a "hands-on" way, then that would be even better :) I think the next steps are for me to gather peoples opinions and formulate an actionable plan that people can see and comment on if they want to.Regards,Tom.
I'd love to see us bring Kevin at al's Doony work back into Jenkins. If the community (and Kevin) were agreeable to that, I'd be more than happy to work on it. I guess we'd need to audit the changes made in Donny and work out any licensing issues if there are any.I definitely think this great idea. Devs at organization absolutely love doony theme, we had to make minor changes like swapping out red/green icons because color blind people were having hard time distinguishing between them.
But overall it has been great.Since most of the time people spend most of their time in jenkins looking at console output, It would be nice to give it a little facelift by1. Adding linkable line numbers like this2. Foldable sections, this plugin achieves this somewhat but it leaves a lot to be desired3. Colors in console, something like thisAll of out projects manage their configuration through .ci.yml files so we dont usually run into usability issues with configure page.- Surya
On Monday, May 26, 2014 8:54:21 AM UTC-5, Tom Fennelly wrote:Hi guys.I've just started looking into ways in which we can "refresh" the look and feel of the Jenkins UI, as well as looking at tackling some of the main usability issues. I've really only started, but have committed a small bit of code to a branch on github at https://github.com/tfennelly/jenkins/tree/ui-refresh. As you might notice... Daniel Beck has already posted some good comments/feedback on the commit.What I've experimented with so far:
- Tweaking the main layout in core/src/main/resources/lib/layout/layout.jelly (and added some CSS to style.css). Everything was layed out with tables, so I changed that to use divs instead, allowing us to more easily do things like make the sidebar disappear on small screens (if that was a good idea) etc etc. Here's a screenshot of that: https://www.dropbox.com/s/vngs5jjailatanq/Screenshot%202014-05-26%2012.49.31.png
- Modified the main project/job configuration page, in an effort to make it less cluttered, by adding accordions for the different config sections. The only way I found I could do this was to wire in some javascript to manipulate the page post-rendering. Kohsuke says there's a way of doing the bulk of the DOM manipulation within Jelly templates, but I failed to work that one out yet - I'm sure it will be "obvious" after I see it :) Not sure if accordions are the correct choice. Here's a screenshot of what it looks like: https://www.dropbox.com/s/wsy96r1czhzhy5z/Screenshot%202014-05-26%2012.54.39.png
The above commit obviously breaks things e.g. the breadcrumbs + some of the styling is screwed up (I added Twitter bootstrap, causing the css's to clash). What I've done so far is really just hacking to see what we could do. I'm keen to hear the opinions of the community... what people thing we should concentrate on... what should we avoid... what are the risks etc etc. I'm aware there is some prior art in this area e.g. OHTAKE Tomohiro's work, the Simple Theme Plugin and others.General comments/challenges/risks, as I see it:
- Jelly + Stapler are not the easiest to work with. At least I've found it quite difficult to figure out where to make changes. Sometimes it was obvious.... other times it was anything but e.g. tweaking the project config page to get Jelly to create a series of <table> elements (Vs one uber <table>). In the end... I found it easier to do it post-rendering via Javascript, which is not good imo.
- What will be the effect on plugins of changing project config layout. I already see some strange behaviour e.g. I added an "Execute shell" build step... it works fine in the "uber <table>" layout, but is screwed up after I manipulate it - prob easy to fix, but still an indication that some of the plugins are sensitive to changes in their surroundings.
- Use of <table> for layout seems to be quite popular Vs using <div> + CSS.
- New more "modern" icons?
After a few brief conversations with some of my colleagues at CloudBees (Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most "doable" approach for now is to stick with making changes to what's there right now i.e. jelly templates, javascript and CSS. We also talked (not in detail) about the possibility of working towards more modern technologies and approaches e.g. a Single Page App using the Jenkins REST API Vs the current server-side approach with Stapler and Jelly. To do that now, however, seems a bit like trying to "boil the ocean" (quoting one of the guys there). What do you guys think?So I hope there's an appetite/interest in this and I hope people will let us know where they would like to see this go (or not, as the case may be). And of course, if anyone is interested in getting involved in a "hands-on" way, then that would be even better :) I think the next steps are f
--
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.
For more options, visit https://groups.google.com/d/optout.
All of out projects manage their configuration through .ci.yml files so we dont usually run into usability issues with configure page.
2. Foldable sections, this plugin achieves this somewhat but it leaves a lot to be desired3. Colors in console, something like this
I'd love to see us bring Kevin at al's Doony work back into Jenkins. If the community (and Kevin) were agreeable to that, I'd be more than happy to work on it. I guess we'd need to audit the changes made in Donny and work out any licensing issues if there are any.
I definitely think this great idea. Devs at organization absolutely love doony theme, we had to make minor changes like swapping out red/green icons because color blind people were having hard time distinguishing between them. But overall it has been great.
Since most of the time people spend most of their time in jenkins looking at console output, It would be nice to give it a little facelift by1. Adding linkable line numbers like this2. Foldable sections, this plugin achieves this somewhat but it leaves a lot to be desired3. Colors in console, something like this
All of out projects manage their configuration through .ci.yml files so we dont usually run into usability issues with configure page.
- Surya
Let me attempt to prove you wrong,
We are running a slight fork of Jenkins where we have removed the queue widget and the ajax call from the buildhistory so it doesn’t list queued builds on job pages. When we did that the UI responsiveness got improved a lot, I don’t know exactly how many simultaneous human users we have I think they are in the hundreds, but many of them have several tabs open (luckily chrome seems to pause javascript on on none visible tabs). But we saw that all our http threads in tomcat were occupied with serving and filtering the queue and these just kept piling up, dialing up the number of http threads in tomcat only delayed the inevitable. This was due to a synchronization block in the queue and things has been done in core to mitigate this in newer versions, but we still remove it since one less http request per user per second still provides better responsiveness.
Also all users are not “human users”, we had to redesign some of our tool integrations that uses the Jenkins HTTP API when we started to use Jenkins with lazy loading of builds, because again, http requests that was waiting for all builds to load for a job occupied all the http threads during peak hours and none was left to serve the humans.
So my personal experience is to not have long running http calls for big Jenkins installs, even if the user base is “in the hundreds”.
Someone told me that fronting Jenkins/tomcat with ngix would solve these problems. I haven’t tried it yet, does anyone have any experience with it?
Robert Sandell
Software Tools Engineer - SW Environment and Product Configuration
Sony Mobile Communications
--
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/zDaX4yiWLLw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
As suggested by others, I think it would be a good idea to bite off smaller chunks where we can so as to make progress. So, maybe we could start by adding Doony and then look at making some of the above improvements, right?
Hi guys.I've just started looking into ways in which we can "refresh" the look and feel of the Jenkins UI, as well as looking at tackling some of the main usability issues. I've really only started, but have committed a small bit of code to a branch on github at https://github.com/tfennelly/jenkins/tree/ui-refresh. As you might notice... Daniel Beck has already posted some good comments/feedback on the commit.What I've experimented with so far:
- Tweaking the main layout in core/src/main/resources/lib/layout/layout.jelly (and added some CSS to style.css). Everything was layed out with tables, so I changed that to use divs instead, allowing us to more easily do things like make the sidebar disappear on small screens (if that was a good idea) etc etc. Here's a screenshot of that: https://www.dropbox.com/s/vngs5jjailatanq/Screenshot%202014-05-26%2012.49.31.png
- Modified the main project/job configuration page, in an effort to make it less cluttered, by adding accordions for the different config sections. The only way I found I could do this was to wire in some javascript to manipulate the page post-rendering. Kohsuke says there's a way of doing the bulk of the DOM manipulation within Jelly templates, but I failed to work that one out yet - I'm sure it will be "obvious" after I see it :) Not sure if accordions are the correct choice. Here's a screenshot of what it looks like: https://www.dropbox.com/s/wsy96r1czhzhy5z/Screenshot%202014-05-26%2012.54.39.png
The above commit obviously breaks things e.g. the breadcrumbs + some of the styling is screwed up (I added Twitter bootstrap, causing the css's to clash). What I've done so far is really just hacking to see what we could do. I'm keen to hear the opinions of the community... what people thing we should concentrate on... what should we avoid... what are the risks etc etc. I'm aware there is some prior art in this area e.g. OHTAKE Tomohiro's work, the Simple Theme Plugin and others.General comments/challenges/risks, as I see it:
- Jelly + Stapler are not the easiest to work with. At least I've found it quite difficult to figure out where to make changes. Sometimes it was obvious.... other times it was anything but e.g. tweaking the project config page to get Jelly to create a series of <table> elements (Vs one uber <table>). In the end... I found it easier to do it post-rendering via Javascript, which is not good imo.
- What will be the effect on plugins of changing project config layout. I already see some strange behaviour e.g. I added an "Execute shell" build step... it works fine in the "uber <table>" layout, but is screwed up after I manipulate it - prob easy to fix, but still an indication that some of the plugins are sensitive to changes in their surroundings.
- Use of <table> for layout seems to be quite popular Vs using <div> + CSS.
- New more "modern" icons?
After a few brief conversations with some of my colleagues at CloudBees (Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most "doable" approach for now is to stick with making changes to what's there right now i.e. jelly templates, javascript and CSS. We also talked (not in detail) about the possibility of working towards more modern technologies and approaches e.g. a Single Page App using the Jenkins REST API Vs the current server-side approach with Stapler and Jelly. To do that now, however, seems a bit like trying to "boil the ocean" (quoting one of the guys there). What do you guys think?
So I hope there's an appetite/interest in this and I hope people will let us know where they would like to see this go (or not, as the case may be). And of course, if anyone is interested in getting involved in a "hands-on" way, then that would be even better :) I think the next steps are for me to gather peoples opinions and formulate an actionable plan that people can see and comment on if they want to.Regards,Tom.
--
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.
For more options, visit https://groups.google.com/d/optout.
Hi,I like the idea.Talking about plugins... The dashboard-view-plugin requires the tables that are currently created by Jenkins in order to work (i.e. I add <tr> without a table because I am already rendering inside a table).Just changing to divs will probably break the plugin.However the good news is that I have a version of the dashboard-view-plugin using divs internally instead of tables (it was created a long time ago and might need updated). The experiment went well but because the divs are inside tables created by Jenkins, they sometimes are not rendered correctly... that's why I haven't submitted it yet.Should this idea move forward, I may update that version of the plugin to remove the dependency on tables created and see how it goes with the new look and feel.Marco
All the icons in Jenkins are hardcoded as images in the Jelly scripts. We were hoping to move away from this (ala Doony) by using CSS + some Javascript (for the animation). Seems like this is not possible to do without getting into screen-scraping hacks because the <img>s are used out in plugins too (not just in the core Jenkins code) e.g. the maven plugin.I guess this means we're stuck with using images Vs CSS +Javascript ?
--
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/zDaX4yiWLLw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
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.
I think this would encourage plugin maintainers to migrate to the
new CSS resources (because their plugins will have the old style
by default), while at the same time provide an interm option for
people to have the new style throughout their Jenkins install.
wdyt?
--
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/zDaX4yiWLLw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I created a simple plunker to try test browser compatibility for the specific CSS3 animation I'm looking to use to (to replace the JS version from Doony).If you have a few mins, please browse to the plunker using whatever browsers you have and filling in the form: http://run.plnkr.co/0tu9emUDQCEK5n1i/
--
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.
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/zDaX4yiWLLw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
--
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.
For more options, visit https://groups.google.com/d/optout.
--
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.
For more options, visit https://groups.google.com/d/optout.
Posting back here again to solicit feedback.We've already pushed some styling tweaks into upstream master. We don't think they'll cause too much controversy (thanks to Kevin Burke):
- Updated buttons styles
- Friendlier/newer form control styles.
What might be the cause of some debate are the changes in PR 1289, where we've:
- Redone the main Jenkins layout to use <div>s (as opposed to <table>s).
- Restyled the header.
- Sticky footer
- More responsive to media display:
- Horizontal flow rolls over to a single column on narrower displays.
- We toyed with hiding some things on smaller displays but decided to undo that for now and tackle it separately.
We've setup a temp instance here: http://166.78.9.27:8080/ where you can see all these changes. Obviously... please don't create big heavy-duty jobs + please delete any jobs when you're done.If people are OK with these changes we'd like to push them upstream ASAP.
--
Is there anything that can be done about the unaligned buttons that often appear?
--
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.
For more options, visit https://groups.google.com/d/optout.
Hi,Just to clarify, what do you mean with "upstream"? Is it the main Jenkins branch or is there a new branch for this changes?
Have you tried any plugins that rely on tables to see what happens? How do we coordinate for updating plugins to get work without parent tables?
Thanks very much for hosting that server. I ran the git-client-plugin from the new user interface and found no issues with Chrome, Firefox, or Internet Explorer on Windows 8.1.When I displayed the same job on Chrome on my Android phone, it used too small a font for me to read easily, and it seemed to widen the build executor status column to the full width of the browser. That was surprising, but I assume that since smaller displays will be tackled separately, that is an expected condition.Thanks!Mark Waite
The issue has been around for a while, I just mentioned it since there were updates to the layout.
--
The issue has been around for a while, I just mentioned it since there were updates to the layout.
Hi guys.I've just started looking into ways in which we can "refresh" the look and feel of the Jenkins UI, as well as looking at tackling some of the main usability issues. I've really only started, but have committed a small bit of code to a branch on github at https://github.com/tfennelly/jenkins/tree/ui-refresh. As you might notice... Daniel Beck has already posted some good comments/feedback on the commit.What I've experimented with so far:
- Tweaking the main layout in core/src/main/resources/lib/layout/layout.jelly (and added some CSS to style.css). Everything was layed out with tables, so I changed that to use divs instead, allowing us to more easily do things like make the sidebar disappear on small screens (if that was a good idea) etc etc. Here's a screenshot of that: https://www.dropbox.com/s/vngs5jjailatanq/Screenshot%202014-05-26%2012.49.31.png
- Modified the main project/job configuration page, in an effort to make it less cluttered, by adding accordions for the different config sections. The only way I found I could do this was to wire in some javascript to manipulate the page post-rendering. Kohsuke says there's a way of doing the bulk of the DOM manipulation within Jelly templates, but I failed to work that one out yet - I'm sure it will be "obvious" after I see it :) Not sure if accordions are the correct choice. Here's a screenshot of what it looks like: https://www.dropbox.com/s/wsy96r1czhzhy5z/Screenshot%202014-05-26%2012.54.39.png
The above commit obviously breaks things e.g. the breadcrumbs + some of the styling is screwed up (I added Twitter bootstrap, causing the css's to clash). What I've done so far is really just hacking to see what we could do. I'm keen to hear the opinions of the community... what people thing we should concentrate on... what should we avoid... what are the risks etc etc. I'm aware there is some prior art in this area e.g. OHTAKE Tomohiro's work, the Simple Theme Plugin and others.General comments/challenges/risks, as I see it:
- Jelly + Stapler are not the easiest to work with. At least I've found it quite difficult to figure out where to make changes. Sometimes it was obvious.... other times it was anything but e.g. tweaking the project config page to get Jelly to create a series of <table> elements (Vs one uber <table>). In the end... I found it easier to do it post-rendering via Javascript, which is not good imo.
- What will be the effect on plugins of changing project config layout. I already see some strange behaviour e.g. I added an "Execute shell" build step... it works fine in the "uber <table>" layout, but is screwed up after I manipulate it - prob easy to fix, but still an indication that some of the plugins are sensitive to changes in their surroundings.
- Use of <table> for layout seems to be quite popular Vs using <div> + CSS.
- New more "modern" icons?
After a few brief conversations with some of my colleagues at CloudBees (Kohsuke, Jesse Glick, Mic Neale and others), it seems like the most "doable" approach for now is to stick with making changes to what's there right now i.e. jelly templates, javascript and CSS. We also talked (not in detail) about the possibility of working towards more modern technologies and approaches e.g. a Single Page App using the Jenkins REST API Vs the current server-side approach with Stapler and Jelly. To do that now, however, seems a bit like trying to "boil the ocean" (quoting one of the guys there). What do you guys think?So I hope there's an appetite/interest in this and I hope people will let us know where they would like to see this go (or not, as the case may be). And of course, if anyone is interested in getting involved in a "hands-on" way, then that would be even better :) I think the next steps are for me to gather peoples opinions and formulate an actionable plan that people can see and comment on if they want to.Regards,Tom.
Posting back here again to solicit feedback.