fast and loose cloc stats for Miro
Posted by wguaraldi
Following Paul’s lead, here are some cloc stats for Miro in trunk:
willg@mercury:~/pcf/miro/trunk/tv$ perl /home/willg/Desktop/cloc.pl .
3468 text files.
classified 3457 files
1644 unique files.
2763 files ignored.
http://cloc.sourceforge.net v 1.04 T=20.0 s (35.2 files/s, 9438.1 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code scale 3rd gen. equiv
-------------------------------------------------------------------------------
Python 286 9689 10059 53376 x 4.20 = 224179.20
C/C++ Header 265 7941 14412 31565 x 1.00 = 31565.00
C++ 83 5474 4591 27832 x 1.51 = 42026.32
C 9 1159 889 13119 x 0.77 = 10101.63
Javascript 17 420 557 2699 x 1.48 = 3994.52
CSS 11 391 476 2451 x 1.00 = 2451.00
IDL 7 18 0 486 x 3.80 = 1846.80
XML 13 2 3 275 x 1.90 = 522.50
Bourne Shell 8 136 319 248 x 3.81 = 944.88
make 1 7 0 94 x 2.50 = 235.00
HTML 4 2 2 67 x 1.90 = 127.30
DTD 1 0 0 3 x 1.90 = 5.70
-------------------------------------------------------------------------------
SUM: 705 25239 31308 132215 x 2.41 = 317999.85
-------------------------------------------------------------------------------
status of trunk
Posted by wguaraldi
Over the last week I’ve been coming up to speed on the architectural changes that occurred when Ben landed the new widget code. I’ve also been hooking up menu items to their respective behavior and fixing bugs on the Linux and Windows platforms. In many cases, I’ve been re-implementing the behavior using the new messaging system which has required me to read through the “old” code and figure out what the behavior used to be. Progress was slow at the beginning, but is picking up now.
You can see checkins progress in the Trac timeline.
There’s still a lot of work to do to get things working again, but things are progressing.
So, why all the trouble? Why not just leave it as is? Off the top of my head:
- Miro’s UI is no longer rendered using HTML templates. w00t!
- It looks like overall memory usage is lower by around 20%.
- Memory usage of Miro when displaying feeds with lots of items scales much better.
- Miro’s faster at displaying feeds with lots of items (where “lots” is defined as > 50).
- Miro on Windows is no longer a XULRunner application; instead we’re embedding XULRunner for web-browsing. XULRunner is a great platform, but this change makes Miro a Python application on OSX, Linux and Windows and we can unify our toolset. That’s a huge win for us and reduces the amount of work it takes to maintain all three platforms.
Regarding the performance gains, I’m seeing those on Windows and Linux, but I definitely haven’t spent a lot of time doing rigorous measurements. Treat them as if they were wild unsubstantiated rumor. I haven’t used Miro on Mac OSX enough to notice anything there, yet.
Getting there…!
trunk about to be _very_ broken
Posted by wguaraldi
Just as a word of warning, if all goes well, Ben will be merging into trunk what he and others have been working on over the last few months in the next day or so. When that happens, trunk will become very broken and will remain that way for possibly a week as folks work on stabilizing the new user interface code and reimplementing a bunch of features… silly things like being able to play videos.
If you’re tracking trunk or using nightlies, you should seriously consider waiting a week to update.
You might ask, “Gah! What a bunch of idiots! Why are they doing this?!” The answer is that the widget overhaul is very badly needed and it’ll fix one of several big performance issues that Miro currently has. It’s a big change and it’ll cause a big mess for a short while, but it’s going to make a big big big difference.
In order to do this quickly, we’ll be focusing pretty hard on getting trunk working again for a while. My apologies if any of us seem like we’re dropping off the face of the earth or ignoring questions, concerns, …
at FUDCON 10 — come meet me!
Posted by wguaraldi
review flag; contributing patches
Posted by wguaraldi
We’ve had a few people contributing patches for the Miro codebase. I decided it was time to add a review flag like Mozilla has in their Bugzilla instance. This makes it easier for us to keep track of attachments that are waiting on reviews.
As such, I added a “review” flag to our Bugzilla instance for attachments.
I thought I’d talk a little bit about contributing patches.
Guess what? You’re a happy Miro user except for one little thing that really annoys you. You head on up to the Miro Bugzilla bug-tracker to see if this is a bug/feature that someone else has reported already. Wow–turns out it has been reported. Not only that, but there’s been some analysis done and some speculation as to a good attack vector for fixing the problem.
So you roll up your sleeves, add a comment on the bug stating you’re going to work on it, set yourself as “assigned”, dust off your favorite editor, skim through the Miro development wiki for the svn repository information and build instructions, and get to work.
A few hours later you’ve got it working on your machine. You run:
svn diff > bugid.patch
to generate a .patch file containing the changes you’ve made.
You visit the bug in the Miro Bugzilla bug-tracker, find the bug you were working on, and click on “add attachment”. You’ll see the following screen:
Deftly, you upload the patch, click on the “patch” checkbox, select “?” from the Review flag dropdown and type in will.guaraldi@pculture.org in the Requestee box.
Then you press the “submit” button!
Will (that’s me) gets an email stating that there’s an attachment waiting for review. I add it to my queue of things to look into. If it’s not something I know anything about, I’ll find someone else who can look at it. Then someone will add a comment to the bug reviewing the patch and … the rest is iterations on that.
If you’re interested in helping out, we’ve been tagging bugs that we think are good for people new to the codebase as “bitesized”. You can see a list of them here.
June 3rd chat — follow-up and some more answers
Posted by wguaraldi
I was the Q&A person for the June 3rd chat yesterday and I thought I’d post some follow-up and answer some of the questions we didn’t get to.
Follow-up
First off, I thought the chat went well and it was neat to talk to a bunch of people I’d probably never talked to before. It seems that the predominant theme was “when are features landing?” and “what’s coming up?” It’s a little hard to answer those questions because I’ve been pretty focused on the next release that I haven’t been involved in planning beyond that.
Now to answer some questions that we didn’t have time for.
How long have you worked for PCF? What did you do before Miro?
I’ve been working at PCF since August 2007. This is in many ways my dream job with my only issue being that I wished I either earned a bit more money or had a lower cost of living. Other than that, I’m doing what I love doing, I get to hang out with some really great people, and the stuff we’re working on is really important to me.
I’m going to assume “What did you do before Miro?” means “What did you do before working at PCF?” Prior to PCF, I spent 2 years getting a Masters at Northeastern University CCIS in programming language design/theory and software engineering. Prior to that, I worked in the financial services industry at ByAllAccounts, I worked as a contractor for Tallan at Ingram Micro on their international web-site system, and various other software developer positions before that. I’ve been programming for probably 20 years now in various forms, but this is my first FOSS job and the first job where I’ve worked with XULRunner and GNU/Linux-stack components like Gtk+, GStreamer, Xine, Glade, DBus, Glib, GObject, … It’s been great!
shoestring: Video metadata: any plans to see miro actually writing it to the files/being able to edit it?
We’ve talked about making ui changes to allow for changing “metadata” of content, specifically name, filename, tags, … It hasn’t happened yet, though. I think it’s one of many things waiting for the great widget overhaul.
Miro can export feed information to OPML format, but this doesn’t include metadata about content. I don’t know offhand if there are plans to add that or not. There are plans on building an API to allow programs like MythTV and Elisa and other systems like that access to Miro data. That hasn’t happened yet, either. In this case, I think it just needs someone to work on it.
Evan: Is it possible to install miro without bittorrent? I know this question is weird, but in some (many?) companies bittorrent is banned … yet the company is ok with limited internet video usage.
We don’t have builds that don’t have bittorrent in them. It would take some work to decouple Miro from libtorrent and/or disable it and then it sounds like we’d have to provide a separate set of libtorrent-less builds. I don’t think that’s a bad idea, but I don’t think it’s going to happen without a champion who can do the work.
will: (seed question) What do you do when you’re not working on Miro-related things?
A little silly answering my own seed questions, but … so it goes.
Lately all I’ve been doing is Miro-related things. We’re pushing really hard on the next release. We’re really excited about it and we think it’s another big milestone in Miro’s life.
This year, I’m a backup admin for GSoC for the PSF thought I haven’t actually had to do much (yet).
I’ve been trying to finish up work on version 2.0 of PyBlosxom for the last 6 months but haven’t found time and energy to get there. I’ve been able to make some progress, but it seems to be on a permanent back-seat.
I’d really like to help Mozilla on their embedding efforts. I’d also really like to get more involved in gstreamer, Python 3000 and a bunch of other projects.
Epilogue
I think that’s about it. Given that the chat went pretty well all things considered, there will probably be another one in the future and probably more after that.
Miro hackfest in Boston
Posted by wguaraldi
I live in Somerville, MA, USA and I’d like to organize a Miro hackfest in or near Boston. Possible topics for that hackfest include:
- cleaning up and improving the gtkx11 platform interface, gstreamer/xine use, …
- working on bitesized bugs and working on unittests
- hacking together an interface for Elisa or MythTV
- testing out the fledgling Mozilla embedded API with the gtkx11 interface
- sorting out packaging issues
- other things?
I was thinking we’d do the hackfest sometime in June. Possibly as part of FUDCon10 or in the vicinity.
If you’re interested and/or have ideas, find me on IRC, email me, comment below, or send me telepathic messages of hope.
gstreamer gconfvideosink sink, unittests, new ui stuff
Posted by wguaraldi
firefox 3 and enclosures (recap)
Posted by wguaraldi
Back in December and January, I worked on some patches for Firefox 3 that enhanced the feed preview page. I wrote a post about it back then… but I’m updating that post with recent screenshots and a better description of the work. The previous post was mostly about how great FOSS is.
The patches fell into two big features. First, I added enclosure detection to the FeedProcessor and then modified FeedWriter to show enclosures alongside the entries. This has two huge benefits: it allows you to easily tell if the feed has enclosures and it allows you to see what they are, how big, what type of media, …
Second, I modified Firefox so that it allows you to associate video podcasts with an application, audio podcasts with another application, and all other kinds of feeds with a third application. The benefit here is that you can send media podcasts to an application that handles that well (*cough*Miro*cough*) and regular news feeds to a different application that handles that well.
Screenshot of Firefox 2 feed preview page:
Screenshot of Firefox 3 feed preview page:
Of the two features, I hear the most comments about the first one mostly along the lines of, “I’m so glad I don’t have to view source to see the enclosures anymore!” The second feature isn’t as immediately exciting. The implementation of distinguishing feeds is intentionally simple and there are a lot of corner cases where it doesn’t work very well. Also, there aren’t many applications that can really take advantage of it. I expect this second feature to flourish as Firefox development continues and video/audio podcasting evolves.
Hardy packages
Posted by wguaraldi
I updated my AMD64 machine to Hardy today and built a set of Miro 1.2.3 packages for Hardy AMD64. Going forward, I’ll continue to build packages for Gutsy and Hardy for both i386 and AMD64 platforms.
Miro 1.2.3 is the last release I’ll be doing packages for Dapper and Feisty.
If someone could help out by maintaining and testing packages for those two platforms and any others that we don’t cover, that’d be really great. Let me know in the comments, by email, or on IRC.
WordPress. Theme based on Simplism, but without bits I found irritating. I'm still toying with it.

