Softpanorama
May the source be with you, but remember the KISS principle ;-)

Contents Bulletin Scripting in shell and Perl Network troubleshooting History Humor

Less is More: The Orthodox File Manager (OFM) Paradigm

by Dr Nikolai Bezroukov

Content : Foreword : Ch01 : Ch02 : Ch03 : Ch04 : Ch05 : Ch06 : Ch07 : OFM1999 : OFM2004 : OFM2012


 Prev Contents  Next

FAR -- the first OFM that successfully implemented a plug-in concept


Introduction

The initial versions of FAR were written by a very talented programmer Eugene Roshal in 1997. He stands among Vsevolod Volkov and creators of DN as troika, who defined modern OFMs.  Far was definitely influenced by VC, DN, FC and MC. At the same time is it a very clean and well thought implementation with its own "face" and the best compatibility with OFM1999 standard. It has an excellent  implementation of FTP VFS and, especially, archive VFS ( Eugene Roshal is also the author of RAR -- one of the best compression programs on the market). Most of the code existed in earlier versions of RAR archiver. From the very beginning it was clear that we have a new leader in classic OFMs for Windows. Despite huge success of Windows 95 at the time, FAR was the one of the few OFM based on Win32 API (Norton Commander for Windows and Total Commander  which was called Windows commander at the time were other well known implementations based on Win32 API).  The current review is based on version 3.0 of FAR. This version utilizes LUA as a macro language that puts FAR above the competition among all OFM managers. Essentially FAR team crossed the finish line of integrating LUA before MC team, despite the fact that MC team has chances to integrate S-lang probably for decade or more. 

Most of FAR features were already available in version 1.5 that was released in late 1997. Please note that at this time Norton Commander still existed as a commercial product: version 5.0 was released in 1993 and version 5.5 in 1998, one year after FAR. Norton Commander for Windows, the GUI version of Norton Commander already existed (it was released in 1996 and that's the version the FAR left in the dust.)

There are three main versions of FAR that actually co-exist in FAR user community:

Due to important of version 3.0 I created several additional pages devoted to this version. Among them:

Unfortunatly, version 3.0 was released when the current revision of  ebook was close to completion and I did not have time to analyse as thorously as I wished, so impressions are preliminary.  First and formost it uses It also uses LUA as macro language. This is the second groundbreaking achivement of FAR -- integration of standard scripting language engine into OFM.

It also fixed very annoying FAR idiosyncrasy (or blunder, if you wish) of writing most settings including user menu and extension menu to the registry (which means that if you PC became unbootable, you lose those setting with the OS, unless you separately back them up from the registry).

Generally the build that I used (2942) looks pretty stable to me. But in search files dialog, the bug related to selecting files that were modified within specified data range is not still fixed.  Folder shortcuts (F9-C-O) are generalized to 10 lists bound to RightCtrl-[0-9] as starting points, not just 10 shortcuts like in older versions.

From version 1.65 that I test FAQR added several useful keys shorcuts were added to the standard OFM keymap. For example the key to insert  file name with a full path (Ctrl-F). This is in addition to Ctrl-Enter introduced by Volkov Commander.  From early version macro support was included (with the hotkey Ctrl . switches macro recording on, pressing it again switches it all and invoke the dialog to name the created macro) for both file manager and built-in editor. Far was the first to introduce a plug-in API in OFMs, which for example from early version provided such function as for macro construction and  editing, temp panel, ftp and several other functions.  Gradually users had wrote a huge library of plug-ins. Most of them for version 1.x, but there are already a dozen plug-ins written specifically for FAR 3.0 which take advantage of the new functionality.

Panelize command and temp VFS support (Like in NC5 temp VFS is most useful as a target of the panel command from search) are implemented and can be used (via a uner-defined macro) to provide an XTree VFS implementation (just search *.* everything in the subtree). But it might be better to implement XTree VFS directly binding it to Ctrl-D (may be somebody will write such a plug-in soon).   There is a (non-obvious) way to hide full path in temporary panel in order to use it for finding  duplicate and other purposes where full path is a disadvantage: when you browse Temporary panel, you can change its panel modes as usual: Alt-1, Alt-2 etc., and the first three modes display file names without path.

There is a way to make panels asymmetrical in width (Ctrl-Left or Ctrl-Right) as well as expose large part of shell terminal window (Ctrl-Up, Ctrl-Down). This is a unique and important for advanced users flexibility that few other OFMs have (for example Total Commander does not).

FAR has one of the best history implementation including history of searches, selections, visited folders and viewed/edited files. This was done cleanly and uniformly which is in general a trademark of FAR programming style. Again not only because of feature set, but also the quality of the implementation makes FAR a leader among the Win32 API based classic OFM implementations.

Despite being the leader in classic OFM implementations FAR is a relative newcomer and is one of  the youngest implementations discussed in this book.

The greatest idea implemented in FAR is a concept of plug-ins -- a concept similar to Netscape.  In this respect1 FAR was pioneer implementer of this feature. For a long time FAR had no competitors and was the only OFM with a rich set of plug-in. Several dozens plug-ins for FAR were available almost instantly. Now several other OFMs use this concept too (Total Commander in one example)

The greatest idea implemented in FAR is a concept of  a plug-in -- the concept similar to Netscape.  In this respect FAR is a unique OFM and until recently has no competitors. Only since  2001 or v. 4.5 Total Commander started to support plug-ins too in a fairly compatible way. 

Several hundred plug-ins for FAR already exist (557 the last time I checked).  See an official list  of plug-ins for more information. This is a revolutionary feature that makes FAR a class of its own. As an example of how a simple plug-in can extend the functionality of FAR see, for example, External Filter for Editor Registry Browser by Michael Yutsis. ,  Colorer by Cail Lomecb and Search And Replace by Ivan Sintyurin.

They are all  nice examples of complex plug-ins that substantially enhance the functionality of FAR. Here is an interesting list of recommended plug-ins from My FAR Plugins TOP 10

Name Author Description
Colorer Igor Russkih (aka Cail Lomecb) The Colorer makes the FAR's editor what it is.
Without the highlight syntax from the Colorer I would never use FAR as my only editor. See also Colorer-take5 library
Word Completion Igor Lyubimov Word completion works just the way I like it. It reduces the number of typos and increases productivity.
Far Navigator Vasily V. Moshninov Thanks to Vasily the best FTP client for Open VMS.
WinSCP Martin Přikryl SFTP and SCP client. (this is a plug-in version of WinSCP
Search And Replace Ivan Sintyurin From my point of view the best implementation of regexp search and replace.
Macro View Konstantin Melnikov The FAR's macros would be nearly unusable without this plugin.
Block Processor Ondrej Brablc Yes, I rate my plugin so high. Thanks to it I removed the plugins jungle and replaced 10 other plugins.
Registry Browser Michael Yutsis Better then Regedit. What to say more?
Calculator Igor Russkih (aka Cail Lomecb) Handy calculator with many units conversions.

Built-in editor can work with Windows Clipboard and also supports plug-ins. See, for example, a very elegant "External Filter for Editor"  by Michael Yutsis. Among other popular editor plug-ins I would like to mention Colorer, a plug-in that provides syntax coloring and another plug-in that provides regular expression based search and replace. Although FAR's internal editor is  weaker then in Midnight Commander, it is compensated by a wide range of plug-ins available.

One of useful features of FAR plug-in API is that a plug-in can have a command-line prefix and its own command line after it. It allows many things; for example, XML plug-in allows to go directly into a specified element in the specified URL, and you can do it from a user menu.

If you are a programmer, you can feel how good Eugene is by just exploring the reaction of Far on unusual combinations of keys: you will discover that FAR behave very intelligently even in very complex situations. But FAR is showing its age as it was not greatly changed since version 1.65 -- the last Eugene Roshal has releases before passing the codebase tot he team of maintainers. One major drawback is outdated system of macrovariables.  Another significant drawback is that the user menu is not dynamic like in MC (althouth with LUA integration in version 3.0 this is trivial to implement). Also built-in editor does not have user menu implemented. With open sourced codebase there is a possibility to significantly enhance built-in editor using compatible with FAR licensed codebase.   

I am especially grateful for the improved implementation of plugins and creation of the community of contributors that write them. That's probably the main achievement of FAR.

Compatibility with OFM1999 standard and shortcomings

FAR has the best result in version 3.1 of the OFM1999 compatibility test:

OFM1999 score (average of all 21 tests)   NC VC DN FAR Total
CMD
NCW MC FC
Scores   58 63 64 87 63 62 61 68

Interface look & feel

Far demonstrates perfect compatibility in this category...
  1. FAR provides classic OFM interface with two symmetrical panels and command line at the bottom. Command line is expandable to either full of partial (with height configurable by line) command screen. Symmetrical panels provide user definable fields and ability to switch to one of several predefined templates including horizontal panels. 
  2. There is an information line under each panel
  3. Both bottom and top menu are present. Top menu provides access to configuration and commands without shortcuts.  Bottom menu changes if you press and hold Ctrl, Alt, Shift to see what operation are provided by F-keys with Alt, Ctrl and Shift prefixes. 
  4. There is a capability to position both panels horizontally
  5. There is a capability to expand command line to half screen or full screen.
  6. There are separate menus for setting in left and right panels.

Navigational and basic hot keys compatibility: 

Far demonstrates perfect compatibility in this category...
  1. Enter behavior is compatible, the  result of execution of scripts are visible via Ctrl-O.
  2. The Tab key behavior is compatible
  3. Ctrl-\ is compatible (goes to the root of logical drive)
  4. Ctrl-PgDn and Ctrl-PgUp are compatible (move to the upper (current subdirectory) and lower level directory respectively). The importance of this feature is that it permit exit from several level of directories without changing the command line that might contain partially typed command. This way you can assemble command line while traversing directory for its components, for example file names.
  5. Ctrl-R -- rereads the directory; works for virtual filesystems for example FTP VFS as well.
  6. Ctrl-U -- swap panels; Ctrl-U does not switch panels if one panel contains the tree view.
  7. Alt-F1 and Alt-F2  produces the list of logical disks.
  8. Ctrl-L switches to the information panel. Information panel should provide at least statistics about the current directory and current drive. If directory description file (by default file dirinfo in Windows implementations) is available it is displayed as well. There is no way to define the dirinfo file.  The file that serve as dirinfo file should be user-definable with the possibility to define it with regular expression (this way multiple files can be defined, if desirable).
  9. Ctrl-Q switches to quick view in which movement of cursor on the active panel changes the view of the file in the passive panel.

Shell Windows compatibility

Far demonstrates almost perfect compatibility in this category...
  1. OFM should behave like tile windows manager and be able to expand command line (which is a minimized to a single line third, borderless shell terminal window) -- to full screen, to half screen vertically, to half screen horizontally and to quarter of the screen (half with one panel hidden):
  2. Command line should should allow to execute multiple command from it with macrosubstitution of macrovariables and shortcuts to the current file to the command line (Ctrl-Enter) as well as  path to left and right panels (Ctrl-[/Ctrl-]).
  3. Ctrl-O should maximize expand shell terminal windows to maximum size (hide both panels by default):
    1. In the resulting screen standard shell terminal functionality should be present as if this is a telnet session to localhost. For example, if the shell for a particular OS provides browsing of shell history with arrow keys this should work.
    2. If current directory was changed during the work in command window, the active directory in the panel should reflect the new directory on return to panel view by pressing Ctrl-O again.
  4. Terminal session look& feel compatibility. Expanded window should behave like terminal session  (like in GNU screen). For bash at least the following features should be present:
    1. Ability to change command prompt (Unix)
    2. "Arrow" access to history  (Unix)
    3. Ctrl-R search in command history (Unix)
    4. Ability to scroll windows back
  5. Ctrl-F1/Ctrl-F2 should provide a view of the shell screen with overlaid one panel (hide one panel exposing underling shell terminal window and results of execution of previous command, if any).
  6. Ability to shrink panels 50% or gradual shirking/expansion of panels (vertical shrinking compatibility
    1. With one panel hidden (left or right) in both half window mode and full terminal windows mode.
    2. Ability to expand active panel to full screen

Compatibility of F1..F12 and other F-keys operations

Far demonstrates perfect compatibility in this category...

Tree View Panel compatibility

  1. Alt-F10 is used to invoke tree panel. You can to copy files to the tree target but target of passive tree is not highlighted (it is still visible in the information line).  This mode in tree part should have look& feel of Microsoft File Explorer. 
  2. Movement of cursor does not affect passive panel. Enter should change directory of the passive panel and FAR does exactly this
  3. Noncompatible: Quick search in tree view works and is compatible -- you start typing letters with alt-letter prefix and instant search using already typed prefix is performed. Jump to directories with the same prefix down the tree is implemented and works. Note: search should be activated
  4. F5/F6 compatibility from tree view to passive panel.  -- compatible
  5. Same nesting level navigation (Via Grey+/Grey-) is implemented properly
  6. Quick view mode in tree view is not implemented properly. Should list content of each directory in info panel (Like In Microsoft File Explorer)
  7. Pressing Ctrl-Enter copy directory to the command line
  8. Noncompatible: F4 in treeview mode does not allow to edit directory attributes
  9. Navigation keys  Home/End and PgUp/PgDown  keys work as expected.

Directory search panel (NCD panel or Quick CD panel)

Files Selection/Deselection

  1. Ins  behavior is compatible. It select a single file. Cursor moves one line down on selection; If Ins is pressed on already selected file it is deselected (toggle).
  2. Gray+ and Gray-  behavior is compatible. They  select and deselect file using a regular expressions. Shell basic regular expressions only; for example the expression *a*.*  selects files like my_bak.tmp and my_bat.txt, not all files. Perl regular expressions are not supported.
  3. Gray+/Gray- operations are persistent (second selection operation adds to existing selection);
  4. Gray *  inverts the current selection
  5. Named (savable/restorable) selection patterns are implemented
  6. Select by file type, date range or custom script (FindFile-style selection) is implemented. In the current version selection by data range does not work.
  7. Selections history is implemented.
  8. Ability to separate individual regex with ";" is present
  9. Extended or Perl-style regular expressions support as an option not implemented.

Quick view compatibility

Macro compatibility

FindFile compatibility

Command line execution compatibility

Sorting and filtering file and directories in panel

User Menu

Additional file commands compatibility

Association management compatibility (extensions menu)

Compare directories

Weak implementation of only classic Norton style attributes comparison.

Built-in viewer:

Built-in view in FAR is OK.

Built-in Editor

Built-in editor is weak, but can be extended by plugins.

Archive virtual file system 

History and favorites compatibility

 

The current version of FAR has the best score in OFM1999 standard compatibility test.  It also has probably the best archive virtual file system implementation, as Eugene Roshal is the author of RAR -- a leading archiver.  FAR has the best supports the quick view feature (important part of OFM paradigm) and Directory search panel. Generally  FTP support of advanced elements of the Orthodox standard was and is unmatched. From the very beginning till today it was and remains the leader among command-line OFM implementations for Windows.

Advanced features implemented

Among advanced features that FAR support are:

 

Timeline

??-Oct-2003 -- FAR 1.70 beta 5 release
17-Dec-2000 -- FAR 1.70 beta 2 release
26-Jun-2000 -- FAR 1.65 maintenance release
17-May-2000 -- FAR 1.64 maintenance release
24-May-2000 -- FAR 1.64 beta release
19-Oct-1999 -- FAR 1.63 maintenance release
19-Aug-1999 -- FAR 1.63 beta release
24-May-1999 -- FAR 1.62 maintenance release
27-Feb-1999 -- FAR 1.61 maintenance release
19-Oct-1998 -- FAR 1.60 maintenance release
01-Jul-1998 -- FAR 1.52 maintenance release
30-Mar-1998 -- FAR 1.51 maintenance release
15-Feb-1998 -- FAR 1.50 shareware released.
08-Oct-1997 -- FAR 1.50 beta released.

New in Far 1.70

Edited from what's new file:

New in Far 1.63

New in FAR 1.62 (from Whatsnew.txt, slightly edited)

  1. "Search in archives" option is implemented in "Find file" dialog.
  2. Directory names like "dir1\dir2\dir3" are allowed in "Create directory" command. FAR will try to create all directories of the path.  
  3. Internal viewer now can store position in the file:
  4. Press F4 in "Plugin commands" menu to assign hot key to menu item. Hot key can be a letter or a digit. This feature is designed to simplify access to items of this menu from keyboard macro commands
  5. Plugins can be called from the internal editor. Several such plugins ("Case conversion", "Draw lines", "Auto wrap", "Brackets matching" and "Align block") are added to the distribution;
  6. In FTP client "Use firewall" option can be specified separately for each site.
  7. "B" and "M" modifiers for "DM", "DC", "DA" column types:

    For example, you may use column type "DMBM" to show file modification time in brief format with text month names.

  8. If "Save file position" viewer or editor option is on and user manually set character table, this table will be restored when open viewed or edited file next time.
  9. Ctrl-Shift-F3 and Ctrl-Shift-F4 always call internal viewer and internal editor ignoring file associations.

  10. "!#" modifier specified before file association symbols forces them to refer to the passive panel. For example, !#!.! denotes a current file name on the passive panel.
  11. "Set "Hidden" attribute to new description lists" option in "File description" dialog.
  12. In archive support plugin 'P' (path only) modifier can be used also with %%A and %%a variables.
  13. Several enhancements of in the Plugins API

Problem areas

Suggestions

There are several suggestions that might help to make version 1.70 even more user friendly:

Webliography

Internal

External

 Prev Contents  Next



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Haterís Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least


Copyright © 1996-2014 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine. This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting hosting of this site with different providers to distribute and speed up access. Currently there are two functional mirrors: softpanorama.info (the fastest) and softpanorama.net.

Disclaimer:

The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

Last modified: February 19, 2014