Draft:Bluefish (software)

Bluefish is a free and open-source software advanced source code editor with a variety of tools for programming and website development. It supports editing source code such as C, JavaScript, Java, PHP. , Python, as well as markup languages such as HTML, YAML, XML. It is available for many platforms, including Linux, macOS, and Windows,  and can be used via integration with GNOME or run as a stand-alone application. Designed as a compromise between plain text editors and full programming IDEs, Bluefish is lightweight, fast and easy to learn, while providing many IDE features. Bluefish was one of the first source code editor on the Linux desktop. It has been translated into 17 languages. The source code is available under the GNU General Public License.

Features
Bluefish's features include syntax highlighting and auto-completion for 47 different markup and code languages (including Mediawiki syntax ), customizable via a XML language definition format. It furthermore features code folding, auto-recovery, upload/download functionality (on systems where GVfs is available), a code-aware spell-checker, a Unicode character browser, project support, code navigation and bookmarks. It has some advanced search and replace functionality with regular expression support, and multi-file search and replace support. It has a multiple document interface that can quickly load large (hundreds of files) codebases or websites.

For web development it has many a toolbar with specific dialogs and wizards for all HTML tags. Furthermore autocompletion for all tags and their attributes together with Zencoding/emmet helps for quick web development.

Bluefish is extensible via plugins and scripts. Many scripts come preconfigured, including statical code analysis, and syntax and markup checks for different markup and programming languages. Also a simple marco-like feature called "custom menu" helps to speed up repeating actions.

History of Bluefish in the early years of the Linux desktop
Bluefish was started by Chris Mazuc and Olivier Sessink in 1998 to facilitate web development professionals on Linux desktop platforms. In 1998 KDE 1.0 was released, and in 1999 Gnome 1.0 was released, so this was in the early days of the Linux desktop. Bluefish was at the time the only web development editor on the Linux desktop. Bluefish was quickly part of the major Linux distributions, such as Debian Potato (released in 2000), Knoppix 2.1  and the first Fedora release. On the early Linux desktop Bluefish was the most import web editor. Various books about web development on Linux therefore cover the use of Bluefish. For example Easy Oracle PHP and Practical PHP and MySQL by Ubuntu community manager Jono Bacon which even included a customized Ubuntu live CD with Bluefish as primary editor.

The development of Bluefish was initially inspired by two other editors: the configurable syntax scanning and highlighting was inspired by the NEdit, but the user interface was inspired by Homesite which was only available on windows. The work title for the application development in the very early stages was Thtml editor, but this was considered too cryptic by the small development community; for a short time Prosite was used, but this was abandoned to avoid clashes with web-development companies already using that name. Finally the name Bluefish was chosen after a logo (a child's drawing of a blue fish) was proposed on its mailing list.

The 1.0.x branch was released in 2005, and included a new logo. The 1.0 release was featured on Slashdot, causing the slashdot effect on the Bluefish website. In 2005 a Bluefish fork of 1.3 was made to create Winefish, a LaTeX editor. The 2.0.x branch was a big rewrite, changing to the GTK-2 GtkTextView widget and a new syntax scanning engine based on a deterministic finite automaton. The 2.2.x branch, which is the current stable branch, supports both GTK-2 and GTK-3.

Although Bluefish is not an official part of Gnome, it is often considered so because it uses the GTK toolkit and integrates in GNOME.

Source code and development
The open source codebase of Bluefish is available on SourceForge. Bluefish was one of the early projects on Sourceforge, it joined in the first few months after launch, mainly promoted by Robin Miller who was a heavy Bluefish user and worked for Geeknet that owned Sourceforge. Initially CVS was used for code version control, later the code was moved to SVN.

Bluefish is written in C and uses the cross-platform GTK library for its GUI widgets. Markup and programming language support is defined in XML files that are loaded with Libxml2. The optional plugins require libenchant, python and libgucharmap

Bluefish has a plugin API in C, but it has been used mainly to separate non-maintained parts (such as the infobrowser-plugin) from maintained parts. A few Python plugins exist as well, but they need a C plugin to interact with the main program. Bluefish also supports very loosely coupled plugins: external scripts that read standard input and return their results via standard output can be configured by the user in the preferences panel. Building is done with Automake and Autoconf to configure and set up its build environment. Both llvm and GCC can be used to compile Bluefish. On Windows, MinGW is used to build the binaries.

Professional reviews
Tech writer Robin Miller (Linux.com, Time.com) wrote GPL-licensed Bluefish has become an excellent “production tool” for those of who earn our living writing for Web sites, full of little “speed you up” features. . Tech writer Jack Wallen (Techrepublic, Linux.com) wrote For those Linux (and BSD, and Mac, and Windows) users, the tool by which most measure the standard is Bluefish. A Softpedia review found the software powerful, feature-rich and easy to use. . A review on thegeeksclub found Bluefish an excellent choice if you’re serious about web development. An extensive review at lifeofageekadmin.com concluded ''As we can see Bluefish is a powerful web editor that runs on many platforms and is well suited for development to meet many needs. Although it does not have WYSIWYG capabilities it is easy to use other programs to fill in the gaps. Bluefish also adds the power of templates to allow for speedier development to common tasks used by the coder''. A review at htmlcenter.com summarized Bluefish is simply an application to put all of your favorite coding elements at your fingertips without overpowering you with a bunch of annoying suggestions. When compared to IDE's on Linux Linuxiac found Bluefish having a long list of capabilities, but lacking in advanced IDE features. Steve Litt wrote for Linux Productivity Magazine: If you write HTML professionally, you should check out Bluefish too. Computerworld wrote ''the UI is intuitive enough for anyone to begin using it right off the bat and discover additional capabilities over time. This is an appealing piece of software if you’re looking for a text editor to do Web coding''. ZDNet wrote Bluefish has evolved from its humble editor beginnings to become a pseudo-integrated development environment (IDE), with auto-completion, indentation, search, integration with external programs, support for most languages, in-line spell checker, auto-recovery, snippets sidebar, project support, and more. A comparision between open source web IDE's on OpenSourceForU.com concluded It is considered by far the most powerful among HTML editors