# Lyrical introduction to plugins

Tell me, what has the power? Money, you say. My brother thinks so as well. But actually... plugins hold the power.

Plugins might seem clumsy and overwhelming, but in fact, there's over a hundred plugins of all kinds for FAR Manager now - ranging from Tetris games to e-mail clients. This phenomenon is strange at first sight, but it is understandable - everyone wants what he needs and doesn't wait for someone to do that.

Plugin technology is definitely not new, but few other application can claim such an extensive use of plugins as FAR. The reason is, most likely, the fairly flexible structure of FAR itself, along with the simple approach of shell interaction with plugins. Essentially, this encyclopedia is dedicated to this approach. We won't praise, analyze or rave about the advantages of plugin interface. Just start study it and you will understand that in FAR you can do anything you want.

The main idea behind the concept of plugins is customizability. Install only those plugins that provide the functionality you want, and discard anything unneeded. That way, your tool will end up exactly the way you want it, without any unnecessary sag -- and that's the main advantage of FAR Manager over the integrated shells. Besides, it can always learn new tricks and do something that it has never done before.

So how do you take advantage of that? Alas, it's not entirely magic; you will need certain programming experience. However, from this point there's very few requirements; almost any programming language would do, given that you have a compiler capable of producing Windows DLLs. Best documentation and examples are available for C/C++, Delphi and assembly language; there are plugins known to be written in Modula, Ada and C--. In some cases you'll be faced with lots of extra details. You can read about them in special topics.

During initialization, FAR scans its `Plugins` folder and its respective subfolders, and considers all files with .DLL extension found there to be its plugins. Therefore, if your plugin uses its own DLLs, they must have a different extension. In fact, plugin is an ordinary library that runs in the console process environment, so it functions just like any console Win32 application. However, due to the compatibility issues plugin shouldn't directly write text to the screen; Text function from FAR Manager service should be used instead.

See also:
Overview of plugin capabilities, Exported functions, Service functions, Structures, Archive support