Your mc efforts is a great job !!! [Warning]: Long
Nikolai Bezroukov
speditor at optonline.net
Thu Oct 30 02:20:45 UTC 2003
[Warning] Long, as I reiterated some points from the prev discussion.
Pavel Roskin wrote:
[snip]
> I'm not sure you are talking about mcfs. mcfs doesn't allow you to
> execute any remote commands other than whatever is already
> supported by mcserver. That's the standard file operations supported
by FTP
> plus a few goodies like chmod.
I do not know the details of the actual implementation, but IMHO the
idea itself is very elegant althouth slightly ahead of the codebase with
its hardwired hotkeys. It's better to be preserved and extended it to
the full functionality. We should not throw out the child with a water.
Your concerns about security might be slightly overstated, as IPsec, SSL
or similar secure or semi-secure channel can be used. Moreover on
switched networks that now prevail, the session is not that easy to
sniff, if switches are configured correctly and hardened against ARP
poisoning. For example in the 3COM switches (SuperStack II) enabling
"Port Security" on a port makes the switch remember the first MAC
address it receives and locks that MAC address to that port until
overridden by manual intervention. After that any hacker can hit the
wall with his head as long as he wish. Also any attempt to use ARP
poisoning in corp. environment usually trigger IDS.
Here I am discussing the general ("theoretical") value of client-server
mode for this type of managers. And it is in this lights I stated in
http://www.softpanorama.org/OFM/Ofm_04.shtml and I am still convinced
that mc client-server capabilities provides an important, pioneering
step in the right direction. If keystrokes are parameterized into a
"command language", not hardwired like in the current implementation,
then this client server model is very natural with the server
interpreting internal "command language" and client converting
keystrokes to the command stream and updating panels.
The key advantage is the unique powerful and very attractive blend of
FTP and telnet functionality in one interface. IMHO such a functionality
might constitute a new protocol, "a command line VNC", if you wish.
Probably equally important is the possibility of avoiding those
horrible "Alice in Wonderland" key binding problems that litter this
list. The server is immune to the host key bindings and you can use just
one client on, say, the most "mc-friendly" Linux flavor (RH8 with the
gnome-terminal 2.0.1-5 ;-) to administer all your servers. That
instantly makes mc much more appealing tool to the system administrators
who need to work with a lot of servers and might help to increase the
development resources by attracting new talented developers.
[snip]
> I was confused by "VFS" meaning two different things on adjacent
> lines. I still don't know what NC5 XTree VFS is. I have never used NC5.
That's how I call "flat file VFS". As a PhD I have the responsibility to
obscure things by inventing new terms ;-). See also
http://www.softpanorama.org/OFM/Ofm_00.shtml. The book discuses several
implementations including NC5.
[snip]
> > The idea is to have access to top and bottom directory in the
> > current panel (which of course depends of your sorting mode) via
hotkeys.
> > As I said, I'm not aware of such key in mc.
It's actually not defined either in OFM1999 standard or in OFM2004
standard (see http://www.softpanorama.org/OFM/Ofm_08.shtml and
http://www.softpanorama.org/OFM/Ofm_09.shtml ). Here is what OFM1999 is
saying (sorry, it's slightly Windows-biased ;-) :
The hotkey assignment for sorting is optional. If the hotkey is
defined its action should correspond to the F9-(LR)-S sequence for
the current panel and display the same menu so that the proper order
can be selected with the second key from the menu. Alternatively,
Ctrl-F3, Ctrl-F4, Ctrl-F5, Ctrl-F6 and Ctrl-F7 can be used for
sorting by name, extension, modification time, size and unsorted,
correspondingly ("NETSU" order).
For Unix you need to add the ability to sort by sort by permissions,
owner and group. So the menu selection string became "NETSUPOG".
As for the hotkey, actually, how about Ctrl-A ? A very convenient
hotkey for a frequently used operation (and resorting of columns is
definitely very frequently used, at least by advanced users). Actually
you are in a better position to suggest a suitable hotkey as I do not
really understand all the tradeoffs of the Unix environment especially
the potential conflicts with Emacs/XEmacs (I use Vim/Gvim).
[snip]
> > >>But it looks like the major architectural weakness of MC is the
> > >>absence of a build-in scripting language. There are rudimentary
> > >>attempts to invent some rudimentary scripting languages is some
parts
> > >>of mc (for example in user menu), but they are just weak and
> > >>inconsistent attempts to solve a generic problem by inventing ad hoc
> > >>mini-languages for each case. Currently probably the best way to
> > >>script mc is to use a programmable keyboard (like EnduraPro/104
> > >>FOCUS FK-9200, or MCK-142) or use Expect.
> > >Again, it's something that needs to be implemented and maintained.
There
> > >is not enough manpower to maintain even the existing featured in a
good
> > >shape.
Very true, and that's my point too. Here I would like to reiterate some
points as we moved the discussion.
I consider your efforts to be really outstanding because you not only
managed to revitalize the development, but also stop the feature creep.
Without your efforts mc probably would scale down to version 4.35. IMHO
two of your recent decisions (1) to clean the code of GUI-related staff
and (2) Windows-port related staff were very timely.
Two things are now more or less clear:
- mc is in the stabilization phase and it's level of maturity is
reasonably high,
- the development resources are very scarce and just keeping up
with the usual flow of bugs strains the resources.
That's why I think it make sense to bite the bullet and move this
"cleaning" strategy on a new level by using the capabilities of S-lang.
Adding S-lang and exposing relevant internal functions might took the
same amount of efforts as a regular cleaning of code that is needed
anyway, but with much better return on the investment. Iit gives you an
opportunity to concentrate on simplifying and refactoring the core
codebase by removing several ad hoc mini-languages invented in usual
hacker-style traditions. For example, the code implementing "user
extension predicates" and "user menu visibility predicates" are two
examples of mini-languages, implementations of which can instantly be
replaced with S-lang with no or very little effort.
Also the pool of people who can develop/polish scriptable parts is
bigger/deeper. That's a natural separation of labor that the current
development environment is lacking: you need to be a jack of all trades
and react to each and every hotkey problem (actually even in todays
situation several things from the dscussions can probably be added to
FAQ to cut the number of such issues). Assuming the core and scripting
part are separated you have a core team and the extension development
community like in Emacs. that's a more powerful combination and I
suspect that more people might be willing to help with the scripting,
but few would dig into the current C codebase.
>> That might be not that simple and there might be some savings.
>> For example slang interpreter may be easily embedded
>> into mc to make it extensible. And that provides an opportunity to
cut "feature creep"
>> that takes a lot of efforts to
>> maintain by implementing some features via macros.
> I'd rather go with something more suitable for writing anything from
syscalls to multi-dimension
> arrays. Also, it would be helpful if the language was specifically
designed to be embedded.
> I thing Perl or Guile will be fine, but I didn't research
> this question. Anyway, it's all in the far future.
True, but paradise is unachievable on the earth, you know :-). Something
is always missing. And that especially true about embeddable
languages. I mentioned S-lang because it might be the easiest to
implement. The library is used by mc already, so it's almost in.
Actually for system calls, S-lang's "intrinsic function" mechanism can
be used (see jed codebase). S-lang also has arrays and hashes, so it
looks more or less adequate for the purpose. But the most important
point is that it's already *almost in*.
Moreover S-lang usage in mc may provide stimulus for further improvement
of both the S-lang and its interpreter and thus lift some or all of the
current limitations/reservations. There also may be some kind of
cross-pollination / integration with jed, which is a much better editor
then cooledit , so this is actually not a one time tradeoff when you can
lose of win, but a dynamic situation, a potentially mutually beneficial
two-way process.
It is true that S-lang has its own warts and limitations, but please
understand that is such situation there is no best choice, only the
worst choice and this might be inaction. The truth is that even the
worst choice (let's say adopting bash ;-) is better than none: scripting
language is one of the few available avenues of addressing the feature
creep problem .
The other solution might be exposing API and introducing a FAR-style
plug-ins mechanism, although they have their own problems and having a
two dozens or more of them installed lead to "overcrowding of the
kitchen". But technically this is as simple as introducing plug-in menu
in addition to the user menu or option to call a plug-in in the user menu.
I would agree with your point that Perl might be a more "politically
correct" candidate due to its very wide appeal to system administrators.
It probably provides the best opportunity to enlarge the community of mc
developers and users. As the success of vim-Perl, myperl and plperl had
shown in VIM, MySQL and Postgress development communities, respectively,
any product that adopts Perl as a scripting language instantly enjoys
some additional share of developers and users.
Guile is essentially "TCL on steroids" or "TCLized Scheme" so, while
like Perl it is capable to separate the core development and extensions
development, the fact that it's Lisp-based means that it is does not has
the appeal of Perl and probably will be *less* appreciated by the
current userbase (outside hard-core Emacs hackers crowd). In this sense
it's equal to S-lang.
Both Perl and Guile are definitely more complex and labor-consuming
undertakings that adopting S-lang, so pro and contra issues need to be
weighted by resources available for any such implementation.
Anyway, the earlier the decision is made and the transition plan
outlined, the easier is to fight feature creep and clean the codebase.
As Emacs demonstrated to the world long ago, a scripting language
provides the natural separation of core functionality and user
extensions. Moreover some non-essential, but man-power hungry features
can be temporary suspended or even removed with the promise to be later
reincarnated in the form of scripts.
If the recent crisis, that you resolved by stepping in, is any
indication about the future, a large pure-C open-source implementation
like mc might not be sustainable due to the level of complexity and
those of them, which cannot not attract enough resources need either to
scale down of face the possibility of extinction. Just because the pool
of really knowledgeable C developers is shrinking and they are in fact
pretty close to becoming an endangered specie. We all like free lunch
but somebody needs to heat it even if the food is free ;-)
That's why making this decision and taking some steps now, when the mc
development is clearly revitalized because of your efforts is, in my
opinion, so important.
Best Regards,
Dr. Nikolai Bezroukov
More information about the mc-devel
mailing list