Tuesday, September 11, 2007
RI Nexus Beta
Check out the beta of the new RI Nexus site, full of news and resources about information techonology and digital media in Rhode Island.
I wrote some new Drupal modules to support it. Feedback and suggestions are welcome!
Tuesday, September 4, 2007
Announcing Migraine, a Drupal Site Migration Tool
Thanks to Noosphere Networks, I’m releasing a script that helps developers of web sites built with Drupal to maintain separate development/test and production sites, pushing changes from test to production as needed. This is challenging with a stock Drupal installation. Changes to PHP code are no problem, because it lives in the filesystem and can be copied or committed to a revision-control system like Subversion. But a lot of Drupal’s configuration work take place within its web administration interface and is saved to the database, where production content such as user accounts and comments is also stored.
The desire to do this frequently comes up on Drupal’s forums, and the typical workarounds have some large drawbacks (involving some combination of extended downtime on the production site, duplication of work, and the loss of content, comments, and user account changes made in the interim).
This small script attempts to solve that by categorizing Drupal’s tables and moving only the right ones at the right time, while handling details such as merging sequence numbers. It also dumps Drupal’s databases to disk in a format that works well for checkin to a revision control system.
This is free software, licensed under the GPL.
There’s a more ambitious project called AutoPilot that aims to do this and more in the future, but its ability to merge test sites into production without losing production content isn’t available yet, and I needed something now.
Be warned, though, that this is an alpha release, intended for those with familiarity with MySQL and Drupal’s table layout. If you have CCK fields, there may be some manual work required when you modify your field layout because CCK tends to change your database schema, and Migraine does not currently attempt to automate all of those changes. It will detect them and warn of the problem, however.
See more information at the Migraine project page.
Monday, September 3, 2007
Providence PHP September Meetup
I’m holding the next PHP meetup for the RI area tomorrow evening (Tuesday) at Trinity Brewhouse in downtown Providence.
If you’d like to join us for free-form discussion of web development, PHP, and various types of beer, please RSVP.
Tuesday, March 27, 2007
Providence PHP Meetup: Tuesday, April 3
We have a new location and a guest speaker for our April meetup. Nate Abele of the CakePHP project will be here to show off the rapid web development framework and answer questions. We’ll make time for discussion too.
The new location is a really nice conference room at the Johnson & Wales Academic Center, with everything that implies (i.e. a projector).
All programming skill levels welcome. If you’re going to be in the Providence, RI area and can make it, please see here for more details and to RSVP:
Providence PHP April Meetup [meetup.com]
Friday, June 24, 2005
Announcing fs2svn: make a Subversion repository from archive folders
fs2svn is a new, free, open-source tool that converts a bunch of archive folders into a Subversion repository.
If you’ve kept a series of historical snapshots of your work in folders, fs2svn can help you upgrade to a full-fledged version control system.
fs2svn goes through all the folders under a given parent folder (in filesystem order) and creates a Subversion revision for each one, backdated to the most recent file’s last modified date. The log message is set to the folder name.
Additions, changes, and deletions between one folder and the next are all recorded in the repository.
The input format is very simple. It only covers the mainline trunk, not any tags or branches (though tags for major versions could be manually created later, if your folder names carry enough information).
The format is so simple it could be used as a common intermediary. If you wanted to migrate a mainline trunk from some exotic version control system to Subversion, you could write a script to export it to regular folders, then use this script to import the result into Subversion.
See the main fs2svn page for information, examples, and to download.
Thursday, June 10, 2004
WordPress RSS Import
WordPress 1.2 now has an its own RSS import feature. However, it’s based on a different technique (regular expressions) than the code I contributed in January (which uses a true XML SAX parser). So I’m posting the code here as open source under the GPL license. This code has some additional features:
- It can import single files from either your local drive or from a URL you specify, or it can import entire folder hierarchies of RSS files (blogBrowser-style: one folder per year, one file per month), making it a general-purpose weblog batch import tool using RSS as the exchange format.
- It aggregates RSS feeds, if you point one or more copies of it at feeds on the web and set it to run regularly. (Even when run frequently, it won’t import the same item twice.) You can also use this to maintain more than one WordPress site that shares the same content, such as a test site and a production site.
- It handles time zones in a sophisticated way, preserving the timezone offset so that each item can appear on your weblog under the author’s original local time, while using GMT for all date comparisons.
- It respects and stores modification dates if given in the RSS file.
- If modification dates are given in the RSS file, it can optionally import only new or changed posts, leaving posts alone that haven’t been changed or that have been changed more recently on the local machine.
- Using the above feature and two copies of WordPress, it can synchronize two or more weblogs, bidirectionally or multi-directionally. New and changed posts on any one weblog will automatically show up on the others.
- It complies with the XML specification, for correct behavior with XML namespaces with arbitrary prefixes and CDATA sections in arbitrary locations, both of which can trip up a regular-expression-based parser.
As long as your RSS feed passes the XML well-formedness test (which it probably does, even if it doesn’t validate according to the RSS Validator), you can use this RSS Import filter. If it’s not well-formed XML, you’re better off with the RSS import filter built into WordPress.
Versions are available for WordPress 0.9 through 1.2.
More Info and Download
Wednesday, February 18, 2004
RSSFilter
Now available: RSSFilter, an open source Python module for modifying RSS files and blogBrowser-format RSS archives in place. It builds on XMLFilter. (Speaking of which, thanks to Mark Pilgrim for its recent mention in his b-links.)
The module can also be used an RSS parser for valid XML feeds, though it trades in ultra-liberal parsing for its ability to safely modify files.
Operations such as inserting, modifying, or deleting a post are designed to cause minimal disruption to the rest of the file.
Read more and download.
Monday, January 26, 2004
iPhoto comments, flattened with Text File Technology
Here’s a way to back up iPhoto’s image comments into an easy-to-read flat directory structure. (Translation: one big folder.) You’d want to do this when archiving your photos to CD or DVD, or when trying to merge photo libraries, or when leaving iPhoto for another program, or at any other time you want your comments saved in a non-proprietary, easily readable format.
As you may have read last week, when I upgraded to iPhoto 4, all the image descriptions temporarily disappeared from my online photo albums. (I caught the problem on my own staging server before it appeared on this site.) The culprit was a change in the way iPhoto stores photo comments. Comments are now entirely gone from the easy-to-parse AlbumData.xml file; iPhoto now stores them in a binary format that appears to be proprietary.
AppleScript to the rescue. Last week’s script saved the comments to text files and generated a directory structure that exactly paralleled iPhoto’s library, with one text file for each comment. These files were in folders for each day, which were in turn inside folders for each month, etc., guaranteeing there would be no name conflicts. I had rejected using the internal ID of each picture (which would have allowed a flat conflict-free directory structure) because the ID wasn’t user-visible anywhere in the iPhoto interface, making comment files named for the ID difficult to map back to the original pictures.
One of the comments on that post asked for a version that generated the comment files in one folder, based on the image’s filename. That was a good idea. Though the filename is not guaranteed to be unique, it often is in practice. Most digital cameras save unique serial numbers for each picture as part of the filename. So this is enough for most people. (The exceptions would be if you have more than one digital camera using a similar naming convention, or if your camera is configured to reset its numbering between rolls.)
If you like guaranteed accuracy, use my original script; if you like simplicity, use the following alternate script. It will only save one of the conflicting comments if photo filenames are duplicated. Dropping the parallel folder structure simplified the script, since this version doesn’t need to employ any POSIX path manipulation.
Copy the following into Script Editor and run. Tested with iPhoto 4.0 on Mac OS X 10.3. (It may also work with earlier versions; drop me a comment below if you’ve tried it.)
-
- Export iPhoto Comments - Flat
-
- Creates a text file corresponding to each picture with a comment, containing just the comment. The filenames of the text files correspond to the filenames of the images. So avoid having more than one image with the same filename (taken by two different cameras with similar naming conventions, perhaps). This isn’t a problem for most people, but if it is for you, use the slightly more complex version of the script that duplicates the iPhoto folder hierarchy: <http://www.shearersoftware.com/personal/weblog/2004/01/18/iphoto-4-has-comments-no-more>.
-
- Note: this does not remove files in the comments folder when a comment disappears (due to deletion of either the comment or the image). To guard against this, you may want to delete the whole comment folder before rerunning this script. (Using a separate folder rather than storing comment files alongside the image makes this easier; you can flush the whole cache at once.)
-
- Written to work around the fact that iPhoto 4 no longer stores photo comments in the AlbumData.xml file.
-
- by Andrew Shearer, 2004-01-25 <mailto:ashearerw at shearersoftware dot com>
-- config
set commentsFolderName to "iPhoto Library - My Comments Cache - Flat"
set stripJPG to true --whether to strip .JPG extension
set openFolderInFinder to true
set commentFileSuffix to ".comment.txt"
set requiredAlbumPrefix to "Web-"
-- end config
tell application "Finder"
--return some folder of (path to pictures folder)
if not (exists folder named commentsFolderName of (path to pictures folder)) then make new folder at (path to pictures folder) with properties {name:commentsFolderName}
set commentsFolderPath to folder named commentsFolderName of (path to pictures folder) as text
end tell
--set commentsFolderPath to POSIX path of (path to pictures folder) & commentsFolderName
tell application "iPhoto"
repeat with theAlbum in (
every album whose name starts with requiredAlbumPrefix)
repeat with thePhoto in (
every photo of theAlbum whose comment is not "")
set commentText to comment of thePhoto as Unicode text
set commentFilename to image filename of thePhoto
if stripJPG then
-
- strip .JPG suffix (optionally)
if commentFilename does not end with ".JPG"
then
error "Error: file does not end with .JPG: \"" & commentFilename & "\""
end if
set commentFilename to text 1 through -5 of commentFilename
end if
-- add suffix to comment filename (.txt extension, etc.)
set commentFilename to commentFilename & commentFileSuffix
set f to open for access file (commentsFolderPath & commentFilename) with write permission
set eof f to 0 -- truncate file, or old data can remain
write commentText to f as Unicode text
close access f
end repeat -- photos in album
end repeat -- albums
end tell
if openFolderInFinder then tell application "Finder" to open folder commentsFolderPath
Saturday, January 24, 2004
What’s This Site Running?
I’m now using the release WordPress 1.0 to generate the content area of this weblog. (The headers, footers, site navigation, and subscription list are generated by ShearerSite.)
In many ways, it’s going from one extreme to the other. My own system is based on static rendering without a database, to the point that the original data itself is kept in RSS-compliant XML files on the site, and HTML files are generated from those. So there’s no programmatic server overhead for retrieval, but there is for authoring, since all the dependent pages have to be re-rendered on the spot. I’m still a fan of this type of system, but I wanted to try something different. WordPress is about as different as you can get: by default, it runs a battery of regular expressions–dozens upon dozens of them–over each post to format it at retrieval time. (Some kind of static caching may be on its way, though, judging from hints in the database schema.) The administration interface is mostly very good, making it much easier to perform administration tasks such as adding new categories than my homegrown config-file-based system did.
Pros of WordPress: very hackable (the good way, by the site owner); terrific setup routines; good navigation controls, easy to set up; well-rounded feature set.
Cons: frequently passes HTML through finicky regular expressions; too much use of addslashes() for my taste, including some double applications; a few bugs in 1.0 (though, to be fair, 1.0.1 final is imminent).
Some changes I made to my own copy include:
- Improvements for source code posting, as well as XHTML validity. Made some changes in the regular expressions in the wptexturize and wpautop filters. Unmodified, they kept turning some my posts into invalid XHTML by adding an extra </p> tag. I also had some problems with snippets of source code that I posted. WordPress’s filters would get too smart, and try to produce curly quotes around strings, as well as em dashes before AppleScript comments. They would also tend to double-space the code, because newlines were turned into <br /> and a newline by wpautop, and the pre element honors both. I modified the code so that any filter could (optionally) avoid <pre> sections in the content, letting them go through unmodified. I did this using a loop and, much as I hated to add them, two more regular expressions.
- Site-relative blog home page links, to handle my unorthodox split-directory setup.
- Minor permalink change, to send out two-digit days and months.
- RSS import and synchronization. (I already contributed my RSS 0.9/1.0/2.0 import and sync. code to the WordPress project, but it was far too near the 1.0 series’ release date to make it in.)
Sunday, January 18, 2004
iPhoto 4 has comments no more
I bought the upgrade to the Apple’s iLife suite, released on Friday. Here’s a gotcha for developers who parse iPhoto’s AlbumData.xml file, though it doesn’t directly affect most users. It affects me, because my own code parses AlbumData.xml to generate my web-based photo albums (such as the England trip pictures I just posted).
Though the overall format of iPhoto’s XML file stays the same (and my script had no trouble reading it), the Comments and Date fields are gone! The Date field is renamed and in a different format, which is no problem to work around because the image file’s embedded EXIF data contains the date as well. The missing Comments field is a different story.
From my quick inspection, the comment data seems to be only stored in a newly introduced iPhoto.db file, which is in some binary format. The rationale for this is presumably performance, but that doesn’t completely make sense, since the photo title is still stored in the XML file and it may be changed just as often.
In any case, here’s a workaround that uses AppleScript to write a parallel folder structure holding just the comments, one per text file. Paste the following into a Script Editor window and run. Use this anytime you’d like to protect your comments from the vagaries of software or platform transitions or upgrades. (The parallel folder structure helps this; the script could have used iPhoto’s internal IDs and generated all the files in a single folder, but that wouldn’t have been as forward-compatible.) GPL-licensed.
Read the rest of this entry »
Monday, December 22, 2003
Swapping Out the Foundations
I’m giving WordPress a spin, replacing my own experimental statically-generated weblog publishing tool. The homegrown system worked well, but I wanted to add more dynamic features such as comments and trackbacks, and there’s so much other work going on with weblogging tools that it wasn’t a good use of time to implement those myself.
So I made some changes to WordPress to make it fit my publishing system, all of which are to be contributed back to the project.
- There is now an importer for RSS files and blogBrowser-style archives of RSS feeds (one folder per year, one RSS file per month). This allowed me to import entries from my own weblogging tool, which uses blogBrowser archives as its native data format. The importer supports multiple categories as well as modification dates, which brings me to:
- Modification dates. They’re now stored per post, and exported in the RSS feed, using a dcterms:modified element.
- UTF-8 Unicode storage of all posts. Minimal changes to the code; it mainly sets the right HTTP headers on the edit and post display pages and passes through the results without messing it up. Though PHP is still ISO-8859-1-centric in its string handling (and, the mbstring module aside, some of the other Unicode “support” just ends up replacing characters outside this set with question marks), it passes UTF-8 through fine.
- A few minor fixes (permalink generation from a custom format now works when the weblog is hosted somewhere below the root of the site; it’s possible to have a post in no categories).
- Multi-weblog synchronization. This is a consequence of the RSS import and modification date features. I can tie my production and staging servers together and update posts in both directions. (I’m just starting to test this out.)
Thursday, October 9, 2003
Image Size Reduction for the Web
Tim Bray is looking for a better way to post photos to his web site. To judge from the sample photo, his current method doesn’t antialias the image, so sharp edges in the original look jagged when reduced in size.
I went through the same thing with iPhoto, which has an HTML Export feature that is similarly broken—it doesn’t antialias at all. It’s a strange limitation, considering that the Mac OS X graphics system has fast, high-quality antialiasing everywhere else, including fonts and Dock icons. It’s as if Apple turned off a global switch in iPhoto for better performance when displaying large number of images onscreen, but forgot to turn it back on for HTML exporting, where quality should count for much more.
In any case, the quality of iPhoto’s exports was poor, so I wrote a Python script to handle the export using the Python Imaging Library. (Contact me if you’d like the code. So far, I’ve publicly released only the general-purpose plist parser that I wrote to handle the AlbumData.xml file.)
The script reads the titles and comments assigned in iPhoto, and parses them for category and other tagging information I’ve appended to the comments. Then it generates date-based and category-based HTML page hierarchies for all the albums whose names start with “Web-”, and generates any thumbnails or medium-sized images that are missing.
The Python Imaging Library, or PIL, is very easy to install with MacPython 2.3’s Package Manager.
There are some drawbacks, though:
- I had to push the JPEG quality setting very high to avoid obvious macro-blocking (squares showing up around detailed areas), and pushing the quality any higher caused PIL to fail by throwing an exception.
- The BICUBIC setting for image reduction didn’t appear to work at all. The image ended up non-antialiased, the same as Photoshop’s “Nearest Neighbor” setting. Only ANTIALIASED had any effect. This may result in bilinear instead of bicubic interpolation, but the documentation isn’t clear.
- The Thumbnail setting produces an image quickly, but they are very low-quality.
- The Progressive setting for JPEGs seemed to cause even more exceptions when trying to save at high quality levels, so I was forced not to use it.
- It’s not nearly as fast as Mac OS X’s Core Graphics image reduction. But then again, I wouldn’t expect it to be.
On the positive side, the antialiasing looks good, and PIL can also read embedded EXIF data. Images that I’ve tagged as deserving more info automatically get the aperture and shutter speed printed on the page.
The code for actually reducing and saving the image, ignoring the EXIF and album manipulations for now, is as simple as this:
if not os.path.exists(newPath):
shrunkImage = im.resize(size, resample = PIL.Image.ANTIALIAS)
shrunkImage.save(newPath, 'JPEG', quality = 90)
You can see samples in my Pictures section. Check out the first batch of Providence photos for some night examples with shutter speeds and apertures shown, and the Providence and Boston kayaking photos for examples of pictures with lots of edges that would have looked much worse without antialiasing.
Tuesday, June 3, 2003
Orphan IE
CNN: Microsoft to pay AOL $750M. Tech titans settle Netscape lawsuit, set seven-year licensing pact for AOL to use Internet Explorer.
CNET: Microsoft to abandon standalone IE.
So, AOL can now install IE with their product for no charge, just as MS terminates development of the installable IE. Great deal.
Jeffrey Zeldman has some great analysis.
Aside: does this mean AOL must use IE? From initial reports, the answer appears to be no. The alternative browser would just have to be free to AOL (or strategically valuable enough to justify its cost). However, AOL’s track record has it bundling IE for Windows even without a special agreement, even as it owned Netscape.
Presumably the termination of IE development means that users can only receive major browser updates by buying new versions of Windows. For the majority of users, who are likely to stick with their current OS version for a while, IE 6 SP1 is the end of the road. Its slow march toward compliance with CSS and other standards can go no further, no new web technologies will be added, and no more bugs will be fixed.
This is a huge problem for web programmers and designers. A large majority of web surfers—those using IE on probably all versions of Windows before Longhorn (scheduled for 2005)—have just had their browser orphaned, with no simple upgrade path. With all its warts, it’s going to stick around for a long time.
In other words, Internet Explorer 6 has been Netscape 4-ed.
Whopper of the day (from the CNET article): “Legacy OSes have reached their zenith with the addition of IE 6 SP1,” [IE program manager] Countryman said. “Further improvements to IE will require enhancements to the underlying OS.” Is he trying make us believe that bug fixes, CSS3, XForms, etc., are impossible without a new operating system, due to some technical limitation? Maybe the quote was meant to look like a statement of technical possibility, while it was really a marketing dictum. As in: for the users to get further improvements in IE, they must first buy and install an updated OS. (Because we want it that way.)
Tim Bray, wresting with page layout in IE, puts it more strongly:
The problem isn’t that CSS is too hard. The problem isn’t browser incompatibilities in general. The problem is specifically that Microsoft Internet Explorer is a mouldering, out-of-date, amateurish, out-of-date pile of dung. Did I say it’s out-of-date? As in past its sell-by, seen better days, mutton dressed as lamb, superannuated, time-worn. It’s so, like, you know, so twentieth-century.
Ron Green raised the alarm, which echoed through Scripting News and then around the usual hallways: “All this has lead me to ask if IE is dead.”
Firebird [mozilla.org] and Safari [apple.com] are looking really good right now.
Saturday, May 31, 2003
OSCOM Day 3: John Udell Keynote
Excellent keynote. He started with a simple, obvious thing which we tend to get wrong because we’re blind to it: weblog item doctitles that show up properly in search engines. Then a bunch of specific things we can implement, and a look toward the future. Good, practical stuff.
Talked about the content side of content management. Importance of titles and topic sentences. Communication skills. Don’t hit.
Content is the expression of ideas, request for attention, or attempt to influence. Technologists don’t think hard enough about the effort & the reward of making content.
Showed an entry on Don Box’s site that displayed its title perfectly in his aggregator NetNewsWire, but Google didn’t see it, because it wasn’t in the doctitle. Easy to make this mistake. (Reiterated point: Publishing is essentially engineering. We forget these issues because engineers think from the inside out.) What is the right unit of content? Radio Userland has the day’s posts on one page, with the date as doctitle; Moveable Type one per page, so it can use the item’s RSS title. Dave Winer’s weblog comes in like an IV drip all day, but the audience for most weblogs isn’t like that, and they need titles.
This affects how John Udell uses Radio Userland. Dave Winer interjected to ask if it would help to have a field to choose the day’s title.
Brent’s Law of URLs: the more expensive the CMS, the crappier the URL. Showed a bunch of typical CMS & welogging system URLs. Tim Bray’s homegrown site was best: example ended with 2002/02/13/NamingFinishing. Vignette’s > $200K product was worst with an awful, long numeric URL.
Structure in doctitles. Search results pages can parse & group the titles. Example: with doctitle like Magazine Name | Date | Dept | title, group search results by magazine issue. Showed good example of this on O’Reilly’s site.
Great example of broken titles in just about every mailing list archive. All the titles are wrong—they are the same as the last message in the thread. Not scannable. Showed a mockup with meaningful titles.
A few of the examples had the common thread of repetition of data in the user interface. Search results kept repeating the site name in document titles. Discussion board forums kept repeating the same subject lines. The mailing list example he showed was pretty much wall-to-wall repetition of the same thing. Only difference between successive lines was indentation and author name. A better interface would strip it all out, summarize, whatever. I’ve run into all the things he mentioned and just gotten used to them. I have to look at them with new eyes.
Call to implement ThreadsML.
Discussion of SlideML. Showed his method of generating it, but it isn’t usable by “civilians”. No help in writing the actual content apart from typing raw XHTML in Emacs.
CMS systems came from publishing & were ported to web. Weblogs are web-first.
Hypertextual writing is still stuck in 1995. Netscape did as much or more than wer’re doing today in 1996. We need lightweight web-aware writing tool. Need to advance beyond emacs, TEXTAREAs or the shoddy Windows DHTML edit control. InfoPath still relies on crummy XHTML editor.
Compound documents: tend to explode to meaningless names because the system has to add them (e.g. slide027.html). Discussion of old Netscape cid: protocol.
CMSs solve refactoring problems “in the large”: making consistent changes to many files, access, etc. Refactoring “in the small” suck up a huge amount of time: reformatting email messages, etc.
Categorization is a heavyweight operation; there should be other lightweight ad-hoc ways. Example: All Consuming book aggregator finds book references in blogs.
Showed example of searching his SlideML markup with XPath for code examples.
Update: Here are the slides and notes from Bitflux: part one, part two.
Thursday, May 29, 2003
OSCOM Day 2: Other sessions
10 Best Features from Commercial CMS
Browser-based image editing, pre-localized interfaces
Extra credit: In-context editing (Edit This Page), dependency reporting, semblance of autoclassification, relational viewing tools
Reporting: such as Never Logged In
Configurable, forms-based workflow (ingest Visio WFML?)
508/WA compliant output — accessibility. Table headings + row headings, alts, etc.
Browser-based content object development (schema, essentially)
OpenCourse educational site. opencourse.org. “It rhymes with open source!” (The presenter avoided saying this, but I’m sure he wanted to.) Slow-moving.
Dublin Core Metadata in CMS
On oscom.org presentation slide show, different DC formats for XHTML, HTML, RDF XML are linked.
Good reference impl.: DC-dot. Another: Reggie
Elements (such as DC.Subject.Keyword) appearing multiple times, yes. Comma-separated value lists, no.
Discussion on thesauri, search engines, etc. Overall, I didn’t get a huge amount out of this session, at least not directly. I’ll have to find the references impls online.
OSCOM Day 2: WebDAV
Provides a standard way to place content on a web server, with metadata, file locking, versioning. Also can decouple filesystem layout from author’s view. Uses HTTP for all logins, so no need to create full user accounts.
Very few clients support metadata so far. Cadaver does, but cmd-line based. Kcera? KExplorer? support properties.
To check out: Joe Orton’s sitecopy. Twingle.
WebDAV for filesharing tested lighter than SMB on network traffic.
Question on ranged PUTs. WebDAV and mod_dav support it, but some servers don’t. The Mac OS X WebDAV client can’t use ranged PUTs for this reason, or it would risk replacing the entire file with the tiny part that was changed. They’re working toward some kind of solution.
Servers include Apache mod_dav (which the speaker wrote) and Zope, Tomcat. Jakarta Slide requires a lot of work to connect its memory-based store to something. Can even handle WebDAV with CGI except for OPTIONS method.
Subversion supports DeltaV WebDAV. You can mount & copy files from vanilla Windows & Mac OS X. But you can’t modify them, because the client don’t support DeltaV. (There is an experimental “autoversion” plugin to server to allow this.)
Extensions: ACL. Remote management of ACLs; close to RFC status. DASL (DAV Searching & Locating). Yet another query language. Further off.
MS WebDAV does a little check for FrontPage first, but is pretty much straight WebDAV otherwise.
My question: best/simplest route to implement a change trigger for a WebDAV server, so I could run a script? Can I plug in easily to any of the existing servers?
A. Zope supports WebDAV and is programmable. It uses its own data store, though, not the filesystem. So the whole system would have to use Zope.
Best answer. Could look at logs / an Apache filter to implement change response. Great idea.
Alternative: Author of FS watch & notify utils suggested those. They only run on Unixes, though. (I need Windows support, so I could look into NT’s APIs for filesystem notification too.)
OSCOM Day 2: Dave Winer Keynote
Dave Winer (introduced as “King of the Blogging World”) said that was a great introduction, and he didn’t agree with anything in it. Call to open source & commercial software worlds to work with each other. Speaking as a commercial developers who has also released open source.
Q: “Proprietary” label used to be sold as a good word. Open source just used it to differentiate themselves.
“40-person company” is what he recommends would be best for customers. 2-3 people doesn’t cut it. But those 40-person companies don’t exist anymore. Users look at Unix-style OS and think it must be very difficult to write. But it’s actually much harder to write software that’s easy to use, while users won’t recognize its complexity.
Halley Suitt: Is she missing the marketing for open source? What does Linux look like? There’s something with a penguin. Someone helpfully brought up his laptop and opened it for her. “My Linux virginity is gone,” she announced.
Internet Explorer: users are stranded. Has a development team, but they don’t fix the bugs.
XML-RPC: Dave did design in 2 weeks, met with Don Box et al once. Secret of success: not overloaded with complexity. Extra features were aggressively not included. Has not changed since 1999.
Audience member disputed the assertion that there were no 40-person software firms. Many CMS packages (shrinkwrapped) come from such companies.
What audience member wants: to be able to fix software. Even if developer goes bankrupt. Dave: What you want is not to be locked in. You want open file formats. Another audience member: retraining is high part of switching cost, not data conversion. Q: Source code escrow?
Q: With IE, doesn’t want to be stranded. His weblog won’t display properly in IE, and he can’t fix it. Dave: Source code for IE should have been put in escrow and released already, because they’re not working on it. He had strongly suggested that as a remedy in the MS antitrust trial.
Movivations for Open-Source Developers essay. To do: find link; it scrolled off my NetNewsWire aggregator before I read it.
Q: Audience member complained that Radio Userland has support issues, documentation issues.
Dave: They all do! There’s no money in software! It’s $39.95; that doesn’t pay for a lot of support.
Sound bite about personally not liking Bill Gates or Richard Stallman. Neither of them take baths. This is quoted more accurately elsewhere.
Discussion of unifying variants of RSS.
And here we come to the climactic faceoff of the keynote. Apparently Dave Winer & Bill Kearney have never met in person before. I’ll let the record speak for itself (search the web for both their names), but if you’ve ever seen their online mailing list discussions, you’d expect a matter vs. antimatter reaction if ever they were to meet.
Bill Kearney: I’m Bill Kearney, from Syndic8.
Dave: (no particular reaction) What’s Syndic8?
Bill: (explains, happening to mention again that he’s Bill Kearney)
Dave: Oh, you’re Bill Kearney. My God.
[Bill starts talking about “democracy, rather than benevolent dictatorship”; discussion degenerates into shouting & swearing. Elapsed time: about 15 seconds. The play-by-play doesn’t really matter, but if you want one, see Aaron’s weblog. After the OSCOM organizer Charlie steps in after a few minutes, Dave is too rattled to move on and ends the session.]
I didn’t get to ask my question.
OSCOM day 1: Other notes
Legal Issues with Open Source Content Management: Notes
Interesting panel discussion.
#1 - Sleepycat CEO
#2 - Lisa ?; lawyer
#3 - Aaron Swartz
#4 - Larry Rosen
Open Source (free because it’s useful, strategic) vs. Free Software (everything should be free) vantage points.
Q. Creative commons vs. source license? Larry Rosen: Courts have confused the issue of software IP by applying both patents and copyright to it. [I’d wondered about this problem; software is kind of in the middle of both and neither is quite right.]
Q. W3C DTD & Schema copyrightable? W3C says yes. But would content using that schema be copyrighted by the W3C? Lisa: Functionality/methods can’t be covered by copyright. –maybe that applies to this case.
OpenOffice person in audience. Teddy Ruxpin case—successful contributory copyright lawsuit. Bootleg cassettes made Ruxpin tell different stories, make different movements.
Q on “Infected” code (could open source contain stealth IP)? Topical; SCO lawsuit.
Aggregation. Aaron: It’s obviously illegal to put scraped feed contents on your page without attribution, obviously legal to write a tool that scrapes to generate feeds. Dave Winer: case of someone who didn’t know RSS was generated auto by Radio. Got mad when it appeared on someone else’s site. After that was explained, problem kind of disappeared.
The RSS topic was starting to get too long and the moderator wanted to switch subjects, before I could get my question in, which was exactly along those lines. He said to defer those questions to Dave Winer’s keynote tomorrow.