Rich Internet Applications

Microsoft’s “Silverlight” announcement a few days ago has gotten a lot of positive early attention (see here and here and especially here for examples) and focused attention on the category of Rich Internet Applications. The Mono folks have announced that they’re going to do a Linux version, tentatively codenamed “Moonlight.” OpenLazlo, a pioneer RIA, has been discussed as a Google acquisition target, if AJAX and the persistence engine planned for Firefox 3.0 aren’t enough. And Silverlight, uh, overshadowed Adobe’s recent Flex announcement.

All the initial reports suggest that Microsoft, presumably under the watchful eye of Ray Ozzie, got this one right; it’s fast, small, beautiful, and reclaims space for Microsoft on the desktop. Can Office on Silverlight be far behind?

I’ve used the New York Times Reader (free trial, $15/mo., included with paper subscription) which is based on Silverlight and it is a great experience. You don’t need to be online to use it; in fact, it sort of blurs the distinction between being on and off line to the extent that you don’t really care so much. And it has rich controls for viewing, much better, because it’s customized for reading a newspaper, than a plain old browser, even with all the cool Javascript and prefetching tricks.

Lazlo claims some corporate customers, but from what I’ve seen Rich Internet Applications are in their infancy in the enterprise. Silverlight’s got an advantage there, of course, because of all the armies of VB and .Net developers who now have another tool at their disposal; it will be interesting to see what they build.

Project Box

Introduction

Lazyweb, we need your help!

Niel Bornstein and I came up with this idea on the proverbial napkin in a bar. The problem that we wanted to solve is common in our line of work: we were working on a project (a data center Linux strategy and architecture) with a team of a half-dozen people at a client site without Internet access. The client was (overly?) concerned about data security and wouldn’t let us onto their corporate network and we didn’t have any other mechanism for getting out to the public Internet. Yes, there are places in the world without broadband wireless. Yes, we did find a coffee shop with wireless.

Niel and I thought that a good solution to this problem would be to have a small physical box that we could all connect to and use for collaboration. It would need to have some kind of storage and either wired or wireless connectivity. We thought that we could load it up with useful information ahead of time (templates, previous projects, code snippets, interview guides, and so forth) in addition to a standard set of collaboration tools (messaging, calendar, wiki, etc.) Niel, I think, jury-rigged a prototype together out of a spare HD and WRT54G router, but the idea never went anywhere.

Description

The ProjectBox is a small portable computer and (optional) wireless router which provides several services for short-term consulting teams. The requirements are:

  • Network segment infrastructure
    • DHCP
    • DNS
    • Print spooler
    • NAT (for when the client network allows connection)
  • Central file storage with revision control in a standard directory structure
  • Collaborative document creation
  • Presentation rendering
  • Shared calendar for project tasks and meetings
  • Directory infrastructure for Novell and client team information
  • Web-based access and administration
  • Offline synchronization

Accordingly, the ProjectBox will have the following services enabled:

  • DHCP/DNS
  • Apache
  • FTP server
  • Subversion (too heavyweight? alternatives?)
  • Shared calendar (caldav?)
  • OpenLDAP? for contacts, or maybe just flat files
  • Twiki
  • s5
  • CUPS
  • Storage with standard directory structure and templates

A key requirement is the price point: less than $200

As much of the functionality as possible must be available as open source software.

The Project Box hardware could be a small laptop with a decent-sized hard drive, or it could be a small PC. (Could we use something even smaller/lighter?) A small ethernet hub or wireless router is also required.

Web-based interface requirements

  • Configure networking; set offline/passthru mode
  • File management
    • Create project structure
    • Upload file (with revision control)
    • Download file
    • Synchronize files
  • Contact Management
    • Add contact
    • View/Edit contact
    • Delete contact
  • Calendar Management
    • Add appointment
    • View/Edit appointment
    • Delete appointment

Hardware options

1. Linksys WRT54G (or comparable) wireless router running Open WRT (or Tomato, my new favorite)
Pros:

* Pretty cheap
* Known to run Linux

Cons:

* No USB ports for attached storage

2. Mini-ITX
A very small, quiet PC that could run SLES10

Pros:

* Fanless, so it’s quiet

Cons:

* They don’t tend to be very durable
* Not cheap

3. Linksys NSLU2
A cheap NAS appliance that can run Linux

Pros:

* Cheap cheap cheap

Cons:

* Storage not included
* Storage enclosure not included
* Wireless not included

Proposed Architecture

So, given all that, here’s what the proposed box might look like.

Hardware

  • CPU + Router: Linksys WRT54G
  • Storage appliance: Linksys NSLU2
  • Storage device: any USB drive

Software

  • Operating System: OpenWRT/Tomato
  • Additional packages: * *

References

* http://xent.com/pipermail/fork/Week-of-Mon-20040816/031401.html

The wireless part is optional, but the router part is required, I think.

The only custom developed part would be the web front end, correct?

I would prefer to use, instead of a full-on PC, a modified wireless router running Open WRT or something similar, with a hard drive in an external exclosure. Is that possible?

The wireless router as CPU is a nice idea, but it seems like attaching storage will be difficult at our price point — most of them do not include USB ports. Maybe a better way to go would be a gumstix, Mini-ITX, or similar very small box for the processor, with external storage and external wireless router.

Novell and OpenID

Dale Olds has two (!) good blog entries today about Bandit, in which he describes how Bandit supports other open source identity projects, including OpenID, and adds authentication, authorization, and audit functionality. He writes,

You might say that accelerating convergence, contributing code to other projects, and some authentication code is necessary before we can build effective authorization and audit components. We need a cohesive, distributed identity system. But we also know that when we get such a system, some critical issues involving authentication, authorization, and audit will surface.

Bandit focuses on simple, reusable components for authentication, authorization, and audit. These capabilities are most recognized as needed in enterprise identity systems, but I think they will be needed in other places as well. The recent experiences of the Bandit team and others are confirming this. Once applications or services (web based or otherwise) start to actually be used by more than a few users and sources of identity, they immediately find they need a general, scalable solution for authorization and audit.

Posts here and here.