b. is a Web-based manager for Web bookmarks. Bookmarks are stored in an XML file. Operations on the data are done with Perl scripts.
A new and powerful feature is the ability to share bookmarks. These shared bookmarks may be publicly viewed by all, while a certain set of users have the ability to add or change them. These users can also add comments to the shared bookmarks, as in a bulletin-board. The display of the shared bookmarks is highly configurable: one can show extra information associated with a bookmark, such as its popularity, when it was last visited, when it was added, etc. With these new features, b. becomes a collaborative space for sharing discoveries of the Web.
Old-style b. functionality is not lost however: one can still maintain a set of private bookmarks just as before. What's new is the option to exchange bookmarks between the private and shared sets.
XML has quickly become an acknowledged standard for the management of data transmitted over the Internet. Its foundation as a markup language like HTML gives it a wide base of users, and its precept of separating data from its display provides XML versatility for the many possible uses of the data.
I'm using a DTD for collaborative bookmarks called XBEL-collab. It's a slight modification of the XBEL DTD for bookmarks >>, to allow for features like comments and hit counts. The original XBEL DTD was created by python.org.
themes/ subdirectory, one can determine the look of
b. with CSS stylesheets, custom graphics, and HTML templates.
There are more customization options with this new release.
b. supports multi-user environments. Using basic Web
server user authentication (i.e. by password-protecting the
directory), only certain users can have access to b.. Each
user has his/her own bookmarks and optionally can have his/her own theme,
welcome message, etc.
This is a limitation of basic HTTP user authentication: once you have access to a directory, you always have access until your browser session has ended.
Problems can result if one attempts to modify bookmarks from two different machines at the same time. (Viewing and accessing the data from more than one machine is fine.) Although a backup of the XML file is written every time it is modified, something more secure could be implemented.
View an example of shared bookmarks >>. This would be the publicly accessible view open to all.
Also view a version of the same bookmarks from a contributer's perspective >>. This is the same set of bookmarks, but with additional buttons for adding / editing the bookmarks (crippled for this demo). For fun, I've specified a different theme for this view. It is recommended that these pages be viewed with a CSS1-compliant browser like Netscape 6+ / Mozilla, Internet Explorer 5+, or Opera 5+.
Finally, here is a view of an example set of personal bookmarks >>.
Must be able to run Perl scripts on your Web server. For multi-user environments, must be
able to password-protect the
Note that some of these contributions may not work with the latest release. I've added version numbers to the contributed files to denote this.
Here is her bookmark (with some minor tweaks by me):
. You'll want to edit it to get it to link to your own web site.
"If you place the following href in your browser's quick link area, then whenever you find a site that you want to bookmark, then click the link, and it will add the site to your bookmarks.
YOUR_SITE_HERE with your bookmarker web server
"I just managed to fix the problem by changing the 2
Content-type lines from
Content-type: text/html; charset=utf-8
Additionally, Sean Stuckless
has created a theme that works with
Netscape 4.7. To use, just pop the
clean/ folder into your
folder, and change the
$theme variable to
"clean" in the file
has created a couple of scripts which add some neat features to
b.search.pl adds search capabilities and
b.random.pl selects a
random link from a user's bookmarks. Examples of use are at
The following downloads include instructions for installing and using his scripts.
Another script by Steve Kemp
"It will read in your favorites, from IE,
and dump out a
b.xml file to STDOUT:
C:\> perl fav2b.pl > b.xml
"I use it to generate a
b.xml file from
my favourites, after reorganizing them."
Bill Stilwell writes: "You're probably already aware of this, but there's a collection of Python utilities for processing to and from XBEL in the PyXML project:
"I used the
ns_parse script to convert my Mozilla bookmarks to
XBEL and it's working like a charm with b."
Note: these scripts are in the
demo/xbel directory of that
Jonathan Mayer adds:
"I had difficulty getting the PyXML scripts to work, so I just wrote a
quick Mozilla / Netscape
converter in Perl. It uses two Perl modules easily obtainable off
The script is available here:
drew robinson made some improvements to Jonathan Mayer's script: "so i tried using the
moz2xbel script. this one worked very well, and after looking more closely, i made a couple of improvements to it:
"i'm attaching it for you to look at, and hopefully post on your site, as i think it's the best method of conversion, although you do need the 2 perl modules Netscape::Bookmarks and XML::Generator."
Download drew robinson's script here (right- or ctrl- click to download):
Juergen with-no-last-name submits: "Omniweb is one of the prime browsers on MacOS X. None of the other converters got the Bookmarks.html right, so I wrote my own perl script. In addition it tires to grab a description for every link from the refered page.
omniweb2xbel can be found here:
Juergen Sell returns with another converter script: "Safari is the browser of choice, coming bundled with MacOS X. None of the other converters got the Bookmarks.plist right for me, so I wrote my own perl script. In truth I just cannibalized omniweb2xbel for that. In addition it tries to grab a description for every link from the refered page. As a minor tradeoff it does reverse the order of bookmarks and folders.
safari2xbel can be found here:
#' signs and '
%3A' entities. Thanks to f_x for bringing this to my attention.
mailto:' to beginning of URI if an '
@' sign is detected. (This feature may be turned off in the
.cgiextension. Allow default view mode for personal bookmarks. Version 1.3.3 upgraded to stable.
http://), then a default protocol of
http://is prepended automatically. Finally, added a 'Tips and techniques' section /\ to the README. Thanks for Tomki for pointing out some of these bugs.
semaphore-ssias its presence was purely pedagogical and furthermore unnecessary since HTML templates are supported. Credit goes to E. Lev for some of the ideas for this release.
b.cssstyle sheets have new rules to cope with the new add-ons. Finally, added ability to open / close folders by clicking on the folder name. Thanks to Will Norris for these ideas and some code.
b.usrnfo2.pl. These have been cleaned.
b.shr/themes/blum/b.cssagain; there was a problem with this style sheet in Mozilla / Netscape 6. This is the only file changed from version 1.1.1. Incidentally, this fix also makes this theme correctly render for IE5 on Windows.
b.display.plfor correctly popping links into new windows.
>in their titles/descriptions. Other special characters may be inserted by inserting the appropriate HTML codes (e.g.
You can e-mail me at <firstname.lastname@example.org> regarding comments, suggestions, bugs, and some assistance.