Jacob Peddicord

Recently in Ubuntu Category

More GSoC updates

| 3 Comments

It's been a while. Well, in internet years, anyway. I've made a lot of updates to jobservice and jobs-admin in the past few weeks:

  • service-level settings works
  • sporting a new UI
  • speed improvements
  • tons of bug fixes

I'll let the video do the talking (click the image):

jobs-admin-jul.png

Shoutout to Matthew Paul Thomas who provided the feedback for this new interface. :)

You can see service-level settings in action in the video. It's shown for apport and ufw. There's been a little confusion as to what this actually is, so here's a fancy diagram:

jobs-admin-jul-diagram.png

When you click that shiny "Job Settings" button, a lot of things happen. jobs-admin tells jobservice that settings were requested. jobservice then asks each of the backends if they have any settings on that particular service. Then it goes to SLS, which first looks up an XML file, and then uses that data to parse the actual configuration files. This is all compiled together by jobservice and sent back over DBus to jobs-admin, which renders some GTK widgets with this information. When a setting is changed, jobs-admin sends the changes to jobservice, which sends it back to wherever it came from.

SLS doesn't have anything to do with services themselves, just their configuration. When you start, stop, or look up information on a job, that is all handled by the appropriate backend.

Now, there is a PPA somewhere with these changes to play around with, but I won't link it here (though it isn't hard to find). I'd like to get more things together before there's a call for testing, but I won't prevent anyone from using it.

Also: I upgraded this site to Movable Type 5. Let me know if you notice anything broken. :)

jobs-admin & jobservice new feature: it works!

| 2 Comments

So this week I've hit a semi-awesome milestone with jobs-admin and jobservice: service management works!

On a Lucid system you're now able to start and stop not only System V services, but also Upstart 0.6 jobs.

jobs-admin-1.png

A demo video is available here.

SysV jobs are currently handled using system-tools-backends, though I may look into doing another implementation that doesn't have any external dependencies.

The Upstart 0.6 backend was pretty tricky: Upstart is able to turn the jobs on and off for us, but to disable them we need to edit the config files under /etc/init. It works, though it may need some more through testing to be sure it's all good.

The Upstart 0.10 backend has not been written yet, as 0.10 currently doesn't exist.

Service-level settings still need to be implemented. This will be tricky to do correctly, but I think it will be a valuable feature.

Finally, if you're feeling brave, branch lp:jobservice and lp:jobsadmin to give things a try, though don't expect everything to work as it should. I'll have a PPA ready within a week for testing once things have stabilized.

Bringing it Back

| 1 Comment

As you've all probably heard, Google Summer of Code "officially" began this previous Monday. I've been rather busy this week typing stuff up and getting the foundation set for the summer.

I'm working on the project titled "services-admin configuration and Upstart-ification," though the title is rather inaccurate. Trying to actually implement Upstart functionality proved to be quite a showstopper for system-tools-backends, which is what powers gnome-system-tools and in turn services-admin. So, we've decided to split off into a new project designed from the ground up to handle Upstart 0.6, the future 0.10, and existing compatibility with System V init scripts.

The project is comprised of two parts: jobs-admin, a new GTK+ frontend intended to replace the functionality of services-admin, and jobservice, a dedicated job & service management... service. Yeah, I'm not terribly creative with names. :)

The plan is to continue with the proposal submitted to Google and on the Ubuntu wiki, with the exception of replacing the existing gnome-system-tools and system-tools-backends with these new software pieces.

Here's a small mockup:

jobadmin-mockup.png

The main window on the left shouldn't feel too unfamiliar: select a service on the left, and view its status on the right. Clicking the Service Settings button will bring up the dialog on the right. This dialog is one of the special parts of the project: it adapts to whatever service you want to manage. The details for these "service-level settings" aren't finalized, but it will most likely read settings from a directory such as /usr/share/jobservice/sls in an i18n-able XML-based format. I think initially we'll ship some settings for common system services, though eventually it would be great to see packages shipping their own for easy administration.

So far I've gotten the main window to display a list of services. Doesn't sound like too much, but there's a lot of framework there for developing the rest of the features.

One of the key things I'm keeping in mind developing jobservice is that backends should be easily interchangeable. Currently there are three planned backends: sysv, upstart_0_6, and upstart_0_10. More than one backend can be in use at a time; on a Maverick system you'll likely have upstart_0_10 and sysv active. When systemd is made available, it should be pretty easy to write a backend for it.

We'll have PPAs available for Lucid and Maverick as soon as things start to stabilize. Eventually, jobs-admin and jobservice should be available in the Maverick archives. If things turn out well, perhaps you'd even see this in main or on the CD. (I'm not sure if I'm being too ambitious, here. ;) ) I'm going to write up a full specification which I should have finished tomorrow. If there's someone who can lend assistance in getting this approved, feel free to send me a ping.

There's a lot to do over the summer, but things are looking well on track. I'll keep this blog updated as things start to take shape.

Shoutout to Milan Bouchet-Valat, who maintains gnome-system-tools, for his help in determining the scope of what needed to be done (or not done, in this case) on g-s-t and for helping me realize what direction to take with the project.

And thanks to David Bensimon, who's [very patiently] mentoring me and this project and got me to wake up on time for UDS sessions. (Ah, timezones.) Looking forward to a great summer.

Feed identi.ca Twitter LinkedIn Launchpad OpenID