Gordon P. Hemsley

Linguist by day. Web developer by night.

Posts Tagged ‘Bespin’

Catching up with myself

Posted by Gordon P. Hemsley on January 23, 2011

Oh, hello Internet. Long time, no see. (That is, if this is the only way you keep track of me. I’ve been tweeting a bit more than I blog.)

This post is basically to bring you up to speed on what’s been going on since my last post, back in July. (I never was a very good blogger, you know. This is actually pretty good for me.)

A lot has happened since then, actually.

First off, I’m no longer working with the Bespin folks—I’m not sure I ever mentioned that. Though I felt a bit guilty about it, I made the decision around the time of the Summit, and I wound up not spending a whole lot of time with them while. (I was running out of things I could help with, anyway, with my JavaScript skills being as poor as they are.) During the Summit, it was announced that Bespin would be changing its name to Skywriter. It was a bit of an insider secret until it was officially announced a few months later, but that doesn’t even matter now. Mozilla decided to change direction slightly and focus more on developer tools as a whole. This decision eventually led up to what happened just the other day: Skywriter has merged with the Ajax.org Cloud9 Editor (ACE). This is the best of both worlds, at it puts the project in the hands of developers better equipped to take care of it, while also ensuring that the original Bespin/Skywriter work does not go to waste.

I also haven’t been much involved with Ubiquity since the release of 0.6. I do believe satyr continues to maintain it, but I don’t know if it will ever see another “official” release. (Satyr has always made snapshot releases directly from the repository, though.) It also doesn’t seem like Taskfox will emerge any time soon. It’s certainly not on the agenda (nobody’s working on it), and the new Panorama (formally TabCandy) is the primary focus of Mitcho, Aza, and others. If all goes according to plan, that will likely be my favorite feature of Firefox 4. (Of course, by the time Firefox 4 comes out, I’ll probably be using Firefox 4.next. I’ve been running 4.0 nightlies for a while now. Probably ever since TabCandy was merged to trunk, now that I think about it.) So I spend some of my days bothering the folks in #tabcandy, complaining about things they usually already know about.

But I do try to make myself useful, too. I’ve attempted to increase my involvement with the Mozilla.org team, as at least there I have the relevant skillset. Unfortunately, it’s been somewhat slow-going. I spent a lot of time at the Summit chasing Reed around trying to get reviews. But Reed is always super busy—thus, I’m still waiting on those reviews. (And I’m not the only one.) So I’ve offered to try to help carry some of the load, in terms of reviewing patches for the Mozilla.org website(s). So, I finally applied for (albeit very limited) commit access—some 6 and a half years since I filed my first Mozilla-related bug. I faxed my Committer Agreement in about a week ago, and hopefully the rest will be handled in the next week or so. I’m quite excited to be able to make a contribution that’s more than removing unused variables or adding half-working tab support.

But my life, unfortunately, has not completely revolved around Mozilla in this past half a year. I finished another semester of school, and the final semester of my undergraduate career (well, the first one, at least) begins on the 31st. On June 2nd, I will finally have a Bachelor’s Degree—in Linguistics. What happens after that, I’m not sure. These past two months have been hectic, as I’ve been applying to graduate schools for linguistics. Though I continue to be torn as to whether I really want to spend the next five years doing more linguistics (what does one do with a Ph.D. in linguistics, besides more linguistics?), my biggest annoyance thus far has been the cost. Between the application fees, the GRE score fees, and transcript fees(!), this process has cost me hundreds and hundreds of dollars! (Oh, and for a procrastinator like me, having to rely on—and worry about—other people’s schedules has been very difficult. There’s no turning an application in the night before if you also need recommendation letters from three other people.)

On the bright side, I have been gathering a lot of linguistics-related ideas that I want to blog about. I haven’t yet figured out how I’m going to do that—some of them are not more than a couple of sentences, so I may spew a bunch out at a time. I’ve also gotten involved with a new project designed to bring linguistics to the masses, à la Scientific American or Popular Mechanics: Popular Linguistics Online. I’ll be writing some things for them, as well as helping out with some of the technical stuff behind the scenes. Everything is very much in the early stages over there, but there is an issue out already, so I encourage you to check it out!

P.S. Please forgive the overuse of the word “so”. It’s 4:30 in the morning.

Advertisements

Posted in Linguistics, Mozilla | Tagged: , , , , , , , , , | Leave a Comment »

SVN Support in Bespin

Posted by Gordon P. Hemsley on August 10, 2009

A couple of weeks ago, I kicked off the addition of SVN support to Bespin (bug 493038). This required two things: One was the actual ability to choose which VCS you’re using, as it defaulted to Hg and the auto-detection was primitive and long since functional. (There were rumors that it had even been missing from the code for a while already.) But that was the relatively easy part, as it was mostly just manipulating HTML.

The (relatively) harder part was writing the code that would do the actual work with SVN. (VCS support in Bespin is powered by UVC.) A factor in this difficulty was that the backend code is written in Python, which I’m not especially familiar with. Nevertheless, the process was actually simplified by the way things are set up, because I was able to copy the Hg code and just modify to fit the SVN commands. I was able to add basic checkout, commit, and update support, as well as username/password authentication. Kevin later came in and finished up the push/commit differentiation, among other things. I believe SSH support still needs to be done, but we’re looking for a method to use to do it. (Kevin has suggested using environmental variables, as SVN does not have the ability to pass SSH details via command line, like Hg does.)

Kevin and the other Bespin folks are in the process of getting the 0.4.0 release out the door today or in the next couple of days, and that will include this support for SVN, as well as collaboration.

Posted in Mozilla, Open Source | Tagged: , , , , , , , , , , , , , , , , | 1 Comment »

Coding for Tab Awareness in Bespin

Posted by Gordon P. Hemsley on April 18, 2009

During our last status meeting, I brought up the issue of people not taking tabs (and the fact that they are variable-length characters) into consideration when coding new features that require text manipulation. As a result, I was asked to write a little tutorial on the wiki to help explain the situation to those not familiar with the code.

Take a look at the article. It starts by giving a little background information about the issue. It then makes note of which functions are expecting to be fed modelPos, rather than pos. It then goes on to explain how to obtain the proper position value and other things related to the fact that tabs are variable-length, based upon where they are in a line.

This article outlines the tools that one needs in order to properly consider tabs in text. However, it does not necessarily give step-by-step instructions on how to properly use the code; it has no examples. Is it clear enough to use? Or is there still confusion as to what to do?

Please leave me feedback here, and I’ll make any changes that are necessary to clarify things better. (Alternatively, you could make the edits yourself—it is a wiki, after all—but I wouldn’t necessarily recommend that. I mean, I am the one that wrote the original code…. You know, just saying.)

Posted in Mozilla | Tagged: , , , , , , , , , , , , , | Leave a Comment »

Quick Bespin Update

Posted by Gordon P. Hemsley on April 13, 2009

A lot has happened since I last blogged about adding real tab support to Bespin. Since then, my code was merged into the main repository and things have taken off. I later tore apart a huge chunk of Bugzilla by way of sorting through and updating a lot of the old bugs, many of which had been on the books since before Bespin went public, or had been fixed a long time ago. I still have not sorted through all of them, and there are probably still a number of open bugs that fall into that latter category.

Since appointing myself the de facto Issue Manager (hat tip to amotsjonov for the link), I have been watching the incoming bugs like a hawk, and have determined that using the whiteboard to organize bugs has already become too unwieldy. Bespin needs to pop itself out of the Mozilla Labs product so that it can have components of its own. So I’ve filed a bug to that effect. I hope it will get approved and put in place soon, so that I can really attack all of the remaining unloved bugs and narrow down the focus of what there is to do.

Last week was also the first Bespin Status Meeting. After some technical difficulties getting our more foreign correspondents into the call, it went well. We discussed the near and far future of Bespin and what we plan to do. April is dogfood month, so we’re going to have to sort out the most glaring bugs and get the most important features implemented. That way, we’ll be able to use Bespin to edit Bespin. I’m looking forward to it.

Our next meeting is tomorrow. Though the agenda is not quite set yet, I do hope to discuss how things are running, and how to get them running even more smoothly. Perhaps I will chime back in after the meeting with more details.

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , , , | 2 Comments »

Real Tab Support in Bespin, Part 2

Posted by Gordon P. Hemsley on March 21, 2009

A couple of days ago, I blogged about trying to add real tab support into Bespin, and about the discussion going on about where that code should live. However, I can now report that, not only have I been successful in my endeavors (again, if you count my first attempt), I have been able to accomplish it solely within the Cursor Manager. This means that I have gone against what I had originally argued for, and I did it by simply starting over.

My first few attempts helped me get familiar with the code that controls the model, the cursor, and the editor. (MVC, as Ben referred to it. But no, not that MVC.) But attempting to switch between model-awareness and cursor-awareness just cluttered up my code and confused the heck out of me. So I saved everything I had in a little patch file, then reverted all my changes and began anew. (Having Ben first commit some basic cleanup stuff I came across certainly helped to clear things, too.)

So I approached the problem logically, with none of the conceptions from my prior attempts, other than my new-found familiarity with the code. This allowed me to focus on the one task that I had: keep everything in cursor. It also helped prevent me from having dozens of search windows up trying to figure out where things were. And, after a bit of minor confusion about object state persistence and object cloning (thanks, kdangoor!), it was done pretty quickly. But it does require that any position coordinates that are sent to the model be translated via the new getModelPosition().

Since Julian Viereck has been “messing around” with “my” code a lot lately, and since this darn task has taken up a good chunk of my day every day this past week and a half, I decided to put up my own public clone of the Bespin repository on BitBucket to keep things running smoothly. That way I can mess around with things, too, and not get in other people’s way (as much). My code for the tab support is available in this changeset, in addition to this attachment on the bug.

So go merge or import or whatever it is you do in Hg, and give my code a whirl. If you find anything amiss, don’t hesitate to let me know. I would imagine Ben will be critiquing my code at some point soon and then eventually getting it into the main source. Enjoy!

Posted in Mozilla, Open Source | Tagged: , , , , , , , , , , , , , , , , , , , | 1 Comment »

Real Tab Support in Bespin

Posted by Gordon P. Hemsley on March 18, 2009

Over the past week, I have been attempting to add real tab support to Bespin (bug 474055), under the guidance of Ben Galbraith (bgalbraith). Discussion on this issue has ensued in many places, including on Ben’s blog (in which he indirectly called me a weird hippie), as well as in at least two topics on the Google Group/mailing list Bespin Core.

The issue behind supporting real tabs is getting the editor to know that a tab is a variable width character. I was able to solve the problem of calculating just how wide that character is supposed to be, but that turned out to be the easy part. The problem that I’ve/we’ve been having is whether to contain all that knowledge in the cursor code (since it is essentially only a display issue) or to allow it to seep into the model code (which does all the actual text manipulation). That discussion is still ongoing right now, but either way, the change would require a little bit of refactoring of a lot of different functions, so that we can keep track of whether the function is getting the cursor position or the model position (as the latter is really just the nth index in the array, with all characters being equal).

So that’s where I’m at now. I’ve tagged the bug with the “student-project” keyword, since I’m a student and I’m working on the project, and I’ve posted a couple of patches in the bug to track my progress (the first one actually works, for the most part; the second one, not so much). All suggestions welcome.

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , | 1 Comment »

Working on the Cloud

Posted by Gordon P. Hemsley on March 6, 2009

This is just a quick post to note that I have recently been working with the lovely folks in #bespin (including Dion Almaer [dalmaer]) and helping them out with some minor stuff. I’ve filed a few bugs (namely, bug 481486, bug 481511, and bug 478610) and fixed another (bug 478446). The first bug was a quick fix regarding logging in, and was pushed live to bespin.mozilla.com rather quickly in the form of version 0.1.5 (“Nonchalant Nimbus+”). The second bug was actually fixed by another bug, which also fixed a number of bugs I’d noticed and mentioned in the channel, but never officially filed. The third bug still exists, but is probably still over my head, as it requires removing the display of lines in the area where the scrollbars would/should be. And that fourth bug was a quick regular expression fix to add support for plus signs and underscores in the e-mail addresses used to register on a Bespin implementation. The second and fourth bugs are currently only fixed in trunk, and I don’t know what the plan is for pushing them live. The third bug has yet to be fixed.

I’ve also taken the liberty (with dalmaer’s blessing) of porting Bespin’s README.txt file to MozillaWiki as the starting point for the Developer Guide (which was mentioned in the User Guide as an upcoming document). Work still needs to be done to move any relevant content from the User Guide to the Developer Guide, but I’m heading to bed, because I’ve got a plane to catch for home tomorrow afternoon. (Your help in the matter would be greatly appreciated, though!)

I do want to note first, however, that throughout all this I’ve been implicitly testing QA build 2 of Firefox 3.1b3 (to be released next week), and everything seems tip-top at the moment (with 126 tabs open, no less!).

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , , | 1 Comment »