Hi,

The fact that some of the discussion happens on IRC is partially behind
this. I've discussed this a lot on IRC but not on the mailing list. I
usually get a lot more advice on IRC than on the mailing list, and what
came out of the discussions I had with other community members is that
while they did find the windows-style syntax weird, they did agree that it
makes commands much shorter. The decision of simply dropping the old syntax
was also taken from comments of the people that care about giving me daily
advice on IRC, who said they'd rather move on than always keep the burden.
Many of the people involved in the discussions actually had to rewrite
their scripts as well, but still thought it was a good thing overall. As
for you Jay, since you're a core dev, I've said it many times: it'd be
important that you at least idle on #freerdp to avoid missing discussions
in which you'd like to be involved.

Nevertheless, I had designed a generic parser from the start, thinking that
we could support more than one syntax to please everyone. I wasn't really
expecting everybody to be ok with using only the windows-style syntax, but
with a bit of luck maybe it would have been a change that would have been
accepted almost as is. Wishful thinking, maybe, but I was at least prepare
the make the changes necessarily, it took me less than an hour to get the
alternate syntax in. I know people are really picky about whatever has the
word "interface" in it, and CLI is no exception.

As a start, I knew that the CLI would require a full redesign. We've been
carrying the same options over a long period of time, and most one-letter
options have been taken. I wanted to add a lot of fine-grained options to
accommodate for many cases that would have otherwise required registry
configuration or recompilation, and many of the one-letter options were
either not frequently used, or fairly close to other multi-letter options.
I also wanted to free some of the conflicting one-letter options for other
more frequent use. I could have used an arbitrary basis for the new set of
options, but I chose mstsc. mstsc doesn't have a lot of options so there
aren't many options for which the name is fixed. Becoming mstsc-compatible
was not much of a big deal at this point, and it is something which I care
about, since we can effectively become a drop-in mstsc replacement for
anything invoking mstsc. It also gave a baseline to get started, and
provided the syntax for where to put in the .rdp connection file for which
I had recently added support. Why decide arbitrarily to use different
options? It would have not given use mstsc compatibility for not that much
of a reason, really. With this compatibility, just about any user that has
been using mstsc for a long time and migrates to FreeRDP will not see a
difference.

The idea of using mstsc as a baseline for the options was also inspired
from a project called Remote Desktop Plus:
http://www.donkz.nl/

It doesn't matter if you've used the tool or not, I have actually never
used it myself, but it is basically an improvement on top of mstsc to add
just about any command-line options that a system administrator would wish
to have. I have not used Remote Desktop Plus as a basis, just mstsc, but
the idea that this tool was designed by a system administrator for other
system administrators made it seem like it was not a bad idea. The real
problem with mstsc is its lack of command-line options, not the options it
has. We do not have this problem, and we're free to add just as many
options as we like to fit our needs.

Having the first argument be the optional .rdp configuration file makes it
easier for file association. I wish to have FreeRDP easily installed on
Windows and associated with .rdp files as a replacement to mstsc. The same
can be done on all platforms. This is something I care a lot about along
with .rdp file support.

In the new CLI, I've tried finding names which were short but still
meaningful. Some of the current options will find more meaningful
equivalents before the 1.1 release, especially for commands like /vc or
/dvc. I wish to provide feature-specific options for every channel, since
the user shouldn't have to know about the internal architecture of FreeRDP
in order to invoke it. The user cares about using a microphone, watching
videos and getting sound, but does not care about the fact that this is
done using dynamic virtual channels, and cares even less about remembering
their names.

Many one-letter options were probably chosen as such because they were
short, but their original meaning is hard to guess. One example is -c and
-s. Can you guess what they mean easily unless you've been using them for
years?

  -s: set startup-shell
  -c: shell working directory

    /shell               Alternate shell
    /shell-dir           Shell working directory

One other reason for going with the mstsc CLI as a basis was to be able to
use + and - options, which are really really convenient. However, it
requires that - is not used for regular arguments, if we interpret it as a
minus. If / used instead of - and --, then + and - becomes possible. I
really care about keeping this gain, and I personally use it every day now.
Some other community members on IRC also reported they were using it now,
after passing the mental barrier of "it looks weird".

If you don't like the new syntax, don't want to use +/- and /, then fine,
no problem. The compromise is supporting both syntaxes. Asking me to drop
the advantages of the other syntax, however, is not a "compromise". If I
have to satisfy everyone, then can I at least be satisfied as well in the
process? The syntax you guys like, fine, backwards compatibility, fine, but
don't ask me to drop support for the stuff you personally do not care
about, because others actually do care, and are also in their right here.

All I'm asking is that there is a compromise done on this. I've added
support for the syntax you guys like, I've said I was going to provide
backwards compatibility for the old options as well, but then, why ask me
to drop support for the rest? That's not what I call a "compromise",
especially when I'm the one who's been spending sleepless nights on this.

On Tue, Dec 4, 2012 at 7:35 PM, Jay Sorg <jay.s...@gmail.com> wrote:

> > I know it is lots of work and I don't want to see extra code as well but
> > there is one thing that I don't understand.
> >
> > "And no, dropping support for the Windows-style
> > command-line syntax is not an option"
> >
> > Why? This have not been explained, or i totally missed it.
> > I've read about the nice +feature -feature etc but not really why we need
> > to have the windows options at all.
>
> Yes, Marc, can you explain.  I missed that too.
> It seem like no one wants the windows style.  We should always listen
> to the community.
>
> Jay
>
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Freerdp-devel mailing list
Freerdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to