Archive for the ‘Work’ Category

Specfil-editor: changelog entries

Monday, September 4th, 2006

I’ve spent a few hours today hacking on the specfile editor after not touching it for the past week or so. Andrew’s made some great progress towards making it useful to real users, *shudder*. So I spent the afternoon implementing a simplistic ‘Create ChangeLog entry’ action. We’ll probably make this an extension to the ChangeLog plugin in the end, but for now being part of the specfile editor is good enough.

Here’s a short screencast of how it looks.

I’d love to hear what other people would find useful as part of the editor, this would be great to help us determine the direction for the near future.

Introducing an Eclipse spec-file editor

Wednesday, August 16th, 2006

A couple of weeks ago the guys in the Eclipse group in the office got together to try and hack together an initial version of a spec-file editor for Eclipse, and learn how to write editors for Eclipse in the process.

We spent a couple of hours on it and got it kinda working. It wasn’t really an editor because it didn’t have any extra editing features, but we did get some syntax highlighting done in addition to figuring out at a high level how Eclipse editors work.

Last week I spent some time fixing up our work on the editor. It still not much, but I have working and pretty nice looking syntax highlighting working right now. Take a look:

The squigly white line in the middle is my amazing artistic skills when combining 2 shots :) .

Now I’m trying to figure out how to do content outlining, and the next step after that would probably be formatting or simple error highlighting. In the slightly further future we can have things like content-assist, validation (a.k.a. not-so-simple error highlighting), validation with external tools like rpmlint, and other goodies.

A lot of these features require parsing spec files, which right now isn’t that easy. I haven’t found any source of information that have a precise/formal definition of spec-file syntax. Basically I want to know 2 things:

  • What are the rules that rpmbuild/rpmlint use for reading or validating a spec file.
  • Is there a library that I can interface to that would do this for me?

I thought initially that rpmlib would be able to do the parsing, but the docs I read on it suggest that that would be outside of rpmlib’s scope.

Any ideas out there?

P.S. you can check out the editor at pserver:anonymous@sourceware.org:/cvs/eclipse under the rpm module. (Tip paste the CVS string pserver…/eclipse into Eclipse’s new CVS repository wizard).

Behold the Genius

Monday, August 14th, 2006

Today at the end of another awesome work day as Red Hat interns, some of us sat down to crack these puzzles posted to Planet Classpath. It started out as me, Tony and Lillian. But then Andrew Cagney and Adam Jocksch also joined in. In the end I was the one to crack the last straw of the 12 ball puzzle. You can check out my answer as the comment to the blog post. I’m still trying to figure out a mathematical way to express why this is neccessarily the answer.

New ChangeLog features

Wednesday, June 21st, 2006

Kyu Lee, one of the new Interns we have in the Toronto Red Hat office, has been working on the ChangeLog plugin, trying to implement some new features.

He’s made great progress, and yesterday we pushed an update of eclipse-changelog 1.1.0 into both devel and the FC5 updates-testing repository. This version has a ChangeLog editor, which has nice color highlighting, and also allows you to jump to a file by Ctrl-Clicking it’s name in the ChangeLog. A modest, but very nice start. I think this plugin can become much more useful and usable with a very minimal amount of love. If you use Eclipse, give it a twirl.

PyDev Status (1.1.0)

Wednesday, June 21st, 2006

In the past few weeks I spent some time preparing patches that backport PyDev (the Eclipse Python plugin) from Java 1.5 to 1.4 so that it can be shipped in Fedora, since for some time now PyDev has been developed on Java 1.5. Last week I updated my patches to PyDev 1.1.0, which is the latest version that will support Eclipse 3.1.2, and so the latest version that can go into FC5. Last week version 1.2.0 was also released, which is the first version that will be targeted for Eclipse 3.2, which is what will get into FC6.

I spent some time last week trying to make PyDev has sane defaults out of the box for settings like the path of the Python and Jython interpreters, I got something sort of working, but it wasn’t quite there yet. I’m planning to push PyDev into Fedora Extras in FC6, since it will now have an optional dependency on Jython. But I’m wondering whether I should release 1.1.0 as a Core 5 update, because it really is a *huge* update in stability and functionality over the version we currently we have in. I’ll probably try to make a test RPM that has the Jython bits ripped out tomorrow and push it into updates-testing, and see what kind of reaction I get.

Over the weekend or maybe next week I’ll probably prepare the PyDev 1.2.0 patch and a corresponding SRPM, that I’ll submit to extras pending on my other submissions (Jython and friends).

PyDev 1.0.6 backporting

Thursday, June 1st, 2006

As I mentioned 2 weeks ago, I decided to backport PyDev 1.0.6 to Java 1.4 so that we could include it in Fedora. I’m glad to say that I’m done, and the patches are available here . Fabio, the author of PyDev, has released versions 1.0.7 and 1.0.8 in quick succession last week, which are bug fix releases, so I’ll be updating my patches for that shortly.

Right now I’m working on getting Jython into Fedora Extras because PyDev has Jython support. I could disable that support, and push the PyDev update into Core. But I decided it would be better to get Jython in extras, it’s a pretty important package I think. What I’ll probably end up doing once that’s done is splitting the PyDev SRPM in to several binary RPMS and make the eclipse-pydev-jython one depend on Jython itself.

If anybody is willing to be the shepherd of any of the 5 packages that include Jython and it’s dependencies in Extras let me know, as I probably won’t have time to maintain them.

We need a newer PyDev

Thursday, May 18th, 2006

Red Hat’s Toronto office recently got 6 new interns. It’s going to be a fun summer with 13 interns sitting together in one cube area :D .

Other than yelling very loudly for the whole day (I swear we were quieter last year!!) the interns are working on some improvements to yum. They’ve all used Eclipse before so they naturally wanted to use it. Very quickly they learned that we ship PyDev and so they tried that. Unfortunately we can only ship versions < 0.9.6, and currently we have 0.9.3. Even more unfortunately 0.9.3 sucks. Mostly because there were tons of additions and fixes since then, possibly also because of the way we’re running it, or because of GCJ. In any case, I decided that we *really* need to have a newer version, because this one is pretty close to useless as it is.

In the next few days I’m going to look to backporting PyDev 1.0.6 (latest released) to Java 1.4 and then pushing that as an update to FC5. We don’t have to do this often, but if it only takes 2 days, I can repeat the procedure before the end of the summer (when I’ll be going back to school). And then we could either repeat it again a few months after or just wait until we have real 1.5 language feature support (I don’t think PyDev uses any new library features, except Genericsized collections).

FUDCon Boston

Saturday, April 8th, 2006

This Friday I presented at FUDCon Boston about Eclipse in Fedora. My presentation was first thing in the morning, so I barely made it on time. Also the highest resolution I managed to get on the projector was 640 by 480, felt like I was back in ‘92 or something. The presentation went pretty well I think, had a bunch of good question. And one person came over and told me about a particular problem he had with Webtools with our Eclipse, for which he apparently filed a bug, so now we have to look at that one ;) . Unfortunately I didn’t get to do a demo, because at that resolution you could barely see anything in Eclipse. I also didn’t manage to make a screencast the night before, all the screencast tools died on me. Wink didn’t work with libstdc++.6.so. Istanbul took 100% CPU when recoding, which is something that’s reserved to Eclipse, so no go.

The conference itself was great. I got to meet a whole lot of people, some of whom I sort of met on IRC before. A lot of redhatters, a lot of other fedora-folk. It was very impressive to see so many people at once who are passionate about open source and about Fedora in particular. Very inspiring.

The presentations were interesting. One session with Jeremey Katz was about FC6. Everyone brainstormed about what should be included, the length of the development cycle, and when test releases should be. Cool. Another session talked about sound in Linux. Apparently Red Hat hired the speaker (whose name I can’t remember unfortunately) to make the situation with sound better. Frankly I didn’t know it was really bad, but I’m not a sound guy anyway. The guy seemed to be very knowledgeable and was a very entertaining presenter. Unfortunately I missed most of the presentation that Seth Vidal gave about Yum, but that got compensated by a great presentation by Ann Margulies, executive director of MIT’s OpenCourseware program. This presentation was really inspiring, not least because many universities from around the world are starting to join MIT in this program, opening up their lecture materials for everyone to see. I think this is a great initiative and I’m going to see if there’s any way we can start something like this at U of T. Why should we be the only ones that suck?

The last presentation was the State of Fedora adress by Max Spevack and Greg DeKoenigsberg. This wasn’t as much a presentation as a discussion with audience participation about the future of Fedora, and who are the people who are going to make it happen. There was some inevitable discussion of the Fedora Foundation Affair, but that went more smoothly than I thought it would. This was a pretty interesting session overall. I think the Fedora community is growing larger and stronger bit by bit, and it’s always a pleasant feeling to be part of something that’s growing, and that looks like it’s going the right way.

Go Fedora!

New ChangeLog plugin (2.0.2)

Thursday, March 30th, 2006

We’re going to release a new version of the ChangeLog plugin to the Fedora Core 5 update repository tomorrow. This update has some bug fixes with the formatting of the ChangeLog when one person tries to do consecutive commits. This version has been sitting in the update site for a few days and there haven’t been major complains, so if testing goes nicely tomorrow, I’ll push it to the updates repo. I’m also planning to try and get some new functionality integrated into the ChangeLog plugin if I have time over the next few weeks.

I’d like to get it playing nicely with the Compare editor because I find that most of my ChangeLogs are written up while inspecting changes in the Compare Editor. I usually go through the files, see what I changed and write entries. Right now I have to go through:

right-click -> Open with Editor -> Ctrl+Alt+C

I should really be able to do Ctrl+Alt+C from the compare editor at the very least. In the best case scenario I’d like to go through the diff and see what functions changed, and have them all put in the entry stub (possibly providing an option for just using the filename instead).

Review: Karl Fogel’s Producing Open Source Software

Saturday, March 25th, 2006

Last weekend I finished reading Karl Fogel’s Producing Open Source Software: How to Run a Successful Free Software Project, which took me about a week to read on the subway to and from work. First off let me say that this is a great book and I recommend it to anybody who works on, with, or uses Open Source Software extensively. Karl Fogel knows what he’s talking about in this field, as he was an active developer of CVS in 1994-1995 and later on started the Subversion project for CollabNet, where he still works.

Book coverThe book talks little about the actual practice of programming for an Open Source project, instead focusing on producing as the title suggests. In Fogel’s mind producing means much more than just the task of programming. It includes the political and social aspects that inevitably surround every open source project, as well as management skills essential for leading such a project. One of the greatest strengths of the book is that it takes many accepted unspoken practices and beliefs that can be observed in the open source community and brings them into the open in a very straightforward way. This is very useful since even people who’ve worked with open source for some time often don’t have a full understanding of the ecosystem. Although the factual content of the book is useful to those who don’t know much about open source, I feel like the major attraction here is the consolidation of Fogel’s experience into a clear and concise narrative. This gives the reader a much more interesting and analytical perspective on the world of open source than she would have from a mere familiarization with the facts.

The book starts off by talking about the history of the Free/Open Source movement, mentioning all the major events and players. This is a good introduction for someone who is new to the scene, and might also fill in some gaps for those who don’t have the full story, but those who are fairly well versed in the historical aspect may want to skip this section. The book goes on to talk about the beginnings of an open source project from inception to the opening up of the codebase. Fogel mentions various details that would help start a project off on the right foot. Unfortunately most of the interactions people have are with existing projects, so this is somewhat of a niche need. The third chapter talks about the technical infrastructure needed to run a project, I feel that this chapter goes into too much details of running and maintaining various software components such as mailing list, something that would have fit better in an appendix. You might want to skim over this one if you’re not starting a project next weekend. The fourth chapter talks about political and social structure, touching on various forms of governance and decision making. This is a very important chapter and gives a much needed perspective on the various options a project has, some of which might not be as obvious as they seem. Chapter 5, Money, is targeted towards a manager of an open source project, or a team that must work on an open source project, but is useful to everybody. This chapter opens up one of the areas that are sometimes considered taboo by some open source hackers, what to do about money (or lack thereof). Fogel takes a very practical perspective, stipulating that businesses often gain from open source projects, and thus often invest in them. There is nothing wrong with investing in a project by either hiring outside help, providing money to some of the existing contributors, or helping to fund infrastructure needs. Fogel explains some of the tradeoffs and touches on the importance of always making sure to approach the matter in the appropriate political way. Chapter 6, Communication, is something that should be a must-read for anyone who participates in a mailing list. Some points are pretty obvious, but some of the techniques of handling difficult situations can only be learned from experience and can be difficult to hone down. Chapter 7 talks about releasing packaging and developing software and is a useful read for understanding how open source projects go about doing this as much as for learning how to do it yourself. It’s a useful introduction to some of the more common practices of doing things, why reinvent the wheel if you don’t need to? The next 2 chapters deal with managing volunteers and choosing the right license. They are both very useful to anybody who is starting an open source project or is in a position to take on the lead or management of a project. They are not as useful to the user of open source software. The end of the book also contains a useful list of software for various purposes such as bug tracking and version control.

The book is very readable over all, and can probably be read over a few days. The author does a good job of splitting up the topics, even thought this is not always an easy job, allowing the reader to skip over sections without losing herself. Fogel also does a good job of referencing the abundant online material surrounding his topics of choice, especially when it comes to sending the reader to search for a more detailed factual account.
The one piece I felt was missing from the book was a comparison of some of the major organizations that engage in producing Open Source software and their practices. I would have liked to see a chapter or appendix comparing Apache, GNU, Eclipse, CollabNet, and perhaps some others in some of the aspects that the book covers, such as organization of power, decision making, commit access and other privileges. This would have been useful for anybody who has some experience, but does not have enough experience to be able to make these distinctions off hand. A reference to existing works making such a comparison would also be useful.

Despite these minor nitpicks, this is a great book. True to the open source spirit, the book is also available online at http://www.producingoss.com. But supporting the author by buying the book is very worthwhile for such a great book.

Author: Karl Fogel
Title: Producing Open Source Software: How to Run a A Successful Free Software Project
Publisher: O’Reilly, 2006
ISBN: 0-596-00759-0