LWN.net Logo

Development

Bluefish 2.0: Slim but powerful

March 10, 2010

This article was contributed by Joe 'Zonker' Brockmeier.

Long-time Linux users, especially those with a penchant for Web development, are probably familiar with the venerable Bluefish editor. The Bluefish team released 2.0 in mid-February, and it brings with it a number of subtle improvements and enhancements for managing projects, custom code, and crash recovery.

[Bluefish 2.0]

Bluefish 2.0 is released under the GPLv2, and packages are available for Debian, Ubuntu, Fedora, OpenSolaris, and AltLinux. The Bluefish team also provides a Windows port, but it lacks some of the features found in Bluefish 2.0 for the Unix family. For example, the remote file support via GVFS is absent, and external filters are not supported.

At its heart, Bluefish is a over-competent text editor. Bluefish is a first-class HTML editor, but also provides support for a number of other languages and markup formats. Bluefish supports C/C++, ASP, Ada, Java, SQL, PHP, Perl, Python, Ruby, shell scripts, Mediawiki markup, and several others. HTML, CSS, and JavaScript are where the editor really shines, however.

[Cherokee support]

Not much has changed in the 2.0 release on the surface. Bluefish 2.0 doesn't look much different than its predecessor. It adheres to the tab-based toolbars, with entries for "Standard" HTML features, fonts, tables, frames, forms, and CSS. 2.0; adds a character map so it's trivial to insert accented characters, symbols like the copyright character, and a wide range of language support. Bluefish is the editor to choose for any developer creating a site that uses the Cherokee syllabary or any of the dozens of character/symbol sets. Bluefish also gives the option of inserting characters directly, or as HTML entities.

[Bluefish 1.x]

The 2.0 Bluefish release replaces Bluefish's 1.x series custom menu with a snippets sidebar. The previous release of Bluefish had a custom menu that allowed the creation of additional dialogs that would insert user-defined code fragments and help automate tasks. For instance, a user could define a custom search and replace function that would go through a document and swap out curly quotes for straight quotes, or otherwise clean up bad text to help conform to a style guide. It was a little complex to get started with, but otherwise a useful feature.

[Snippet dialog]

The Snippets sidebar is perhaps more conveniently placed, but not as intuitive when creating new functions. To add a new item, right-click on the snippets sidebar and select "New Snippet." You'll be asked for the name of the "branch," which is actually the name of the top-level menu that will be defined. After providing the "branch" name, the dialog closes and you'll see an entry in the Snippets sidebar that does nothing. After defining the top-level menu, click on that and select New Snippet again. This time the user is allowed to define the type of entry that will be added: Another branch (sub-menu), a string to be inserted, or a search and replace pattern.

The dialogs are a bit arcane, but once one stumbles on the trick to adding new snippets, it's a bit more user-friendly than the 1.x series. It's a good feature, but perhaps not as well implemented as it could be. The primary problem is the lack of accompanying documentation. The only docs to be found on creating Snippets that seems to be available is in one of the Bluefish 2.0 movies found on the Screenshots page. The Bluefish Manual looks to be a bit outdated and only covers up to version 1.6.

If it sounds like Bluefish is not user-friendly, that's far from the case. This release packs in some really helpful features that make using Bluefish a joy. For example, the autocompletion feature. When you start typing an HTML tag or function for one of the supported languages, Bluefish will start offering possible tags or functions. Type "<a" and Bluefish will supply a context menu with the possible tags that begin with "<a" and help text that spells out what each tag is. It's not limited to HTML, it also works with CSS, JavaScript, etc. It doesn't include tags or other snippets that are user-defined, but it seems to be very comprehensive with the built-in autocompletion for supported languages.

Another friendly feature in 2.0 is automatic document recovery. If a session crashes for some reason, when re-starting Bluefish it will open all of the previous unsaved documents with all changes intact. To make sure that this worked as advertised, I used xkill to force Bluefish 2.0 to crash several times because it was uncooperatively stable during testing, and forced my hand to test this feature. The only problem is that Bluefish only recovers documents that were unsaved. Documents that were saved when a Bluefish session crashed are not automatically reopened. But, since Bluefish doesn't have a habit of crashing, it shouldn't be an issue very often.

For tasks that require working on multiple files at the same time, Bluefish 2.0 has support for saving the group of files as a project. When files are saved together as a project, users can open one or fifty (or more) files at the same time and keep all of a project's work together as a group. Project support isn't new to 2.0, but it does advance the feature by letting users set many more preferences for the project. For instance, users can specify on a per-project basis the template to use, the default MIME type for new files, tab width in the documents, and if a project should support block folding.

Bluefish supports syncing files between local directories or from a local directory to a remote host over SFTP, FTP, HTTP, HTTPS, WebDAV, or CIFS — depending on which GVFS virtual file systems are supported on your system. This is slightly inconvenient, as it requires mounting the remote filesystem through Nautilus before being able to access it in Bluefish. Once it's set up, if you have a project configured it will store the configuration and let you sync the local and remote files with just a few clicks. So it's only necessary to set this up once when it's stored as part of a project.

Like any good Unix tool, Bluefish plays well with others. Files in Bluefish can be processed through commands and filters like HTML Tidy, make, xmllint, sort, uniq, or other scripts or tools specified by the user. Additional tools can be added via Bluefish's preferences. It's possible to filter just a section of a file, or the entire file that's being edited.

The Bluefish team calls the editor a "what you see is what you need," tool — as opposed to What You See Is What You Get (WYSIWYG) editors that attempt to hide some of the complexity of developing a Web site. Bluefish gives users bare-metal access to the toolset without any frills. It does, however, give the ability to feed pages to Firefox or other browsers for rendering so that it's possible to see how a site is coming together.

For users who know their way around the languages and markup they'll be using, Bluefish is a really useful tool that helps support the user's expertise and makes it easy to pull together assorted free software tools for developing Web sites. It might not be very well-suited for users who are accustomed to heavy duty tools like DreamWeaver or even Kompozer that provide WYSIWYG editing and do a lot of behind-the-scenes work for the user. The trade-off is that Bluefish provides a great deal of control and flexibility and is likely to be preferred by users who have advanced Web development chops already.

Comments (2 posted)

Brief items

Apache 2.2.15 released

Version 2.2.15 of the Apache HTTPD server is out. "Notably, this release was updated to reflect the OpenSSL Project's release 0.9.8m of the openssl library, and addresses CVE-2009-3555 (cve.mitre.org), the TLS renegotiation prefix injection attack. This release further addresses the issues CVE-2010-0408, CVE-2010-0425 and CVE-2010-0434 within mod_proxy_ajp, mod_isapi and mod_headers respectively."

Full Story (comments: 1)

Mercurial 1.5 released

A new major release of the Mercurial source code management system is out. New features can be seen on the Mercurial "what's new" page; they include some new branching options, more flexible importing of patches, XML log templates, and more. The download directory contains the source.

Comments (10 posted)

Open Clip Art Library 2.0

[Cougar] Version 2.0 of the Open Clip Art library is available. "Open Clip Art Library now has over 26,000 original and remixed high quality scalable vector graphic (SVG) files that have been produced by over 1,200 creative artists! March 2010 marks both Open Clip Art's 6th anniversary and 1 year since last spring's launch of version 0.19. The project's launch is so massive, the project jumped its release number to 2.0."

Full Story (comments: none)

OpenSSH 5.4 released

The OpenSSH 5.4 release is out, with a number of new features; these include a new certificate format, a "netcat mode," a key revocation operation, better multiplexing support, and strengthened encryption. This release also removes disables (by default) support for version 1 of the SSH protocol - a change which few users should notice at this point.

Full Story (comments: 23)

PowerDNS Recursor 3.2

Version 3.2 of the PowerDNS recursor (DNS resolver) has been announced. The bulk of the changes would appear to be aimed at improved performance: "In practical numbers, over 40,000 queries/second sustained performance has now been measured by a third party, with a 100.0% packet response rate. This means that the needs of around 400,000 residential connections can now be met by a single commodity server."

Comments (1 posted)

Renoise 2.5

[Renoise] Version 2.5 of the Renoise music production environment is out. New features include a "pattern matrix," cross-track routing, a better MIDI mapping module, lots of new internal effects, and more; see the "what's new" page for details.

Full Story (comments: none)

StatusNet 0.9.0 released

After 8 months of development, the open microblogging system StatusNet has released version 0.9.0. StatusNet is the software behind the identi.ca microblogging service. The new version has lots of new features including support for the OStatus distributed status update standard, support for geolocation, no fixed message size (though 140 characters is still the default), web-based administration, a moderation system, and much more. "Under the covers, the software has a vastly improved plugin and extension mechanism that makes writing powerful and flexible additions to the core functionality much easier."

Comments (none posted)

Transifex v0.8 "Magneto" has been released

Transifex, the "open translation platform" has released version 0.8, codenamed "Magneto". There are lots of new features in the release including the addition of translation teams and reviews, a timeline/history view, better notification support, and more. "Transifex is a localization platform that gives translators a simple yet featureful web interface to manage translations for multiple remotely-hosted projects. Files to be translated can be translated straight from the user's browser or retrieved for offline translation, and various translation statistics can be read at a glance. Popular projects using Transifex include the Fedora Project, Moblin, XFCE and LXDE." Click below for the full announcement.

Full Story (comments: 9)

Twisted 10.0.0 released

Version 10.0.0 of the Twisted web framework has been released. It features improved documentation, performance improvements, and a lot of fixes; "It's stable, backwards compatible, well tested and in every way an improvement."

Full Story (comments: none)

Newsletters and articles

Newsletters published in the last week

Comments (1 posted)

Getting Loopy: Performance Loopers For Linux Musicians (Linux Journal)

Over at Linux Journal, Dave Phillips continues his adventures in Linux audio with a look at audio loopers for Linux. "Performance loopers are machines that record an audio signal and capture it to a buffer for use as a repeating loop over which a performer improvises a new musical line or even another loop. A performance looper records multiple loops, thus giving the user an opportunity to compose additively in realtime."

Comments (none posted)

GNOME and KDE: Seven Attractions in Each (Datamation)

Bruce Byfield takes a look at innovations in GNOME and KDE. "Of course, GNOME and KDE have long had features that Windows lacked, such as multiple desktops and finer controls for customizing the user experience. However, in the last few years, both major free desktops have added features that show not only an interest in usability, but, at times, an effort to anticipate what users might actually want. The focus is by no means consistent, yet scattered here and there are features that can make any user glad that they're using a open source desktop."

Comments (4 posted)

Try the Linux desktop of the future (TuxRadar)

TuxRadar takes a look at several desktops and applications. "For the tinkerers and testers, 2010 is shaping up to be a perfect year. Almost every desktop and application we can think of is going to have a major release, and while release dates and roadmaps always have to be taken with a pinch of salt, many of these projects have built technology and enhancements you can play with now. We've selected the few we think are worth keeping an eye on and that can be installed easily, but Linux is littered with applications that are evolving all the time, so we've also tried to guess what the next big things might be."

Comments (36 posted)

Page editor: Jonathan Corbet
Next page: Announcements>>

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds