Paver 1.0a2 released!

I’m happy to announce that Paver 1.0a2 has been released! And, unlike Paver 1.0a1, it installs (thanks to Greg Thornton for the patch for that!). I’ve been quite busy with other projects over the past month, so I appreciate the help of Marc Sibson and Greg Thornton in making 1.0a2 a nice improvement over 1.0a1.

Paver 1.0 is still for the slightly adventurous, because it has not yet seen testing by many people. Paver is not complex code (and Paver 1.0 is, I think, less complex than Paver 0.8 was), so it’s not hard to dig in if you have a problem.

Assuming nothing major comes up, I expect Paver 1.0 final to be out by PyCon.

Speaking of PyCon, I won’t be attending PyCon this year as I have a lot of other things on my plate at work this time around. Mark Ramm will be doing the Paver talk in my stead, just as he did at PyOhio last year.


280Atlas looks amazing

If you haven’t seen it yet, you really should watch the demo of 280Atlas. It’s basically Interface Builder written for the browser. Just watch their demo and tell me that that doesn’t look like a great way to build webapps (and I do mean apps and not sites).

A lot of work goes into designing good software. 280North are taking the great design work put in on Apple’s developer tools and making it available to people building browser-based apps. They’ve saved themselves the work of inventing every little piece of the model, instead focusing on the work of making it work well in JavaScript.

Awesome work, guys!


Introduction to the Bespin Python backend

It’s been less than two weeks since Bespin was introduced, and there’s already been an impressive amount of activity around the open source project. There are at least 3 entirely new Bespin servers that I’m aware of.

The current Bespin server that we at Mozilla are maintaining is written in Python and appears in the backend/python directory in the Bespin source. To help people get up to speed with the code, I have created a screencast to help people get started with the Python backend and give them an idea of how the code is set up.

I look forward to hearing your feedback!


Bespin Python Backend Overview from Kevin Dangoor on Vimeo.


This Week in Bespin (Feb 23)

I’m crossposting this from the Bespin googlegroup.

Before moving on to the week that is coming, let’s look back at the week that was:

Week of February 17th:

  • Version 0.1.2 of Bespin was released. Notable changes:
  • System clipboard copy and paste now works in WebKit. Firefox will almost work. Vote up this bug:   https://bugzilla.mozilla.org/show_bug.cgi?id=407983 
  • Project names now need only to be unique per user. Previously, they had to be globally unique. This reflects a bit of a change to how we were viewing collaboration. (More on collaboration to come).
  • Thanks to that change, the sample project has been renamed from SampleProjectFor:yourusername to just SampleProject.
  • Speaking of project renaming, you can now rename projects from the dashboard or the editor using the “renameproject” command. New ”createproject” and “deleteproject” commands make project-level changes much clearer.
  • Every user now has a visible “BespinSettings” project. You probably      won’t be surprised to hear that it stores settings for Bespin! You can put custom code (set autoconfig on and put code in config.js) and commands (use the cmd* commands) in there.
  • The login form is now a real form, which means that your password manager can save your Bespin login information.
  • Client and server implementations can make sure they’re in sync with the X-Bespin-API HTTP header that is returned from the server. The current API version is 2 (which adds the renameproject API).
  • key repetition works for arrows and backspace and lots of other minor fixes.
  • As Dion noted, Boris Bokowski and Simon Kaegi coupled the Bespin Editor with a headless Eclipse . The screenshot showing Java compiler warnings within Bespin is worth at least a couple thousand words!
  • Jerome Velociter got the Bespin editor running in XWiki . Avi Bryant hooked the dashboard and editor up to Squeak :. It’s been amazing to see the integration going on so far.
  • Oscar Carballa kicked off the creation of a User Guide for Bespin
  • Mozilla’s Joe Walker started working on the collaboration spec. The model that he’s looking at is designed to allow you to share a project with many people and give them access to view it/collaborate on it in different ways. So, you’ll be able to selectively use collaborative editing with some people, do a “webcast” style sharing with others and more.
  • Three more google groups have been announced: bespin-core covers the development of Bespin’s code, bespin-dev is for people who want to develop extensions for Bespin. Community member Guilherme Santos created the bespinbrasil group for Brazilian Bespin users.
  • Coming up this week:

    • Ben and Dion are in Miami for Future of Web Apps where they will be showing off Bespin.
    • Joe is continue to work on collaboration and is experimenting with Neil Fraser’s mobwrite.
    • I will finally be getting to work on the version control spec, and hope to be starting on the version control backend code.
    • And we’re all going to be working on bug fixes and minor enhancements.


    Creating a web framework with WSGI video

    Creating a web framework with WSGI on Vimeo

    The Michigan Python Users Group (MichiPUG) meeting topic from February 2009, presented by Kevin Dangoor. This screencast video shows us using WSGI components to build up a web framework piece-by-piece.

    By the way, for people who are interested in working on the Bespin server, this is the kind of “web framework” that the server is built upon.


    Bespin: code in the cloud

    Despite working for an open source company, I have been pretty quiet here about what I’ve been doing in the Mozilla Labs web developer tools group. No more. We’ve gone public!

    Mozilla Labs » Blog Archive » Introducing Bespin

    Bespin proposes an open extensible web-based framework for code editing that aims to increase developer productivity, enable compelling user experiences, and promote the use of open standards.

    I started working on Bespin as soon as I joined Mozilla, hitting the ground running with a new Python server. Ben and Dion had already done a lot of work and experimentation on Bespin prior to joining Mozilla in December, so I must confess that I am still fairly ignorant about the Canvas-based magic that they’re doing in the UI. But, Bespin has an architecture that lends itself well to selective ignorance: the server provides a RESTful API, and the client is responsible for all of the presentation. For their part, Ben and Dion have been able to be blissfully ignorant about the inner workings of the Python server.

    Of course, I’m not a JavaScript noob and have done some work in the client, but my focus has been the server. Now that we’re out in the open, you can definitely expect that we’ll be talking more about how things work and how you can bend Bespin to your will. Bespin is honest to goodness open source (MPL-licensed), so it becomes an open and collaborative effort starting right away.

    The initial reaction has been fantastic. There are tons of people hanging out in #bespin on irc.mozilla.org, and the mailing list has grown to a couple hundred members already. Thanks to everyone for jumping in with your thoughts and patches!

    Here’s some of the coverage:

    Dion’s post at Ajaxian:

    From Dion’s personal blog:

    Foolish chaps and companies have come to me in the past thinking that open source will be a silver bullet for “getting other people to do our work.” Those that have been involved in open source know that it isn’t the case. It is often more work. But, it is worth it.

    From Ars Technica:

    The project is still at an early stage of development and there is clearly a lot of work to be done before it will be able to deliver the same practical value as existing desktop editors. Despite the limitations, it shows an enormous amount of promise and has the potential to eventually deliver a user experience that rivals even the best text editors.

    From Five Questions with Dion Almaer:

    Now the browsers are moving fast again and building a first class platform for us to develop, the Open Web Platform. Instead of getting bogged down thinking about what IE 6 gives you, take some time to think about what you could build with the latest technology. I realise that you have to be pragmatic and get things working with your audience, but browsers are changing, and so are expectations.

    From What Mozilla’s Bespin Bespeaks (ComputerworldUK):

    You can see that Bespin is ticking all the Mozilla boxes, but what’s also striking is that this is a Web-based project: Mozilla is entering the cloud. It’s a further shift to viewing the Web as a platform for doing, well, just about anything. Clearly, against that background, open standards are even more important. And not only for the code: another issue that Mozilla will need to start addressing publicly is that of open data. As more stuff moves into the cloud, it become imperative to establish minimum standards for access to the data that is held there. I look forward to hearing Mozilla’s views on the subject.

    While I certainly don’t speak for Mozilla, I would be extremely surprised if there’s anyone at Mozilla that believes that users should have anything less than full access and ability to take their data with them. There can be technical issues involved in providing the data, but the data should be available in some reasonable form. Bespin, for its part, makes it easy to export a project in a tarball or zipfile.

    I was surprised to see Bespin covered even on Lifehacker:

    Primarily, Bespin is a text editor—the kind you’d use for editing code or managing text-based todos. Using Bespin, developers could collaborate on projects through a unified interface (that still supports plugins!) no matter where they are—so long as they’ve got a browser.

    cnet has the story, too:

    For example, what about integration with open-source software repositories? If it’s flexible enough, Bespin could essentially act as a source code viewer that repositories such as SourceForge or Google Code could employ.

    A nice writeup on the ReadWriteWeb as well:

    It’s clear that a great deal of thought and attention went into this early version – and it’s a safe bet that it will only get more impressive as time goes on.

    RWW last month surprised me with their coverage of me joining Mozilla.

    I’m having a great time at Mozilla so far, and it’s great to be out in the open working with so many people now on Bespin and ServerJS.


    Extended warranties come to downloadable software

    You know those extended warranties that they always try to sell you at electronics (and other) stores? Remarkably, the concept has just been applied to downloadable software!

    What Is eDS?

    eSellerate Download Service (eDS) is an extended download service that you can purchase to protect all downloadable software in your order. With eDS, you will be able to re-download exact copies of the software you purchased, for a period of 1 (one) year after the date of purchase.

    It looks like they charge 5% for this service. Wow. Isn’t it a better idea to just have backups?


    Product Activation sucks.

    The music industry has figured out that DRM doesn’t work and does more to annoy real customers than it does to stop thieves. If they had paid attention to history, they would have found that in the 80s and early 90s, the software industry had already learned that lesson.

    Recently, I moved from an older Mac laptop to a new one. I used the Migration Assistant and everything came across just fine and appeared to be working just fine. Then, last night I recorded a video using ScreenFlow at the MichiPUG meeting. Much to my surprise, it said that it was an unregistered copy. Entering my license key didn’t help, because it said the number was “expired”.

    I also had a suspicion about another product I own, Kinemac, and sure enough it had gone into an unregistered state.

    Before wiping my old computer, I did think to deauthorize iTunes. But, is someone seriously going to remember to deauthorize every random program that uses that technique? What a waste of time!

    So, shame on you Vara Software (ScreenFlow) and Kinemac for not learning from history. I have no doubt that they’ll take care of getting me up and running again… that’s not the point. The point is that every other commercial program I use has continued to work just fine (Apple’s software, Things, Pixelmator MenuCalendarClock, TextMate, Leap and everything else I’ve tried that I’m forgetting).

    Update: It looks like the issue with ScreenFlow may not have
    been a bad product activation system. Vara Software was acquired by
    Telestream last year, and I think their product licensing system
    switched over to Telestream’s in the process. So, my old Vara Software
    style serial number was no longer valid. Their tech support people had
    me “repurchase” the software with a coupon code that made it free, thus
    giving me a valid, up-to-date serial number.


    ServerJS: one week into building a better JavaScript

    It’s actually been 8 days now since I introduced the ServerJS group. As Peter Michaux mentions in “A Bright Future for Standardized Server-Side JavaScript”, the group has gotten off to an absolutely blazing start. As it stands this morning, there are 224 members who have posted 653 messages in 8 days.

    There’s something more important than the numbers, though. Many people who have joined the list are deeply experienced in JavaScript-outside-of-the-browser. Everyone comes along with experience from other programming languages and environments. And all of knowledge and experience is being put to work in figuring out the approaches we want to take with modules, files and binary objects, as just a few starter topics.

    You can see some of the work in progress on the ServerJS wiki. Note that the wiki has moved to wiki.mozilla.org.

    The interest in server side JavaScript is self-evident, given all of the different projects and frameworks that have grown up around the concept. What’s new here is that these projects are getting together to form a real ecosystem, rather than standalone tools.

    I think that better server side JavaScript tools will ultimately help web developers produce better user experiences more quickly, which fits in quite nicely with our goals in the Mozilla Labs web development tools group.

    I expect that the coming week will have some even more interesting discussions than the last, so now is a great time to join up if you have ideas on what you want to see in JavaScript as a server side scripting platform.


    MichiPUG meeting Thursday: WSGI web frameworks

    Reminder of Thursday’s MichiPUG meeting:

    The next MichiPUG meeting will be on Thursday, February 5th at 7PM. Kevin Dangoor will lead a discussion/demo on building your own custom web frameworks with WSGI. As usual, the meeting will be at the SRT Solutions office in Ann Arbor..