Tag Archives: architecture

My GSoC Project: Review Board Extensions

If you didn’t already know, Review Board is an open-source web-based code review tool.  The MarkUs Team has been using Review Board for pre-commit code review for about a year now.  This has given the team a number of advantages:

  1. For a team that usually has a 4 month turnover, this allows us to quickly get new team members up to speed with how to contribute to MarkUs.  We review every change that they propose, and give them tips/guidance on how to make it fit in well with the application.  They learn, and the applications code stays healthy.
  2. We catch defects before they enter the code base.  Simple as that.
  3. We get a good sense of what other people are working on, and what is going on in the code.  Review Board has become a central conversation and learning hub for the developers on the MarkUs team.

So, the long and the short of it:  I like Review Board.  Review Board helps us write better code.  I want to make Review Board better.

So what am I proposing?

How to Avoid A Bloated Software Monster

You can never make some people happy.

No matter how decent your software is, someone will eventually come up to you and say:

Wow!  Your software would be perfect if only it had feature XYZ!  Sadly, because you don’t have feature XYZ, I can’t use it.  Please implement, k thx!

And so you either have to politely say “no”, and lose that user, or say “yes”, and add feature XYZ to the application.  And for users out there who don’t need, or don’t care about feature XYZ, that new feature just becomes a distraction and adds no value.  Make this happen a bunch of times, and you’ve got yourself a bloated mutha for a piece of software.

And we don’t want a bloated piece of software.  But we do want to make our users happy, and provide feature XYZ for them if they want it.

So what’s the solution?  We provide an extension framework (which is also sometimes called a plug-in architecture).

An extension framework allows developers to easily expand a piece of software to do new things.  So, if a user wants feature XYZ, we (or someone else) just creates and make available an extension that implements the feature.  The user installs the extension, activates it, and bam – our user is happy as a clam with their new feature.

And if we make it super-easy to develop them, third-party developers can write new, wonderful, interesting extensions to do things that…well, we wouldn’t have considered in the first place. It’s a new place for innovation.  What’s that old cliché?

If you build it [the plug-in framework], they will come [the third-party developers who write awesome things]

And the developers do come.  Just look at Firefox add-ons or WordPress plugins.  Entire ecosystems of extensions, doing things that the original developers would probably have never dreamed of doing on their own.  Hell, I’ve even written a Firefox add-on. And users love customizing their Firefox / WordPress with those extensions.  It adds value.

So we get wins all over the place:

  • Our user gets their feature
  • The software gets more attractive because it’s flexible and customizable
  • The original software developers get to focus on the core piece of software, and let the third-party developers focus on the fringe features

And this is where I think I can help Review Board.

(Before I go on, if you’re interested, here’s another article on the how and the why of plug-in architectures)

Review Board Extensions

So if you look at the Review Board Wiki, or glance at the mailing lists you see numerous requests from users for new features, for example:

It would be nice if the review board had a “next comment” button that is always available to click, or had a collapse/expand button. This would make it easier to see other people’s comments in cases like this.

It will be nice to have post-commit support. Instead of every post-commit review being a separate URL, if we could setup default rules for post-commit reviews to update an existing review providing the diff-between-diff features, it would be very useful.

The Review Board developers could smell the threat of bloated feature-creep from a mile away.  So, in a separate branch, they began working on integrating an extension framework into Review Board.

The extension branch, however, has been gathering dust, while the developers focus on more critical patches and releases.

My GSoC proposal is to finish off a draft of the extension framework, document it, and build a very simple extension for it.  My simple extension will allow me to record basic statistics about Review Board reviewers – for example, how long they spend on a particular review, their inspection rate, etc.

Having been a project lead MarkUs for so long, it’s going to be a good experience to be back on “the bottom” – to be the new developer who doesn’t entirely have a sense of the application code yet.  It’s going to be good to go code spelunking again.  I’ve done some preliminary explorations, and it’s reminding me of my first experiences with MarkUs.  Like a submarine using its sonar, I’m slowly getting a sense of the code terrain.

I’ll let you know what my first few sweeps find.

Code Spelunking for Students

Last Friday, I went to the FSOSS conference at Seneca@York Campus with Zuzel and Greg.

One of the talks I attended was an open discussion about getting students involved in open source software.

I’m going off of memory there, but I believe one of the speakers at that talk said something like:

Students generally don’t have to deal with large code-bases in their school assignments…1000 lines of code is really nothing.  When students work on an open source project, they get dropped into a massive code-base with only a fork, a spoon, and a compass.  They have to find their way around, and that’s where the real challenge and learning is.  This is a skill that most students just don’t get with normal school assignments.

Again, I’m paraphrasing.

So is this true?  Hm.

During my undergraduate career, I’ve certainly had to explore strange code that someone else has written.  But nothing even close to the size of, say, the Mozilla Firefox code-baseOr the Chromium code-base.  I mean, these are massive wads of code.  This is not a criticism of my teachers or the UofT CS program by any means – it’s just an observation.

But some students explore these large code-bases on their own in their free time.  During my (admittedly brief) break before summer work began, I started poking around the Firefox code.  I made two discoveries:

  1. The code that I saw was, in my opinion, very well written
  2. I was completely lost, and didn’t know where to start

I still haven’t worked on any software that is nearly as large as Firefox.  Not even close.  MarkUs is a nice chunk of code, but minuscule in comparison.

So just go with me on this for a second.  Let’s assume that a large code base is intimidating and difficult for students to wrap their heads around, and this is one of the main challenges in getting those students to contribute to open source software.

Again, I only have my own experience to back up that claim.  Looking at Firefox, I didn’t know where to start.  I didn’t know where to go.  I didn’t know which way was up.  I was lost.

So how can students get a better grasp on a mountain of code?  A few ideas:

  1. Write tests for the code, starting small and going big.  This is a relatively easy way to play with the code without having to change it. This assumes, of course, that the software has been designed to be easy to test…
  2. Ask someone else.  Go into the appropriate IRC channel and ask around.  This, of course, has it’s own problems.
  3. Read up on the developer documentation.  Let’s just hope it’s up to date and relevant…
  4. Read up on someone else’s experiences exploring the same code base.  Good luck finding those.

Not Quite Blueprints

I’ve always thought of computer software as being like an invisible machine inside my computer.

And to me, the source code is a bit like the description of the blueprints for that invisible machine.  It’s not the top-down crystal-clear cutaways that a blueprint provides…it’s a flat, textual interpretation of those blueprints.  And it takes quite a bit of reading before those descriptions sink in, and the “personality” of the machine becomes clearer.

In his article “Code Spelunking Redux“, George V. Neville-Neil says:

Working in this way is a bit like trying to understand the United States by staring at a street sign in New York City. The ability to look at a high-level representation of the underlying system without the fine details would be perhaps the best tool for the code spelunker. Being able to think of software as a map that can be navigated in different ways—for example, by class relations and call graphs—would make code spelunkers far more productive.

I was thinking a lot about that on my ride home from FSOSS.  When I got home to my computer, I found out that there are some really cool alternative ways of viewing software.  Here are three that I found quite interesting:

Codecity

Imagine that you’re curious about developing on Firefox.  You can wade through the swaths of source code…

or you can stroll through a city that represents the software:

CodeCity

CodeCity

CodeCity is an integrated environment for software analysis, in which software systems are visualized as interactive, navigable 3D cities. The classes are represented as buildings in the city, while the packages are depicted as the districts in which the buildings reside. The visible properties of the city artifacts depict a set of chosen software metrics, as in the polymetric views of CodeCrawler.

Imagine virtually driving around that city, hearing a guided tour through your headphones…you can walk into buildings, check out the different floors…check the plumbing.  Interesting idea.

Cocoviz

Or how about a neighbourhood…

CocoViz

CocoViz

CocoViz address software comprehension by a combination of visualization and audio. It uses common place metaphors (like houses) for an intuitive understanding of software structures and evolution.

For each source code entity, evolution and structural aspects are mapped to such metaphors and annotated with different audio, to represent concepts such as design erosion, code smells or evolution metrics.

The tool is used in the software evolution analysis domain but offers DB-, XML-importer and a plugin architecture to extend its use into other domains.

EvoSpaces

Another attempt at using the architecture/neighbourhood metaphor.  This one does a neat job of displaying execution traces though – check out the video demo.

These are cool ideas.

But are they useful? Are they usable?  Do they work? Could they help students get a firm grasp on a large code-base?  Can they help visualize the evolution of software?

Has anyone actually used any of these?

Poland – Part 7: An Official Tour of Wroclaw

June 20th – 10:45AM

After waking, cleaning up, and eating breakfast, the whole bunch of us left the hostel to meet a guide for a tour of Wroclaw that Tamara had arranged for us.  As usual, our feet guided us to the market square, and that’s where we met Ella, our tour guide.

One of the first interesting things Ella taught us about Wroclaw was about the market square.  Apparently, a lot of the “ancient” looking buildings around us were actually only a few decades old.  They’d been designed and constructed to look old from the outside and to fit in with the historical look, but the insides were supposedly super-modern.  Part of me found that fascinating, another part was a little disappointed.  Tricked by architecture.

Ever heard of Max Berg?  I hadn’t.  Max Berg was a German architect who was appointed as the senior building official for Wroclaw in 1909.  According to Ella, Berg got caught up in Post WWI “skyscraper fever”, and wanted to  modernize the market square of Wroclaw with epic skyscrapers like the ones in New York.

Anyhow, it didn’t go over very well.  He got one up, and I saw it, and it just didn’t work.  The building itself was alright, but it just didn’t fit in with the surroundings.  This is probably why the buildings around it have been constructed to fit into that ancient style – anything else just looks ridiculous.

Oh, and some irony – the address for that New York style skyscraper?  #9/11.  Go figure.

Here’s a a link to an article about Max Berg, and his attempt at modernizing Wroclaw, if you’re interested.

[simage=267,288]

See this monument?  I’ve been trying to find out more about it.  According to what I heard from Ella (which was kind of garbled, since I was hanging out at the back of the group at this point), the monument marks a horrific event that happened sometime in the 17th Century.  Apparently, an influential Italian priest told the residents of Wroclaw to put to the fire all of their earthly possessions.  So, they built a big fire, and started tossing things in.  And then things got out of control, and 41 Jews were apparently burned there as well.

You’d think I could find some information about this monument somewhere on the Web, but no luck so far.  The closest I could get was St. John Capistrano, who may have been the alleged priest – though Capistrano lived during the 1400s, which doesn’t fit in at all with the 17th Century time frame.  Anyhow, if anyone has some information on this monument, I’d be glad to hear it.

Moving on, we started walking towards the Old Town Hall of Wroclaw.  Nearby were some discolored stones on the road which marked a square:

[simage=268,288]

According to Ella, that square marked where the “mad house cage” was originally located.  People who didn’t behave according to the social standards of the time (drunkards, trouble-makers during mass, women who wore trousers, etc) were put into that cage for the whole market square to see.  Yeesh.

Then we walked into the Old Town Hall.  It has been converted into a type of museum, with roped off areas, info placards, etc.  According to my journal, the insides smelled “like a fishing tackle box”.  Here are a few shots from the inside:

[simage=269,288]
[simage=270,288]
[simage=271,288]

Yev remarked that this next room was creepy because this is where people were sentenced to be hanged:

[simage=273,288]

We walked back outside.

The Old Town Hall is more or less in the centre of the market square.  Attached to it is a restaurant.  According to Ella, this restaurant is currently the oldest restaurant in Europe! Wow!  And guess what – this was the restaurant we ate at while discussing CLEANSED the other night.  And we had no idea that it was so ancient.  Go figure.

[simage=274,288]

We also saw the “flogging pole” outside of the Old Town Hall.  As you can guess, petty criminals used to be roped to this thing, and flogged for the public to see.

[simage=275,288]

After seeing this, we started to leave the market square.  We stopped at a little booth and had some barbequed goat cheese (salty and smoky…not bad).  We also saw another gnome – this one atop a giant finger:

[simage=276,288]

12:05PM

Ella led us towards a tram stop, where we were soon picked up.  It was a really old looking tram – unpadded wooden seats, a wooden floor, and a guy who went up and down the aisles collecting our 3z tickets.

[simage=277,288]

I was lucky – landed one of the few seats!  So did Tara, who sat next to me.  Here she is, after telling me that the parents in front of us should be slaughtered for the haircuts they gave their children:

[simage=278,288]

So, riding the tram, we exited the downtown core of Wroclaw.

[simage=279,288]

I think I’ve remarked about this several times already (if not on this blog, then to others in person), but Poland is interesting because parts of it look like they’re centuries old;  ancient, majestic architecture that just screams history.

And parts of Poland look just like Hamiltion:

[simage=280,288]

Our tram eventually led us to the Centenary Hall.

[simage=281,288]

Centenary Hall serves the same function as the Air Canada Center in Toronto – it hosts sporting events, talks (like from the Dalai Lama), or anything that involves large numbers of people.

Apparently, this building, also designed by Max Berg, got the same welcome that the new ROM got when it was completed in Toronto.  The public absolutely hated it, calling it ugly.  Despite that judgement, here’s a beautiful shot of the Centenary Hall:

[simage=625,288]

We couldn’t actually go inside the Hall, so the visit was really just an opportunity to see the grounds.  Here are a few shots of what we saw:

[simage=282,288]
[simage=285,288]

From what I remember, these fountains were shooting up into the air in various patterns.

[simage=283,288]

As we left the grounds, I could hear Wagner’s Flight of the Valkyries start to play in the distance.  Perhaps we had just left before some kind of water show.  We’d never know.

We boarded the tram again, and started heading back down town.

During the ride back, I talked to Linn about web development (she’s a fellow web architect) and also established “Mike’s Nose-picking While Driving Law”, which states:

The likelihood of seeing a solo driver pick his or her nose while idling at an intersection increases with every second of observation.

We also spotted a woman walking a galloping wiener dog, but I couldn’t get my camera out fast enough to capture the moment.

Eventually, Ella led us back to the Wroclaw University that we had briefly visited a few days before.  A few of our group decided to take a break from the tour, but a couple of us decided to walk around the University to see the sights.

First of all, the University of Wroclaw sports some pretty impressive alumni:

[simage=287,288]
[simage=288,288]
[simage=286,288]

Traveling upstairs required a ticket (I think they were only 6z though).  The first thing we saw when we went up the stairs was the University of Wroclaw’s equivalent to UofT’s Convocation Hall.  It was quite a bit smaller, but what it lacked in size, in more than made up for in ornate-ness:

[simage=294,288]
[simage=295,288]
[simage=297,288]

According to Ella, this room was designed with a “counter-reformation” attitude in mind by some Jesuits.  So, instead of being reserved, they went all out with gold and sculpture.  Nice.

1:55PM

We continued up the stairs to see more exhibits:

[simage=298,288]

We saw the 17th Meridian, marked out along the floor as it passed through the University:

[simage=300,288]

We also saw this sign:

[simage=301,288]

According to Ella, the sign said that the University of Wroclaw houses an extensive set of climate data, going back about 300 years.  If any Polish readers out there want to send me an actual translation, I’ll gladly post it.

(Updated:  May 15th, 2010)

Piotr Waszkielewicz from Wrocław wrote in with the following translation:

“At this place
behind northern windows
of astronomical observatory
in February 1791
has been started systematic
AIR TEMPERATURE MEASURMENT

Collected data makes
one of the longest
climatological series in Europe
and is a precious informacion source
for climate change research

Thanks Piotr!

Continuing up the stairs eventually led us onto the roof.  Once again, a spectacular view from the rooftop of a tower in Wroclaw.  This one had statues on each of its corners – with each one representing a particular discipline:

Law:

[simage=302,288]

Theology:

[simage=303,288]

Medicine:

[simage=304,288]

Mathematics:

[simage=305,288]

I could only take photos of their backs though, since they were facing outwards towards the city.

After breathing in the fresh air, we went back down and met up with the rest of our group.  We finished the tour by going to a “milk bar”, which is basically a no-frills cafeteria that serves standard meat & potatoes meals.  I instantly fell in love with it.  I had a plate of pierogies, and some mineral water, and topped it off with some amazing Wroclaw ice cream.

Once we were done eating, Tamara told us that we were free to explore the city until the shows that night.  We split up into several groups.  I chose to travel with Sonia and Ryan.

We walked back through the market square, and paused to see a busker send some massive bubbles into the sky:

[simage=309,288]
[simage=310,288]
[simage=311,288]

Eventually, the three of us wandered over to St. Elizabeth’s Church.  A wedding was going on inside, and we didn’t want to intrude, but we did find an entrance way to get up to the top of the tower.

[simage=333,288]

A 5z ticket later, we started our climb.

And what a climb.  Something like 300 steps in a dark, spiraling, claustrophobic space.  It didn’t help that there were people coming down as we were going up.  There was barely enough room for one person to go up, let alone two passing one another.

[simage=328,288]

With aching thighs, we managed to reach the top.  And again, what a sight…here are some of the photos I took up there:

[simage=312,288]
[simage=316,288]
[simage=326,288]
[simage=317,288]
[simage=318,288]
[simage=319,288]

Remember those statues at the University?  Here they are, seen from the church tower:

[simage=321,288]
[simage=320,288]

Here’s what it must look like during a fall from the church tower:

[simage=322,288]

And remember the Witches Bridge from this blog post?  Here it is from the outside:

[simage=323,288]

And to top it off, a few photos of me up there:

[simage=324,288]
[simage=325,288]

The walk down the steps was better on our legs, but they were still wobbly once we reached bottom.  We stopped at a restaurant, got something to drink, and then headed back to the hostel.

We hung around the hostel for a bit.  Ryan introduced me to a YouTube phenomenon called David’s Farm. Basically, it’s this guy named David, who does some pretty crazy stuff up at his farm.

Crazy stuff like this:

Want to see a really bad idea?  Fast-forward to about 2:52 into this video.  Yikes.

Anyhow, it was almost time to see that evening’s shows.  That evening was different, because we had some choice in what we were seeing – there were several different “streams” that we got to choose from.  Most of us saw the same stream (as most of the other streams had been sold out), which had us seeing two shows that night.

The first show I saw was called MARLENE DIETRICH. ABOUT BROKEN NAILS, starring Anna Skubik.  It turned out to be a one-woman puppet show, and I absolutely fell in love with it. Skubik had beautiful puppetry technique, and I totally bought that there were two characters on stage.  It was playful.  I really enjoyed it.  It made me happy.

The second show was called SMYCZ.  How do I descibe that show?  It was, to me, variations on a theme, where the theme was “leash” (which is “smycz” in Polish).  It was absolutely mesmerizing.  Total rollercoaster.  The performer, Bartosz Porcyzk, was absolutely incredible – I’d never seen anything like him.  Everything he did absolutely held my full attention, even though I didn’t understand a word, and had to read the subtitles (which didn’t help when he’d go off script and improvise).  He could sing, he could dance, his acting was phenomenal.  His movement was flawless.  His voice, suberp.  The music behind the show was incredible.  The show completely won me over, and most of the rest of us too.  I’d definitely see the show again if I could.

Besides the show website, the best I can do to convey what we saw is show you this “trailer” that I found.  It’s just some of the songs with some still photos, but it’s better than nothing:

Here are a few shot of us after having our minds blown by SMYCZ:

[simage=334,288]
[simage=335,288]
[simage=336,288]

Nothing revs up drama kids like seeing an amazing show.

After the show, a few of us went to Wizard Hat to talk about it.  When we got there though, we ended up spending our time talking about how our presence (as loud, North American drama students) was being perceived in Wroclaw.   Ryan (I think?) noticed that another table had been staring at us, and that one guy looked like he wanted to punch all of us.  That table eventually left.  Maybe we were being too loud and obnoxious.  Poland has certainly been smacked around a lot – maybe they don’t look kindly upon loud North Americans coming in and being obnoxious?

Then we got into a big discussion about European and North American stereotypes.

Jiv said that his darker skin colour had drawn a lot of looks his way.  Tara said something similar.  I said I hadn’t noticed anything for me, and Jiv said that it’s probably because I’m “ethnically ambiguous”, which helps me blend in.  Nice.

I was getting tired.  After an incredibly satisfying day, I left Wizard Hat, walked back to the hostel, and fell asleep.

Click here to go to Part 8:  A Boat Ride, Eating, Videos, AJAX, and More Eating

Click here to go back to Part 6:  A Taste of Total Freedom