Open Source Companies

A while back I read this post on @mjasay.

It's an interesting post, but made me think about things in a slightly different way. Supposing you are company planning on building support around an open source project. For example Enfold Systems (Plone) or Acquia (Drupal), how do you do that?

The licensing of your project can be a real hinderance since you may or may not be able to code to the project. For example both Drupal and Plone are GPL'd. This puts a limitation on what you can do as a company. If you write a piece of software that includes libraries from the afore mentioned project, your software will (if distributed) have to be GPL'd as well.

This can be a problem if you are trying to monetize on closed source software. I think there are areas of open source projects that can need closed source software. For example, Plone has never done very well at sophisticated reporting. Reporting is boring work that no-one want's to do but enterprises love. Audit logs. Windows integration (what hacker works on windows, c'mon) and so on.

So instead you get to focus on other things. The obvious things: support, training, documentation. But also integration with the project that does not hit the GPL. At Enfold we worked on Windows desktop client, Windows installers, Windows web server integration, for example. Partly because these areas of improvements fell outside of the GPL.

there's already a breed of company that is actively following this advice, and it's the commercial open-source projects like JBoss, MindTouch, Openbravo, Pentaho, etc., as well as foundation-led efforts like Eclipse and Mozilla. Such organizations already know how to add the polish, documentation, and features that an organic community may lack
Matt Asay

In Matt's post he points out that companies are working on this, just like Enfold and Acquia. But it's interesting to note, that as a company, your choice can be hampered. It's great to work on and release open source code, but unless that money can come back in via support, consulting or one of your other services, your business might be have a challenge.

It would be interesting to look at companies and see the offerings they provide around their project. For example Acquia seems to be offering hosting and support (primarily). Alfresco seems to be offering hosting and support, but also a paid product. Because Alfresco is dual licensed.

It's good to see companies providing this level of support it's important to make the project a success. But it is curious to see how the license can really impact what a company does around the project.

Making a table row clickable

This one is quite old, but I just spent a bit of time fiddling with the listings page on Arecibo. I really hate that when I've got a table, I have just one link to view the item in the whole row, that's just unfriendly. So I did some googling and spent some doing exactly what I shouldn't of: fiddling with CSS and making it all into spans.

Today I remembered that tables in HTML are damn good at displaying tables and threw that out. Instead a quick jQuery can grab all the rows and make them link to the first link in the row:

            $('table.listing tbody tr').bind("click", function() {
                window.location = $(this).find("a").attr("href");
                return false;
            });

And remember to turn the cursor into a pointer so it looks more like a link:

   cursor: pointer;

Elementary stuff, but i'll be able to find this code next time and the Arecibo user interface is just that bit nicer.

Announcing Arecibo

One of the problems I find annoying in web development is the bug reports from users. It could be your application has gone live, or it's still going through testing. But feedback tends to be vague "I clicked this and it didn't work" or some such.

There often follows a few emails with questions like "what browser did you use" or "did you get an error message". Those emails are time consuming and expensive. They also have an air of unprofessionalism about them. Why can't you figure this out for yourself?

In some applications like Plone or Django the error handling is well developed. But in others (e.g. Rails) it's not as good. Plus, we rarely have the luxury of living in an isolated world. One application I developed a while back had an Apache front end to Moodle (PHP), Django (Python), Rails (Ruby) and Plone (Python). When an error occurred, looking through all the different possible logs was not easy.

For this reason I'm announcing the beta of Arecibo. It's a hosted service that listens for errors on your websites. When an error occurs a HTTP post or email containing the details can be whisked off to Arecibo, allowing you the developer to view the error and all its details. Arecibo can send out notifications if you wish via Twitter, email, RSS feeds and the like.

Currently there are implementations to allow you to send issues to Arecibo from JavaScript, Python, PHP, Ruby and more detailed ones for Django and Plone. The JavaScript one is really nice because in just a few lines of JavaScript, you can have servers like Apache send your errors to a centralised repository.

It's currently in beta and available at http://www.areciboapp.com, there's currently no limit on signing up, but if it's popular I might lock it down. Give it a try, kick the tires, tell me the bugs (well the ones Arecibo didn't catch).

Clouseau 0.7 released

Changes in this version:

  1. Fix tab handling in safari, yay!
  2. Doing an assignment will give you a tooltip too
  3. Truncate large messages. If a message is large it won't get syntax highlighted, and you can click to expand it. This makes the scrolling much nicer and increase performance
  4. Nicer bigger Ploney font for results
  5. Clean up error messages

Download: Clouseau.0.7.1.zip

Update forgot to check collector and found an old bug I fixed so sneaked out 0.7.1.

NaiveBlog 0.1 released

There is lots of blogging software out there for Plone and a lot of is very complicated. I don't need any of these things in a blog. I don't need custom skins or ui. I don't need a workflow. So all I really need is what NaiveBlog gives me. A content type that's a copy of News Item and a smart folder that shows them. It's called NaiveBlog for a reason. Download: NaiveBlog 0.1 Or alternatively just run the recipe in Clouseau: naive-blog.py

ClearContents 0.1

JavaScript table of contents Simple little JavaScript product to add in a "Table of contents" that serves as a useful navigation through a large page. For example if you've got a large document, that has more than 2 or 3 headings, this will appear. It automatically adds in "return to the top links" on every heading field. Download: ClearContents.0.1.zip.

Clouseau 0.6 released

This release has a few ui fixes and a few minor bug fixes. It comes with auto-complete. As you type away you'll see the auto complete below the prompt area. Clicking tab will auto-complete the text. Makes getting to those key elements very quick and easy. Remember, installing DocFinderTab will give you more complete tool tips. This will make Clouseau feature complete, now we have to push to a 1.0 release with lots of bug fixes and cleanup. Download: Clouseau.0.6.zip.

Clouseau 0.5 released

Clouseau 0.5 features a load and save ability. You can take your session that you've spent 10 minutes and click "Save" to save it to your local file system. They can then they be loaded back in, returning you to your original state. Just to make any security hole in Clouseau bigger, it can now load sessions from URL's. Meaning you can have code on plone.org, or say paste.plone.org and automatically pull it into Clouseau. Look for recipes about to appear soon. Download: Clouseau.0.5.zip

ClearRSS 0.1 released

ClearRSS is an RSS news feed parser written in Ajax, that uses the AjaxProxy to pull RSS feeds from remote sites and display them in your site. This is a quick 0.1 release, I haven't tested it in IE but it worked for me in Firefox. Volunteers to get this to a 1.0 welcomed. RSS feeds are sped up dramatically by local Zope caching of them. This follows on the Ajax Services theme. Note: that the RSS parsing code is actually re-used from another non-Plone project and then customised which is why it only took and hour to write. Download: ClearRSS.0.1.zip

ClearSpell for Plone 1.0 Released

ClearSpell for Plone 1.0 is a prototype for providing spell checking in Plone using Ajax and the AjaxProxy. This provides spell checking with almost zero server or client side set up or configuration. More information at: ClearSpell

Ajax Proxy for Plone 1.0 Released

Ajax Proxy for Plone 1.0 is a tool for proxying requests from a browser using Ajax on to a remote server. This allows you to proxy local requests to Plone on to a remote server. On the way requests can have:

  • Zope security applied to the requests
  • Caching applied to the requests to improve performance
More information at: AjaxProxy

Vancouver Python Workshop

The Vancouver Python Workshop is taking place in August, 2006. As an organiser ClearWind is processing all payments for the conference. Andy will also be speaking there. If you have any questions regarding registration please contact andy@clearwind.ca.