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.
Accessible from any Web browser
The main advantage for storing your bookmarks on the Web is to have them
accessible from any Web browser. b. produces XHTML 1.0
browser such as Netscape 6+ / Mozilla, Internet Explorer 5+, and Opera 5+.
Bookmark data stored in XML format
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.
Must close browser to log off
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.
Modify bookmarks from one machine at a time
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
Preliminary note: These instructions presume that you know something about
dealing with CGI on a Web server.
Unzipping will create two folders
Move these folders to your Web site. The folders contain Perl scripts, so they
both must be CGI-executable. Further, the Web server must recognize
.pl files as CGI scripts. (The Apache directive to add to the
b.shr/ directories is "AddHandler cgi-script pl".)
If the Web host is Unix, make sure the following files are executable
The following files and directories must be writable by the Web server.
Also make sure that the location of the Perl interpreter is at
/usr/bin/perl. It probably will be. Otherwise, modify the
first lines of the above Perl scripts.
Point your Web browser to
http://<some_domain>/b./index.cgi. If you're like me,
you'll probably need to spend some time trying to figure out why the CGI is not
properly configured. First check if it's a permissions problem by going
through the above instructions again.
Finally, when you're satisfied things are working, you'll probably want to
b./ directory (see notes
However, once you've done this, b. will create a new starter
bookmark file in the
users/ subdirectory, obsoleting the
b.xml bookmark file in the root
b./ directory. If
you want to preserve any changes you've made to this file, follow these steps:
1) close your browser; 2) download the bookmark file you wish to save, usually
b./b.xml; 3) upload this file into the
b./users/<user_name>/ directory, overwriting the starter
To view the publicly accessible collection of bookmarks, go to
http://<some_domain>/b.shr/index.cgi. Note there are no
buttons to add or modify the bookmarks. Also note that the look of
b.shr can be quite different from b.!
Upgrade from previous version
It is recommended that you first save a copy of your old installation of
b., especially the
b.xml bookmark files, the
b.conf> configuration files, as well as any custom themes. If
you are upgrading from a version prior to 1.1 (eg from 1.0 -> 1.1), don't
bother retaining any
files, as the format for those files has changed. After archiving, clear out
or delete the
b./ folder on the Web server to begin fresh. Follow
the New installation instructions above
/\. Once things seem to be working properly,
you may upload your saved
b.xml files. If there's a problem,
check that the
b.xml files are still writable by the Web server.
If you've created your own themes, and you're upgrading from pre-1.1, then
you'll need to make slight
modifications to your
b.css stylesheets. Furthermore, the
themes/ directory is no longer in the
It's now in the
b.shr/ folder, to make the themes publicly
accessible. Test your custom theme by uploading it into a subdirectory of
b.shr/themes/. If some things look wrong, use the included
themes' stylesheets to guide you in making changes.
Note on password-protecting b.
For user authentication, b. uses the basic HTTP/1.0 security
mechanisms standard with most Web servers. So you must set up your Web server
to do this in order to take advantage of the multi-user features. I'm not
going into how this is done since this differs among Web servers. If you're
the admin of your Web server, then you may already know how to do this. If you
are setting up b. on a remote server, then your host provider
will probably have some Web-based configuration tool which allows you to
specify certain directories as accessible to certain users. You'll need to
provide a user name and password for each b. user.
Many customization options have been localized in various
b.conf file in the main
provides default options for the private bookmarks. View that file to see what
options are available. Users may override these default options with a
b.conf in his/her own user directory. The
b.conf file in the
b.shr/ directory allows many of
the same options as the
b./b.conf file, except that they apply to
the b.shr bookmarks.
New themes may be added by adding subdirectories under the
directory. Use the existing themes as examples. You may specify alternate
bookmark and folder icons, as well as custom HTML templates. This new version
of b. gives much more control over the display of your
b.template.conf in the
b./ directory are the starter files created for new users if they
don't already have those files. You may modify these templates to customize
starter environments for new users.
Tips and troubleshooting
Situation: You have set up password protection but your private
b.xml is not being written to, although your private directory
users/ has correctly been created.
Possibly your Web server is not authenticating POST requests. If you're
running on an Apache server, then check to see that there is not a directive
<limit GET> for your
b./ directory. If there
is, change it to
<limit GET POST>. Thanks to Wilson Li for
figuring this one out.
Situation: You want to run b. on your ISP, but
it only allows files with extension
.cgi to be run as CGI
You can go ahead and change the extension of all the executable Perl scripts
in the b. distribution to
.cgi. See #new_install
/\ for a list of the executable files. You'll also
need to change some path variables at the beginning of
b.header.pl: the first few lines define paths to various
b. scripts; simply update these variables for every file
you renamed. Thanks to Tomki for pointing out this potential problem.
- 1.3.3 2002/03/17
- Fixed more bugs from 1.3.1. Thanks to Alan Schussman and Tomki for
identifying these bugs.
- 1.3.2 2002/03/14
- Nasty bug introduced in 1.3.1: modifying a folder/bookmark's description
would also modify the descriptions for all subsequent items! This has
- 1.3.1 2002/03/11
- Version 1.3.0 broke the display for Internet Explorer on the Mac. This
has been fixed. (Sorry Mac users.) Fixed a bug where a populated folder
could not be moved under another folder. A new bookmark without a title
is given a default name of "Untitled". If a URI is submitted without a
protocol type (eg
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.
- 1.3.0 2002/02/01
- Several new features this time. A search utility allows you to quickly
access your bookmarks and folders. New viewing options enable you to
display your bookmarks in two additional viewing modes: 'all' to view all
bookmarks on one page, and 'sngl' to view one open folder at a time.
Buttons have also been added so that you can shift items up and down
within a folder. A nice convenience is the ability to 'wrap' movements
around the ends of a folder, so that shifting down the last item will
move it to the beginning of the folder. Finally, you can now export your
bookmarks into raw XML or simple HTML to easily archive them. Other
changes with this version are a few bug fixes, and theme changes to
accomodate the new features. Also removed theme
semaphore-ssi as 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.
- 1.2.0 2001/11/18
- New feature is add-on scripts. Using add-on scripts, one can insert
custom info for a bookmark / folder, such as a thumbnail image or a
link to Google's "Find similar" feature. In fact, these examples
are already implemented in the default add-on script which comes with
the distribution. The
b.css style 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.
- 1.1.4 2001/11/12
- I stupidly trusted a search-and-replace utility, which left some text
garbage in two files
These have been cleaned.
- 1.1.3 2001/11/11
- Corrected for include files not being found on Microsoft IIS servers
(code contributed by Andy Low). Adjustments to semaphore theme due to
weird IE6 CSS handling.
- 1.1.2 2001/10/19
b.shr/themes/blum/b.css again; 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.
- 1.1.1 2001/10/18
- Consistent EOLs for all files. This fixes CSS problem for Macs. Most
other fixes are in the theme style sheets: theme semaphore now
constrained to width 320px as in old 1.0 version; theme blum now has
correct wrapping of bookmark and folder titles (unfortunately this means
theme blum does not work for IE5 on Windows due to its faulty CSS
compliance. Lastly, replaced 'target="_new"' with 'target="_blank"' in
b.display.pl for correctly popping links into new
- 1.1.0 2001/06/05
- Major development release with many new features. The major
new features are: support for collaborative bookmarks; greater control
of bookmark display with HTML template files; timestamping of
created/modified/accessed times for bookmarks; record of hits for shared
bookmarks; each user has own informational page; new theme; et.al.
- 1.0 2001/05/15
- Version 0.4.1 below upgraded to stable version 1.0. No different in
- 0.4.1 2000/12/19
- Bug fix for Apache complaints of "Not enough arguments for mkdir...".
Thanks to Sean McGrath for catching this. Sean also suggested a
clarification for the installation instructions.
- 0.4.0 2000/11/15
- Can support multiple users when used in conjunction with basic HTTP user
authentication. This feature is optional and no script modification is necessary
if you wish to stay single-user, or if you wish not to use password-protection.
- Fixed bug which disallowed the deletion of bookmark/folder descriptions.
Thanks to Mark Jordan for pointing this bug out.
- Some minor code cleanup and fixes.
- 0.3.0 2000/09/15
- Added the ability to open and close folders. By hiding rarely-used bookmarks, one
can speed up the bookmark display.
- Fully compliant with the XHTML 1.0
strict specification. XHTML is an XML-ization of HTML 4 for broader accessibility
among various browsers, present and future.
- Folders and bookmarks can now have the characters
> in their
titles/descriptions. Other special characters may be inserted by inserting the
appropriate HTML codes (e.g.
- 0.2.1 2000/07/03
- Fixed bug: When deleting an item, the parser code would incorrectly
mark the end of the range to be deleted. The result would be the unintended
deletion of extra items. This bug has been fixed.
- 0.2.0 2000/06/28
- Initial release
The initial parsing of the XML data was aided by the regular expressions in
REX >>, written by
Robert D. Cameron. The XML spec for bookmarks, XBEL
>>, was created by
Check for the latest at
You can also e-mail me at firstname.lastname@example.org
regarding comments, suggestions, bugs, and some assistance.