Bluefish (software)

Revision as of 13:01, 26 March 2025 by imported>Smeryutew
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description Template:Use dmy dates Template:Multiple issues

{{#invoke:Infobox|infobox}}Template:Template other{{#invoke:Check for unknown parameters | check | showblankpositional=1 | unknown = Template:Main other | preview = Page using Template:Infobox software with unknown parameter "_VALUE_"|ignoreblank=y | AsOf | author | background | bodystyle | caption | collapsetext | collapsible | developer | discontinued | engine | engines | genre | included with | language | language count | language footnote | latest preview date | latest preview version | latest release date | latest release version | latest_preview_date | latest_preview_version | latest_release_date | latest_release_version | licence | license | logo | logo alt | logo caption | logo upright | logo size | logo title | logo_alt | logo_caption | logo_upright | logo_size | logo_title | middleware | module | name | operating system | operating_system | other_names | platform | programming language | programming_language | released | replaced_by | replaces | repo | screenshot | screenshot alt | screenshot upright | screenshot size | screenshot title | screenshot_alt | screenshot_upright | screenshot_size | screenshot_title | service_name | size | standard | title | ver layout | website | qid }}Template:Main other

Bluefish is a free and open-source software and an advanced source code editor with a variety of tools for programming and website development. It supports editing source code such as C, JavaScript,<ref>Template:Cite book</ref> Java, PHP,<ref name="PracticalPHP">Template:Cite book</ref><ref name="easyoracle">Template:Cite book</ref> Python,<ref name="pythonforbeginners">Template:Cite book</ref><ref>Template:Cite book</ref> and as well as markup languages such as HTML,<ref>Template:Cite book</ref> YAML, and XML.<ref>Template:Cite book</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> It is available for many platforms, including Linux,<ref>Template:Cite book</ref> macOS,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and Windows,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> 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,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name="thegeeksclub">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Bluefish is lightweight, fast and easy to learn, while providing many IDE features.<ref name="zdnet5tools">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Bluefish was one of the first source code editors on the Linux desktop. It has been translated into 17 languages. The source code is available under the GNU General Public License.

FeaturesEdit

Bluefish is not a complete IDE, but more than an advanced text editor.<ref name="roblimo">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Compared to an IDE Bluefish lacks functionality like an integrated debugger.<ref name="bestcodeeditors">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> It is better described as an advanced code editor<ref name="htmlcenter"/> with many web specific features.<ref name="blre1">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name="thegeeksclub"/> Some call this a web IDE,<ref name="openforyou"/> but it does not feature a WYSIWYG web design component.<ref name="troubleshooters" /><ref name="blre1"/>

Bluefish's features include syntax highlighting<ref name="jumpstart">Template:Cite book</ref> and auto-completion for 47 different markup and code languages (including Mediawiki syntax<ref>Wikipedia:Text editor support § Bluefish</ref>), customizable via an XML language definition format.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> It furthermore features code folding, auto-recovery,<ref name="zdnet5tools" /> upload/download functionality (on systems where GVfs is available), a code-aware spell-checker,<ref name="openforyou">Template:Cite news</ref><ref name="zdnet5tools" /> a Unicode character browser, project support,<ref name="lifeofageekadmin"/> code navigation and bookmarks.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> It has some advanced search and replace functionality<ref name="blre1"/> with regular expression support, and multi-file search and replace support. It has a multiple document interface<ref>Template:Cite magazine</ref> that can quickly load large (hundreds of files) codebases or websites,<ref name="htmlcenter">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name="lifeofageekadmin">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and features full screen editing.<ref name="bestcodeeditors"/>

For web development it has many a toolbar with specific dialogs and wizards to automatically insert the correct HTML tags.<ref name="jumpstart"/> Furthermore, autocompletion for all tags and their attributes<ref name="blre1"/> together with Zencoding/emmet<ref>Template:Cite mailing list</ref> helps for quick web development.<ref name="troubleshooters">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

Bluefish is extensible via plugins and external tools and scripts.<ref name="lifeofageekadmin"/><ref name="zdnet5tools" /><ref name="bestpgpeditors">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Many scripts come preconfigured, including statical code analysis, and syntax and markup checks for different markup and programming languages such as lint or weblint.<ref name="linuxandubuntu">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Also a simple marco-like feature called "custom menu" helps to speed up repeating actions.<ref name="roblimo"/><ref name="gradelinuxeditorsa">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> A large set of macro's for PHP and HTML come preconfigured.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

History of Bluefish in the early years of the Linux desktopEdit

Bluefish was started by Chris Mazuc and Olivier Sessink in 1998 to facilitate web development professionals on Linux desktop platforms.<ref name="usalug">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> In 1998 the K Desktop Environment 1.0 was released, and in 1999 the Gnome desktop environment 1.0 was released, so this was in the early days of the Linux desktop.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Bluefish was at the time one of the only web development focused editors on the Linux.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name="enki-editor">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Linux, due to the LAMP stack (first introduced in 1998<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>), was becoming the most popular web hosting platform.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Bluefish was quickly part of the major Linux distributions, such as Debian Potato (released in 2000),<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Knoppix 2.1<ref>Template:Cite mailing list</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> (at the time the most important Linux Live distribution) and the first Fedora release.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> On the early Linux desktop Bluefish was the most important web editor.<ref name="debiandesktop">Template:Cite book</ref> Various books about web development on Linux therefore cover the use of Bluefish. For example Practical PHP and MySQL by Ubuntu community manager Jono Bacon which even included a customized Ubuntu live CD with Bluefish as primary editor.<ref name="PracticalPHP"/><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

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.<ref name="bluefishhomepage">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Finally the name Bluefish was chosen after a logo (a child's drawing of a blue fish) was proposed on its mailing list.<ref name="usalug"/>

The 1.0.x branch was released in 2005, and included a new logo. The 1.0 release was featured on Slashdot,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> causing the slashdot effect on the Bluefish website. In 2005 a Bluefish fork of 1.3 was made to create Winefish, a LaTeX editor.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> The 2.0.x branch<ref>Template:Cite mailing list</ref> was a big rewrite, changing to the GTK-2 GtkTextView widget and a new syntax scanning engine based on a deterministic finite automaton.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> The 2.2.x branch,<ref>Template:Cite mailing list</ref> which is the current stable branch, supports both GTK-2 and GTK-3.

Although Bluefish is not an official part of the Gnome desktop environment, it is often considered so because it uses the GTK toolkit and integrates well in GNOME.<ref name="debiandesktop"/><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

Source code and developmentEdit

The open source codebase of Bluefish is available on SourceForge. After a short period in which the Bluefish developers communicated code patches over email,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Bluefish joined as one of the early projects on SourceForge. The community joined in the first few months after launch, mainly promoted by Robin Miller who was a heavy Bluefish user<ref name="roblimo"/> and worked for Geeknet that owned SourceForge. Initially CVS was used for code version control, later the code was moved to SVN.

Bluefish has a well-established code-base mostly written in C<ref name="openhub">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and uses the cross-platform GTK library for its GUI widgets.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Markup and programming language support is defined in XML files that are loaded with Libxml2. The optional plugins require libenchant, python and libgucharmap.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Building a binary 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. On OSX there are ports on Fink<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> and Macports,<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> but the official binary is built using the Gtk-OSX-Integration<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

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.<ref name="lifeofageekadmin"/> Various scripts for javascript, json, CSS, and HTML formatting are included in the Bluefish distribution.

See alsoEdit

Template:Portal

ReferencesEdit

Template:Reflist

Further readingEdit

Books or extensive websites on web development that recommend and/or cover the use of Bluefish:

  • {{#invoke:citation/CS1|citation

|CitationClass=web }}

Books on Python that recommend and/or cover the use of Bluefish:

Books on PHP that recommend and/or cover the use of Bluefish:

Generic books on development on the Linux desktop that recommend and/or cover the use of Bluefish:

External linksEdit

Template:Sister project

Template:HTML editors Template:GTK Template:FLOSS