www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Phango

reply "Janice Caron" <caron800 googlemail.com> writes:
I've started to like Tango, now that I've got bits of it working with Phobos :-)

With a bit of kludging, I've persuaded all of the examples in the
"console" and "text" directories to build with Phobos using DMD 2.007.
Of the examples files, only "properties.d" needed to be tweaked
slightly - and that was just to replace "char[]" with "string".

I think I'll attack the "conduits" folder next.

Anyway, someone tell me - does Tango have containers? If so, are there
any examples of use in the "examples" folder of the Tango download? I
couldn't find any.
Nov 15 2007
next sibling parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote in message 
news:mailman.70.1195164582.2338.digitalmars-d puremagic.com...
 I've started to like Tango, now that I've got bits of it working with 
 Phobos :-)

 With a bit of kludging, I've persuaded all of the examples in the
 "console" and "text" directories to build with Phobos using DMD 2.007.
 Of the examples files, only "properties.d" needed to be tweaked
 slightly - and that was just to replace "char[]" with "string".

 I think I'll attack the "conduits" folder next.

 Anyway, someone tell me - does Tango have containers? If so, are there
 any examples of use in the "examples" folder of the Tango download? I
 couldn't find any.
http://www.dsource.org/projects/tango/docs/current/ is useful indeed. Yes, there are containers, in tango.util.collection.
Nov 15 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/15/07, Jarrett Billingsley <kb3ctd2 yahoo.com> wrote:
 Anyway, someone tell me - does Tango have containers? If so, are there
 any examples of use in the "examples" folder of the Tango download? I
 couldn't find any.
http://www.dsource.org/projects/tango/docs/current/ is useful indeed. Yes, there are containers, in tango.util.collection.
I don't want docs, I want example source code. I want something I can compile, with tests to prove it's all working. Is there not a test-suite handy?
Nov 15 2007
parent reply Frank Benoit <keinfarbton googlemail.com> writes:
 I don't want docs, I want example source code. I want something I can
 compile, with tests to prove it's all working. Is there not a
 test-suite handy?
http://www.dsource.org/projects/tango/wiki/ChapterStorage and all the snippets are here examples/manual/chapterStorage.d
Nov 15 2007
next sibling parent "Janice Caron" <caron800 googlemail.com> writes:
On 11/15/07, Frank Benoit <keinfarbton googlemail.com> wrote:
 and all the snippets are here

 examples/manual/chapterStorage.d
That's what I was looking for! Great! :-) The folder name ("manual") didn't really make it obvious what was in it. Guess I'll attack that one next.
Nov 15 2007
prev sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/15/07, Janice Caron <caron800 googlemail.com> wrote:
 examples/manual/chapterStorage.d
That's what I was looking for! Great! :-) The folder name ("manual") didn't really make it obvious what was in it. Guess I'll attack that one next.
That was easy! Obviously, chapterstorage.d was not written for D2+, so I had to change all the char[]s into strings in that file. Anyway, all I had to do was change char[] into string in the source files, except in toUpper and toLower, and guess what - it compiled without complaint, and runs perfectly. Woo hoo!
Nov 16 2007
parent reply Alexander Panek <alexander.panek brainsware.org> writes:
On Fri, 16 Nov 2007 12:46:24 +0000
"Janice Caron" <caron800 googlemail.com> wrote:

 Obviously, chapterstorage.d was not written for D2+, so I had to
 change all the char[]s into strings in that file.
As you might know already or at least have guessed - since there's an experimental Tango /branch/ for D 2.x -, Tango is D 1.x only, right now. So it'd be pretty weird to write the reference manual of Tango for D 2.x. :) -- Alexander Panek <alexander.panek brainsware.org>
Nov 16 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
I dunno if you'd consider this a bug in tango.io.filepath.parse(), but
the example program filepathname.d looks like this:

    void main(){
        Cout ((new FilePath(r"d:\path\foo.bat")).name).newline;
        Cout ((new FilePath(r"d:\path.two\bar")).name).newline;
        Cout ((new FilePath("/home/user.name/bar.")).name).newline;
        Cout ((new FilePath(r"d:\path.two\bar")).name).newline;
        Cout ((new FilePath("/home/user/.resource")).name).newline;
    }

And (on Windows) emits the following output - at least, on my ported version:

    foo
    bar
    /home/user.name/bar
    bar
    /home/user/

I think I understand what's going on here. The slash in the third and
fifth examples is being (incorrectly) regarded as a component
character, instead of a path separator, so it thinks "/home/user/" is
the file part and "resource" the extension.

Yes, I know there's a flag in the constructor which converts "\" to
"/", and that that flag wasn't set in this example, BUT...

In Windows, "\" and "/" are BOTH acceptable as file separators. As far
as fopen() is concerned, they are interchangable. If you open
"/home/user/.resource" you'll get exactly the same file as had you
opened "\home\user\.resource".

This isn't true in a Windows (Command Prompt) shell, however, even
there, "/" is not a valid character for use in filenames. In fact, all
of the characters \ / : * ? " < > and | are prohibited from being used
in filenames.

I feel that the filepath.parse routine really should understand how
pathnames actually work on Windows. Sure, if the native flag is set,
then convert / to \. But even if that doesn't happen, parse() should
recognise both \ and / as pathname separators, and should throw an
exception if an illegal character is used in a pathname.

If there are no objections, I plan to "fix" this in my local copy, and
I can certainly post the fix for you, in case you should want to
incorporate it into the real Tango.
Nov 16 2007
parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
"Janice Caron" wrote
I dunno if you'd consider this a bug in tango.io.filepath.parse(), but
 the example program filepathname.d looks like this:
 ...
Register at dsource: http://www.dsource.org/forums/profile.php?mode=register File a ticket on tango: http://www.dsource.org/projects/tango/newticket. It's actually a pretty nice system, and the developers are very responsive. -Steve
Nov 16 2007
prev sibling next sibling parent reply "Steven Schveighoffer" <schveiguy yahoo.com> writes:
"Janice Caron" wrote
 I've started to like Tango, now that I've got bits of it working with 
 Phobos :-)

 With a bit of kludging, I've persuaded all of the examples in the
 "console" and "text" directories to build with Phobos using DMD 2.007.
 Of the examples files, only "properties.d" needed to be tweaked
 slightly - and that was just to replace "char[]" with "string".
Just an FYI, some of us are working on a D 2.x compatible version of Tango. Basically the hard part is adding const. It's not release-ready yet, but I'm hoping once Walter has fixed const, we should be able to finish the port. Of course, it does not use Phobos... But hopefully that problem will be solved soon also. -Steve
Nov 15 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/15/07, Steven Schveighoffer <schveiguy yahoo.com> wrote:
 Just an FYI, some of us are working on a D 2.x compatible version of Tango.
Yeah, well that's kind of what I did. I took the source in the "tango" dir (i.e. not the "std" dir, not "object.d"), and then did foreach(example) while(does not compile) fix_first_error()
 Basically the hard part is adding const.
I noticed. I liberally added const and invariant everywhere I could get away with it. It takes some fine tuning to get it right. D strings are invariant now, so I had to throw in some idups in places where I couldn't prove to myself that the original was actually unique. I also changed toUtf to toString, and changed all the module names to lowercase.
 It's not release-ready yet, but I'm hoping once Walter has fixed const, we
 should be able to finish the port.
I'm working with 2.007. I assume it will be not too hard to upgrade.
 Of course, it does not use Phobos...
Mine does. I specifically do not use Tango's object.d, nor anything in Tango's std. I'm importing phobos and my bastardised version of Tango simultaneously. It's actually quite fun.
Nov 15 2007
parent reply Alexander Panek <alexander.panek brainsware.org> writes:
On Thu, 15 Nov 2007 23:09:55 +0000
"Janice Caron" <caron800 googlemail.com> wrote:
 Of course, it does not use Phobos...
Mine does. I specifically do not use Tango's object.d, nor anything in Tango's std. I'm importing phobos and my bastardised version of Tango simultaneously.
Actually, the core of Tango is in tango.core - the std/ folder is just there because DMD requires the intrinsic module to be there, IIRC. Just curious: why don't you use Tango and the freestanding functions of Phobos (AFAIK most of them interface with C, anyways - which can be done in Tango, too, of course)? I suppose that would be less work to achieve the same goal (oh, and btw, you'll have a less buggy runtime.. /me hides.) Kind regards -- Alexander Panek <alexander.panek brainsware.org>
Nov 15 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:
 Actually, the core of Tango is in tango.core
Yeah, I've tweaked my copies of several of files in core already.
 - the std/ folder is just
 there because DMD requires the intrinsic module to be there, IIRC.
I didn't understand that, but hey ho. In any case, the original Phobos std is still there in my case.
 Just curious: why don't you use Tango and the freestanding functions of
 Phobos
Lot of reasons. (1) If an engine ain't broke, don't fix it. (2) I like D2.007, and I'll be switching to D2.008 the day it comes out. (3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos. (4) Walter has been doing this for seven years or whatever, and has earned my greatest respect. Ripping out the innards of D scares the shit out of me - and not only that, I see no reason why I should have to. This way, I get to use the latest cutting-edge version of D, I can make all the module names lowercase (yes, that matters!), and though things like Stdout(x).newline compile and run, I don't have to use them - I'll be able to throw in nicer looking functions that do the same thing.
Nov 16 2007
next sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
I thought we agreed that this should be called "Phandango".  :-)

--bb
Nov 16 2007
parent "Janice Caron" <caron800 googlemail.com> writes:
On 11/16/07, Bill Baxter <dnewsgroup billbaxter.com> wrote:
 I thought we agreed that this should be called "Phandango".  :-)
Well, there isn't really an "it". I was actually getting this working just for me. I wasn't planning on uploading it anywhere because the /real/ Tango is being made Phobos compatible, as I understand it, and we should all just wait for that. Anyone who's impatient could do what I did, I guess, or maybe I could show my source anyway, but I make no claims that it's in any way "official". As for the name, it is the work of /seconds/ to search and replace, and name it anything you want.
Nov 16 2007
prev sibling next sibling parent reply Alexander Panek <alexander.panek brainsware.org> writes:
On Fri, 16 Nov 2007 08:17:42 +0000
"Janice Caron" <caron800 googlemail.com> wrote:

 On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:
 Actually, the core of Tango is in tango.core
Yeah, I've tweaked my copies of several of files in core already.
My apologies - ... tweaked?
 - the std/ folder is just
 there because DMD requires the intrinsic module to be there, IIRC.
I didn't understand that, but hey ho. In any case, the original Phobos std is still there in my case.
As said - you could as well put the Phobos sources into Tango's std folder and *tweak* those.
 Just curious: why don't you use Tango and the freestanding
 functions of Phobos
Lot of reasons. (1) If an engine ain't broke, don't fix it.
I think there are people who definitely wouldn't agree on that. But I am not in the qualified position to argue about that.
 (3) I hate Tango, stylisticly. I hate the mixed case module names, and
 the mixed case global variable names (e.g. Stdout). I want everything
 to look and feel like Phobos.
No comment on that.
 (4) Walter has been doing this for seven years or whatever, and has
 earned my greatest respect. Ripping out the innards of D scares the
 shit out of me - and not only that, I see no reason why I should have
 to.
It scares you? Why?
 This way, I get to use the latest cutting-edge version of D, I can
 make all the module names lowercase (yes, that matters!), and though
 things like Stdout(x).newline compile and run, I don't have to use
 them - I'll be able to throw in nicer looking functions that do the
 same thing.
You know, there's still printf in tango.stdc.stdio ..... just in case. :P -- Alexander Panek <alexander.panek brainsware.org>
Nov 16 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:
 On Fri, 16 Nov 2007 08:17:42 +0000
 "Janice Caron" <caron800 googlemail.com> wrote:

 On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:
 Actually, the core of Tango is in tango.core
Yeah, I've tweaked my copies of several of files in core already.
My apologies - ... tweaked?
Well yeah. As I said at the start of this thread, what I did was: foreach(example) while(does not compile) fix_first_error() So if the compiler tells me that A won't cast to B because of some invariant issue or some-such, then I modified the source in the offending file. If that happened to be tango.core (actually I renamed it phango.core to avoid confusion) then so be it.
 As said - you could as well put the Phobos sources into Tango's std
 folder and *tweak* those.
As I mentioned, I did not copy tango's std folder at all. I am doing without it. I am not interested in messing around with D's standard library (Phobos) in any way. In fact, I sometimes have had to call on its services (e.g. std.contracts.assumeUnique()) to get things to compile.
 It scares you? Why?
Because it might stop something upon which I already rely from working
 You know, there's still printf in tango.stdc.stdio ..... just in
True. But that's not really an issue for what I'm doing. If I can be bothered, I might find a way to add cout.writefln() and stdout.writefln() or whatever, to give me Phobos syntax with Tango's streams. But right now I've still got Phobos's writef() and writefln() functions at my disposal, so I'm perfectly happy. Besides ... printf()? Now there's a function that really should be deprecated!
Nov 16 2007
parent reply Sean Kelly <sean f4.ca> writes:
Janice Caron wrote:
 On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:
 
 As said - you could as well put the Phobos sources into Tango's std
 folder and *tweak* those.
As I mentioned, I did not copy tango's std folder at all. I am doing without it.
So do you have a /std directory at all? I would hope so, or some portions of Tango won't work. The instrinsic functions, for example, must have a mangled name that begins with "std". This is unfortunate, but what can you do. Sean
Nov 16 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/16/07, Sean Kelly <sean f4.ca> wrote:

 As I mentioned, I did not copy tango's std folder at all. I am doing
 without it.
So do you have a /std directory at all?
I have Phobos's std directory. It is completely unchanged and intact. (And obviously it will be updated the moment D2.008 comes along).
 I would hope so, or some
 portions of Tango won't work.
Given that I have (a now modified copy of) the source code, and the power and ability to change it. I can make anything work.
 The instrinsic functions, for example,
 must have a mangled name that begins with "std".
None of the examples I've got working have given me this problem so far, but I'm fair sure that if something doesn't work, I can just change the source until it does.
Nov 16 2007
parent Sean Kelly <sean f4.ca> writes:
Janice Caron wrote:
 On 11/16/07, Sean Kelly <sean f4.ca> wrote:
 
 As I mentioned, I did not copy tango's std folder at all. I am doing
 without it.
So do you have a /std directory at all?
I have Phobos's std directory. It is completely unchanged and intact. (And obviously it will be updated the moment D2.008 comes along).
Oh, that's fine then. The /std directory included with Tango just contains cleaned-up copies of the Phobos files Tango needs. Sean
Nov 16 2007
prev sibling parent reply Sean Kelly <sean f4.ca> writes:
Janice Caron wrote:
 On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:

 Just curious: why don't you use Tango and the freestanding functions of
 Phobos
Lot of reasons. (1) If an engine ain't broke, don't fix it.
Not to plug the Tango engine, but it does actually fix a number of bugs which are listed in the D bug tracker and have not been fixed in Phobos.
 (2) I like D2.007, and I'll be switching to D2.008 the day it comes out.
 
 (3) I hate Tango, stylisticly. I hate the mixed case module names, and
 the mixed case global variable names (e.g. Stdout). I want everything
 to look and feel like Phobos.
I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point. The mixed case module names help make multi-word names more readable and also help distinguish from directories, which is an advantage in such a large library. The C module names have been left lowercase to match the original C names and to provide a visual distinction between the API layer and Tango.
 (4) Walter has been doing this for seven years or whatever, and has
 earned my greatest respect. Ripping out the innards of D scares the
 shit out of me - and not only that, I see no reason why I should have
 to.
For what it's worth, the Tango core is based on Ares, which began as a project perhaps four years ago (I've lost track). So the Tango runtime isn't perhaps quite as new as it may seem.
 This way, I get to use the latest cutting-edge version of D, I can
 make all the module names lowercase (yes, that matters!), and though
 things like Stdout(x).newline compile and run, I don't have to use
 them - I'll be able to throw in nicer looking functions that do the
 same thing.
This is what wrapper functions are for, in my opinion. But then Tango was created because of a dissatisfaction with Phobos, so I can't really object to a dissatisfaction with Tango ;-) Sean
Nov 16 2007
parent reply Walter Bright <newshound1 digitalmars.com> writes:
Sean Kelly wrote:
 Janice Caron wrote:
 (3) I hate Tango, stylisticly. I hate the mixed case module names, and
 the mixed case global variable names (e.g. Stdout). I want everything
 to look and feel like Phobos.
I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).
Nov 18 2007
next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Walter Bright wrote:

 Sean Kelly wrote:
 Janice Caron wrote:
 (3) I hate Tango, stylisticly. I hate the mixed case module names, and
 the mixed case global variable names (e.g. Stdout). I want everything
 to look and feel like Phobos.
I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
parent reply torhu <no spam.invalid> writes:
Lars Ivar Igesund wrote:
  >> Mixed case package/module names are avoided because there needs to be a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
Nov 18 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
torhu wrote:

 Lars Ivar Igesund wrote:
   >> Mixed case package/module names are avoided because there needs to be
   >> a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
Yes, I see his point. My point is that there is no difference from having that as a rule, and CamelCased module names as a rule :) In both cases you need to adhere to it. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
torhu wrote:
 Lars Ivar Igesund wrote:
  >> Mixed case package/module names are avoided because there needs to be a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
There is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bb
Nov 18 2007
next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Bill Baxter wrote:

 torhu wrote:
 Lars Ivar Igesund wrote:
  >> Mixed case package/module names are avoided because there needs to be
  >> a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
There is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bb
Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful. I'd like to turn your argument the other way round: If you do import package.Foo; then it make a lot of sense that you can just use your class Foo. I understand that this may have been uncommon for those coming from C, but I know of several C++ libraries (Object oriented) using header files with capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't always this way, but changed with version 4. OI I think always did this, and it is 15+ years old. Indeed, its top level package is "Inventor"! FWIW, I think SGI and TrollTech is two of very few companies that have created truly good library API's in C++. I could of course also pull in Java and C# as examples, but those are weirdly enough disregarded in this debate. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
next sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Lars Ivar Igesund wrote:
 Bill Baxter wrote:
 
 torhu wrote:
 Lars Ivar Igesund wrote:
  >> Mixed case package/module names are avoided because there needs to be
  >> a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
There is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bb
Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful.
Ok, but then the most obvious name for the renamed import is the last component of the dot-separated module name: import Foo = Package.Name.Too.Long.Foo; ... Foo.Foo Of course you could rename the module lower-case 'foo', but you could also just have named it in lowercase from the beginning. Or you could come up with some other convention. But anyway, I agree that in Tango the package names are so long that static import is impractical. But for other libraries that's not the case, and I think what a lot of people are after here is a convention that's universally applicable. I use static import all the time in my code because Phobos' flatter naming works well with that, and my own code also is usually only 1 or 2 levels deep. But I also use renamed and selective imports too, depending how much stuff I plan to use from the module. [As an aside I really wish I could do renamed and selective importing on one line, like import mod=some.long.module : Foo, Bar; ] Saying "don't use static import" isn't a very strong argument for the Tango naming convention in my opinion.
 I'd like to turn your argument
 the other way round: If you do
 
 import package.Foo;
 
 then it make a lot of sense that you can just use your class Foo. 
If that were the only way to do imports in D, then that would make a lot of sense. But we also have static, renamed, and selective imports and their use should be encouraged. They help keep the top-level namespace clean, and help make code more readable by specifying explicitly where symbols are coming from.
 I
 understand that this may have been uncommon for those coming from C, but I
 know of several C++ libraries (Object oriented) using header files with
 capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't
 always this way, but changed with version 4. OI I think always did this,
 and it is 15+ years old. Indeed, its top level package is "Inventor"!
 FWIW, I think SGI and TrollTech is two of very few companies that have
 created truly good library API's in C++.
The comparison with C++ is not valid because in C++ namespaces and file names are decoupled. So in C++ something like #include<Package/SubPackage/ClassName.h> will generally put the ClassName into the Package::SubPackage namespace. Or sometimes just the Package namespace. I've never seen anyone create a Package::SubPackage::ClassName namespace to enclose a class called ClassName. But in D you don't have a choice. The full path always becomes part of the namespace.
 I could of course also pull in Java and C# as examples, but those are
 weirdly enough disregarded in this debate.
I don't remember enough about how Java imports worked to comment, and I've never touched C#. --bb
Nov 18 2007
parent Lars Ivar Igesund <larsivar igesund.net> writes:
Bill Baxter wrote:

 Lars Ivar Igesund wrote:
 
 Using fully qualified class names are very seldom necessary in D, I find
 using renaming imports are much more useful.
Ok, but then the most obvious name for the renamed import is the last component of the dot-separated module name: import Foo = Package.Name.Too.Long.Foo; ... Foo.Foo Of course you could rename the module lower-case 'foo', but you could also just have named it in lowercase from the beginning. Or you could come up with some other convention. But anyway, I agree that in Tango the package names are so long that static import is impractical. But for other libraries that's not the case, and I think what a lot of people are after here is a convention that's universally applicable. I use static import all the time in my code because Phobos' flatter naming works well with that, and my own code also is usually only 1 or 2 levels deep. But I also use renamed and selective imports too, depending how much stuff I plan to use from the module. [As an aside I really wish I could do renamed and selective importing on one line, like import mod=some.long.module : Foo, Bar; ]
I think it does? At least I think the spec allows it.
 
 Saying "don't use static import" isn't a very strong argument for the
 Tango naming convention in my opinion.
Never liked static imports :P The static keyword is probably part of that :)
 
 I'd like to turn your argument
 the other way round: If you do
 
 import package.Foo;
 
 then it make a lot of sense that you can just use your class Foo.
If that were the only way to do imports in D, then that would make a lot of sense. But we also have static, renamed, and selective imports and their use should be encouraged. They help keep the top-level namespace clean, and help make code more readable by specifying explicitly where symbols are coming from.
 I
 understand that this may have been uncommon for those coming from C, but
 I know of several C++ libraries (Object oriented) using header files with
 capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't
 always this way, but changed with version 4. OI I think always did this,
 and it is 15+ years old. Indeed, its top level package is "Inventor"!
 FWIW, I think SGI and TrollTech is two of very few companies that have
 created truly good library API's in C++.
The comparison with C++ is not valid because in C++ namespaces and file names are decoupled. So in C++ something like #include<Package/SubPackage/ClassName.h> will generally put the ClassName into the Package::SubPackage namespace. Or sometimes just the Package namespace. I've never seen anyone create a Package::SubPackage::ClassName namespace to enclose a class called ClassName. But in D you don't have a choice. The full path always becomes part of the namespace.
 I could of course also pull in Java and C# as examples, but those are
 weirdly enough disregarded in this debate.
I don't remember enough about how Java imports worked to comment, and I've never touched C#.
I'll withdraw C# from the discussion, as I don't know all aspects well enough. Java however requires module names to equal class names, whether they are lowercased or CamelCased. I may agree that such comparisons possibly aren't entirely applicable though, considering modules in D are much more important than in those languages. They are encapsulated entities themselves after all. Which, if used as such, would imply that casing should be the same as for classes and structs. I'll accept this match to end with a remis though, so I can stop posting about this :) -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
prev sibling parent reply Oskar Linde <oskar.lindeREM OVEgmail.com> writes:
It is interesting to see how such a trivial thing as the capitalization 
of module names can lead to a much more involved discussion than any of 
Tango's technical merits ever have (possibly with one exception). It is 
somewhat like making a choice between two equipment manufacturers from 
the colors they use on the buttons. But form and style seems to be of 
undervalued importance, and maybe there is more to this issue than it 
appears. Either way, I cannot refrain from writing something about it 
too. :)

Lars Ivar Igesund wrote:

 Using fully qualified class names are very seldom necessary in D, I find
 using renaming imports are much more useful. I'd like to turn your argument
 the other way round: If you do
 
 import package.Foo;
 
 then it make a lot of sense that you can just use your class Foo. 
What says that the module package.Foo contains a class named Foo? Most of my own modules contain no classes at all, and many that do contain more than one class. I know that (with different qualifiers), that is true for Tango as well. I wouldn't encourage module renaming, at least not without guidelines for how things should be renamed. Lots of people making up their own custom abbreviations for the same long module names can't lead to something good. I am personally quite fond of using FQN (fully qualified names) in certain situations, but names such as tango.util.collection.iterator.InterleavingIterator.InterleavingIterator make that a tad inconvenient. :) Three design choices in Tango seem to be: * deep rather than shallow package hierarchy * descriptive rather than abbreviated package names * highly fragmented modules In some ways, I tend to feel those three points are misdirected, or at least taken a bit too far. What are the reasons for dividing things into modules? First and foremost, functionally independent parts should be separated so that one can be replaced or used independent of the others. Secondly, there are some issues with compile times and object file sizes, and the third reason is convenience for the implementors. The reasons mentioned are in descending order of importance. A library should always be designed for its users, rather than for its implementers. We humans, psychologically, tend not to be very hierarchical in our categorization of the world. There is a basic level of categorization that is the one most readily named and first learned (bird, cat, car). The function of a categorization should be to provide the maximum amount of information with the least amount of cognitive effort. The more fine grained a categorization is, the more cognitive effort is needed. The conclusion is that it would be cognitively advantageous to only separate library entities into different modules if there is a relevant reason to do so (for the purposes at hand). I believe shallow hierarchies generally are better than deep, and also that there should be a functional rather than logical separation between packages. So, instead of: tango.util.collection.iterator.InterleavingIterator couldn't there just be: tango.collection.iterators or perhaps even: tango.collection An interesting parallel is the taxonomy of plants and animals from the 18th century. The Linnaean taxonomy is a highly hierarchical classification, where for instance the common snowdrop is classified as: Plantae.Magnoliophyta.Liliopsida.Asparagales.Amaryllidaceae. Galanthus.nivalis But such names were considered too unwieldy to use in full, so a concise binomial nomenclature was used as a supplement. The same snowdrop as above in binomials is just: Galanthus.nivalis Regarding capitalized module names: As far as I see it, there are entities (functions, classes, etc) and modules (std.string, tango.text.convert.Format). I don't really see the point of making a distinction between modules and packages, and therefore can't really see a point in capitalizing the last part of the module name only. But on the other hand, there is a precedent in the binomials above -- only the other way around. :)
 I could of course also pull in Java and C# as examples, but those are
 weirdly enough disregarded in this debate.
Not so weird for Java at least (I don't know C# well enough to comment). Java (more or less) forces file names to be identical to the sole public class in them. There are no modules in java, just classes, and since classes are capitalized, so are the file names. To end, I think it speaks very highly of Tango that the only issues being actively debated are the purely stylistic ones. -- Oskar
Nov 18 2007
next sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
Oskar Linde wrote:
 To end, I think it speaks very highly of Tango that the only issues 
 being actively debated are the purely stylistic ones.
It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok. However, silence is the worst case <g>. It means nobody has even looked at it.
Nov 19 2007
parent reply "David Wilson" <dw botanicus.net> writes:
On 11/19/07, Walter Bright <newshound1 digitalmars.com> wrote:
 Oskar Linde wrote:
 To end, I think it speaks very highly of Tango that the only issues
 being actively debated are the purely stylistic ones.
It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING
 However, silence is the worst case <g>. It means nobody has even looked
 at it.
Nov 19 2007
parent Walter Bright <newshound1 digitalmars.com> writes:
David Wilson wrote:
 On 11/19/07, Walter Bright <newshound1 digitalmars.com> wrote:
 Oskar Linde wrote:
 To end, I think it speaks very highly of Tango that the only issues
 being actively debated are the purely stylistic ones.
It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING
Spot on.
Nov 19 2007
prev sibling parent Matti Niemenmaa <see_signature for.real.address> writes:
Oskar Linde wrote:
 I believe shallow hierarchies generally are better than deep, and also
 that there should be a functional rather than logical separation between
 packages.
 
 So, instead of:
 
 tango.util.collection.iterator.InterleavingIterator
 
 couldn't there just be:
 
 tango.collection.iterators
 
 or perhaps even:
 
 tango.collection
One problem with shoving all iterators into one module is the way the protection specifiers work in D. As you probably know, private and co are module-level. This means that InterleavingIterator and TropicalJungleIterator, while completely distinct, can access each other's privates! The fact that they are in different modules thus accentuates their independence of each other. If protection specifiers worked as they do in C++ (and, as a matter of fact, in just about every other language I know of that implements such a feature), then a "tango.collection.iterators" package would make more sense. As it is, putting two classes into the same module suggests that they are tightly coupled and, at least to me, that they do access each other's private members. Plus, especially a general-purpose module such as "tango.collection" would grow to thousands of lines in length. This would make it a pain to code in, but there are also issues for the user. For instance, the automatically generated DDoc would also be exceedingly long and would have to manually be separated into coherent parts. I do agree that the "tango.util.collection" package should be just "tango.collection", though. :-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
prev sibling parent reply John Reimer <terminal.node gmail.com> writes:
I actuallBill Baxter wrote:
 torhu wrote:
 Lars Ivar Igesund wrote:
  >> Mixed case package/module names are avoided because there needs to 
 be a
 1:1 correspondence between file names and package/module names, and not
 all file systems are case sensitive (like FAT32 and NTFS, for a couple
 widely used examples).
As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.
There is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name.
I actually think both package.foo.Foo and package.Foo.Foo look bizarre. I've always disliked this part of D. In that light, I think it really is more a shortcoming of the way D does namespaces. Tango just tries to work around this (for good or bad... there's seems little choice in the matter: I believe tango developers and others haggled over this and other issues long and hard in the past: it wasn't an easy decision). I'm not sure what might be a good solution to these problems without "fixing" D. Maybe a more C++ style (horrors!! did I say that?!) would be useful in differentiating module namespace from class? I'm not sure... but that would mean a another D spec change: such as package.foo::Foo as a reference to class Foo (or whatever other symbol one wants to specify) or package.foo:: as an implied reference to whatever symbol has the same name as module name... in this case "foo". If module name "Foo" is capitalized, therefore, the class or symbol with "Foo" would be selected. Just some thoughts, John
Nov 18 2007
parent reply Don Clugston <dac nospam.com.au> writes:
John Reimer wrote:
 
John, it's great to see you back! I feared you were gone forever. - Don.
Nov 20 2007
parent reply John Reimer <terminal.node gmail.com> writes:
Don Clugston wrote:
 John Reimer wrote:

 
 John, it's great to see you back! I feared you were gone forever.
 - Don.
Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, John
Nov 20 2007
parent reply John Reimer <terminal.node gmail.com> writes:
John Reimer wrote:
 Don Clugston wrote:
 John Reimer wrote:

 John, it's great to see you back! I feared you were gone forever.
 - Don.
Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, John
*sigh* Looking over this thread, I am reminded of the major reason that I left in the first place (of course, I was partly responsible for it last time). :-( Human nature is so ugly.
Nov 21 2007
next sibling parent reply Don Clugston <dac nospam.com.au> writes:
John Reimer wrote:
 John Reimer wrote:
 Don Clugston wrote:
 John Reimer wrote:

 John, it's great to see you back! I feared you were gone forever.
 - Don.
Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, John
*sigh* Looking over this thread, I am reminded of the major reason that I left in the first place (of course, I was partly responsible for it last time). :-( Human nature is so ugly.
Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here. -Don.
Nov 21 2007
parent reply Sean Kelly <sean f4.ca> writes:
Don Clugston wrote:
 John Reimer wrote:
 Human nature is so ugly.
Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here.
Yup. John has always been a valuable member of the D community. I was very disappointed to see him leave, though I can understand why one would not want to deal with the drama. Sean
Nov 21 2007
parent "Kris" <foo bar.com> writes:
"Sean Kelly" <sean f4.ca> wrote in message
 Don Clugston wrote:
 John Reimer wrote:
 Human nature is so ugly.
Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here.
Yup. John has always been a valuable member of the D community. I was very disappointed to see him leave, though I can understand why one would not want to deal with the drama.
Yeah, I fully agree. Good to see him back here!
Nov 21 2007
prev sibling parent Sean Kelly <sean f4.ca> writes:
John Reimer wrote:
 
 *sigh*
 
 Looking over this thread, I am reminded of the major reason that I left 
 in the first place (of course, I was partly responsible for it last 
 time). :-(
 
 Human nature is so ugly.
Fortunately, with usenet, not being a part of the discussion is as simple as "mark all read." Sean
Nov 21 2007
prev sibling parent reply Christopher Wright <dhasenan gmail.com> writes:
Walter Bright wrote:
 Sean Kelly wrote:
 Janice Caron wrote:
 (3) I hate Tango, stylisticly. I hate the mixed case module names, and
 the mixed case global variable names (e.g. Stdout). I want everything
 to look and feel like Phobos.
I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).
The only way to solve this is to have the DMD frontend do case-insensitive matching of imports. As it stands, I should be able to say 'import STD.STDIO;' on Windows/ntfs and have it work, but have it fail when using ext3. (I don't have a copy of Windows, so I can't check; and I don't feel like making a case-insensitive fs on my machine right now. I don't think you put in an explicit check for accurate case, since if you typed in a command line 'cd phobos/StD/', Windows might update the case of the folder name.) This would have a minor benefit of allowing people using tango to write 'import tango.io.stdout;', but using a standard convention also works decently. It's just that different projects use different conventions, and I can't use both in my project because of the case insensitive file systems.
Nov 18 2007
parent Matti Niemenmaa <see_signature for.real.address> writes:
Christopher Wright wrote:
 Walter Bright wrote:
 Mixed case package/module names are avoided because there needs to be
 a 1:1 correspondence between file names and package/module names, and
 not all file systems are case sensitive (like FAT32 and NTFS, for a
 couple widely used examples).
The only way to solve this is to have the DMD frontend do case-insensitive matching of imports. As it stands, I should be able to say 'import STD.STDIO;' on Windows/ntfs and have it work, but have it fail when using ext3. (I don't have a copy of Windows, so I can't check; and I don't feel like making a case-insensitive fs on my machine right now. I don't think you put in an explicit check for accurate case, since if you typed in a command line 'cd phobos/StD/', Windows might update the case of the folder name.) This would have a minor benefit of allowing people using tango to write 'import tango.io.stdout;', but using a standard convention also works decently. It's just that different projects use different conventions, and I can't use both in my project because of the case insensitive file systems.
import StD.sTdIo; void main() { writefln("hello world"); } Compiles and runs on Windows. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 18 2007
prev sibling parent Walter Bright <newshound1 digitalmars.com> writes:
Steven Schveighoffer wrote:
 "Janice Caron" wrote
 I've started to like Tango, now that I've got bits of it working with 
 Phobos :-)

 With a bit of kludging, I've persuaded all of the examples in the
 "console" and "text" directories to build with Phobos using DMD 2.007.
 Of the examples files, only "properties.d" needed to be tweaked
 slightly - and that was just to replace "char[]" with "string".
Just an FYI, some of us are working on a D 2.x compatible version of Tango. Basically the hard part is adding const. It's not release-ready yet, but I'm hoping once Walter has fixed const, we should be able to finish the port. Of course, it does not use Phobos... But hopefully that problem will be solved soon also.
The const stuff is changing significantly (for the much better, I hope), so be prepared to do another pass over it if you are adapting it to const. I've found the necessary changes to the source to be simple to do (and they are flagged by the compiler), so it shouldn't be a problem.
Nov 18 2007
prev sibling parent reply Jason House <jason.james.house gmail.com> writes:
Janice Caron Wrote:

 I've started to like Tango, now that I've got bits of it working with Phobos
:-)
This reminds me... Walter and the Tango team agreed to make their libraries compatible with each other. Along those lines, what's the plans/status of that? I suspect there may even be different plans/status for D 1.x and D 2.x.
Nov 16 2007
parent reply Sean Kelly <sean f4.ca> writes:
Jason House wrote:
 Janice Caron Wrote:
 
 I've started to like Tango, now that I've got bits of it working with Phobos
:-)
This reminds me... Walter and the Tango team agreed to make their libraries compatible with each other. Along those lines, what's the plans/status of that? I suspect there may even be different plans/status for D 1.x and D 2.x.
D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change much, if at all. D 2.0 is obviously still in flux, and Phobos 2.0 has already incorporated some of Tango's changes. It is uncertain what the final result of the merge will be for D 2.0, but from a code perspective it is more likely that Phobos 2.0 will end up effectively using the Tango runtime than vice-versa. This is because everyone seems to agree that the Tango runtime is a bit more robust. Sean
Nov 16 2007
parent reply Jason House <jason.james.house gmail.com> writes:
Sean Kelly Wrote:
 D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change 
 much, if at all.  D 2.0 is obviously still in flux, and Phobos 2.0 has 
 already incorporated some of Tango's changes.  It is uncertain what the 
 final result of the merge will be for D 2.0, but from a code perspective 
 it is more likely that Phobos 2.0 will end up effectively using the 
 Tango runtime than vice-versa.  This is because everyone seems to agree 
 that the Tango runtime is a bit more robust.
I translate that to mean that the merge of Tango and Phobos relies on the Phobos developers to do the work. Is Phobos being actively matured? My previous impression is that Walter was doing both that and compiler internals... with most time dedicated to the latter. Is there a timeline when 2.0 versions of phobos and tango will be compatible? How will the pieces be partitioned? Will tango be released with new dmd versions? Will both libraries adopt the same style (naming conventions, capitalization, etc...)?
 
 
 Sean
Nov 16 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/16/07, Jason House <jason.james.house gmail.com> wrote:
 Will both libraries adopt the same style (naming conventions, capitalization,
etc...)?
I surely hope so. ++myVote
Nov 16 2007
parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Janice Caron wrote:

 On 11/16/07, Jason House <jason.james.house gmail.com> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style? -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 17 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase. Tango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase. I kid you not - if Tango used "normal" case conventions, it would have a lot more adherents. In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.) Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.
Nov 17 2007
next sibling parent reply Sean Kelly <sean f4.ca> writes:
Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
 I kid you not - if Tango used "normal" case conventions, it would have
 a lot more adherents.
This seems a bit extreme. The only variables I can think of in Tango are Stdin, Stdout, and Stderr. And these could easily be aliased to something else if the user finds the names offensive.
 In any case, I am currently crafting my own personally bastardised
 version of Tango. I've already got a significant fraction of it
 compiling under D2.007 (including Phobos), and yes I renamed all the
 module names to lowercase. And I'll probably make "Stdout" merely an
 alias for "stdout" too (etc.)
You may run into conflicts with the C file handle of the same name.
 Seriously - Tango's stylistic issues are a big turn-off. Tango
 folk,when you complete your integration with Phobos, please, please
 fix them.
Please suggest an alternate formatting style and explain why it is better. Sean
Nov 17 2007
next sibling parent reply Derek Parnell <derek psych.ward> writes:
On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:

 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists. -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Nov 17 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
Derek Parnell wrote:

 On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:
 
 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists.
When one thinks the file system is case insensitive, it is easy creating files that breaks the compile on a system where the FS is case sensitive, so IMO not a very strong argument. It can be equally useful to have the creators aware of the casing used. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 17 2007
prev sibling parent reply "Kris" <foo bar.com> writes:
Hiya Derek,

It's probably worth pointing out that millions of Java developers don't have 
the issue you note? I mean, if it were an issue, we'd surely have heard 
about it years ago?

- Kris


"Derek Parnell" <derek psych.ward> wrote in message 
news:x2bmtq679an5$.1sopa9nv1qrgk$.dlg 40tude.net...
 On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:

 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists. -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Nov 17 2007
parent Walter Bright <newshound1 digitalmars.com> writes:
Kris wrote:
 Hiya Derek,
 
 It's probably worth pointing out that millions of Java developers don't have 
 the issue you note? I mean, if it were an issue, we'd surely have heard 
 about it years ago?
The compiler will distinguish modules Foo and foo as being different, but the filesystem won't. Does it cause problems? See http://mindprod.com/jgloss/casesensitive.html Evidently it does come up as an issue: http://gcc.gnu.org/ml/java/2002-03/msg00334.html As for me, I've routinely ported code between filesystems that had all kinds of varying support for case. What works best is naming files with all lower case - then things port smoothly without problems. Why have potential problems when they are so easily avoided? A further reason is that having case conventions for different kinds of symbols aids in reading the code (and even catching errors). Having module names use a different form than class names, for example, just helps. Not a whole lot, but why not take it? And in the end, the Tango team can use whatever conventions they want to.
Nov 18 2007
prev sibling parent reply renoX <renosky free.fr> writes:
Sean Kelly a écrit :
 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoX
 I kid you not - if Tango used "normal" case conventions, it would have
 a lot more adherents.
This seems a bit extreme. The only variables I can think of in Tango are Stdin, Stdout, and Stderr. And these could easily be aliased to something else if the user finds the names offensive.
 In any case, I am currently crafting my own personally bastardised
 version of Tango. I've already got a significant fraction of it
 compiling under D2.007 (including Phobos), and yes I renamed all the
 module names to lowercase. And I'll probably make "Stdout" merely an
 alias for "stdout" too (etc.)
You may run into conflicts with the C file handle of the same name.
 Seriously - Tango's stylistic issues are a big turn-off. Tango
 folk,when you complete your integration with Phobos, please, please
 fix them.
Please suggest an alternate formatting style and explain why it is better. Sean
Nov 17 2007
next sibling parent Sean Kelly <sean f4.ca> writes:
renoX wrote:
 Sean Kelly a écrit :
 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos.
What if that convention proves insufficient for a library that is much larger than Phobos? Sean
Nov 17 2007
prev sibling next sibling parent reply "Kris" <foo bar.com> writes:
"renoX" <renosky free.fr> wrote in message 
news:fhnr42$1ego$1 digitalmars.com...

 Easy: when in Romes do like Romans i.e. coherency beats 'invent your own 
 style' any time of the day, otherwise big projects looks ugly.

 So Tango should really follow convention used by Walter in Phobos.

 Not following this simple rule looks 'amateurish' from Tango's guys, sorry 
 for the harsh word but that's my view.
No problem, renoX, but there's at least two strawmen in your post. Maybe three: 1) "big projects look ugly" -- unsustained nonsense :) 2) "convention used by Walter" -- phobos is a mix of all kinds of non-cohesive design and implementation. So much for convention :) 3) "amatuerish" because of a minor variation in style? Digging for mountainous molehills, my friend :) Further, there a vague implication that Tango is somehow non-coherent, and that we 'invented' our own style of using camelCase for global variables and module names. LOL! Well, we didn't invent anything new. Those idioms have been used very successfully by millions of programmers for decades. This is great! No offence taken, RenoX, and none intended toward you ... but you might as well say that "D sucks goat turds" because it changes how C programmers view the world. Yeah, I know people don't like change, but seriously. If you truly feel the use of CamelCase in global vars is just too distressing, please, see a doctor. Such things are /really/ not worth getting upset about, or bitching and moaning about. To quote yourself: "sorry for the harsh words, but that's my view" - Kris
Nov 17 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "renoX" <renosky free.fr> wrote in message 
 news:fhnr42$1ego$1 digitalmars.com...
 
 Easy: when in Romes do like Romans i.e. coherency beats 'invent your own 
 style' any time of the day, otherwise big projects looks ugly.

 So Tango should really follow convention used by Walter in Phobos.

 Not following this simple rule looks 'amateurish' from Tango's guys, sorry 
 for the harsh word but that's my view.
No problem, renoX, but there's at least two strawmen in your post. Maybe three: 1) "big projects look ugly" -- unsustained nonsense :) 2) "convention used by Walter" -- phobos is a mix of all kinds of non-cohesive design and implementation. So much for convention :) 3) "amatuerish" because of a minor variation in style? Digging for mountainous molehills, my friend :) Further, there a vague implication that Tango is somehow non-coherent, and that we 'invented' our own style of using camelCase for global variables and module names. LOL! Well, we didn't invent anything new. Those idioms have been used very successfully by millions of programmers for decades. This is great! No offence taken, RenoX, and none intended toward you ... but you might as well say that "D sucks goat turds" because it changes how C programmers view the world. Yeah, I know people don't like change, but seriously. If you truly feel the use of CamelCase in global vars is just too distressing, please, see a doctor. Such things are /really/ not worth getting upset about, or bitching and moaning about. To quote yourself: "sorry for the harsh words, but that's my view" - Kris
All I'm going to say to respond to that is that you have done a very good job of showing that you are much less mature than RenoX. A...
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_
 wrote in message you are much less mature than RenoX.
Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_
 wrote in message you are much less mature than RenoX.
Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
Wow ... I really have no idea of what you're talking about Alix. Honestly, I 
really don't. There is no strange red mist or anything else. Instead it is 
quite simple:

You want something different from what other people want. That cannot be 
accomodated.

- Kris


"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
news:fhqee1$2sps$1 digitalmars.com...
 Kris wrote:
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_
 wrote in message you are much less mature than RenoX.
Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 Wow ... I really have no idea of what you're talking about Alix. Honestly, I 
 really don't. There is no strange red mist or anything else. Instead it is 
 quite simple:
 
 You want something different from what other people want. That cannot be 
 accomodated.
 
 - Kris
 
 
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
 news:fhqee1$2sps$1 digitalmars.com...
 Kris wrote:
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_
 wrote in message you are much less mature than RenoX.
Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...
Nope, tat is not what I want at all... A...
Nov 18 2007
parent "Kris" <foo bar.com> writes:
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>

 Nope, tat is not what I want at all...
Then, it not yet clear what it is that you want. I suggest you start a completely separate thread, or hook up on IRC where the conversation badwidth is a lot higher than here? - Kris
Nov 18 2007
prev sibling parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
renoX wrote:
 Sean Kelly a écrit :
 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoX
I agree, I don't know where it started, but I got used to the convention that IdentifiersLikeThis were classes onesLikeThis were instances and OTHERS_LIKE_THIS constants, leaveing alllowercase for modules/namespaces/short-term-variables. In an OO lang, its nice to look at an identifier and be able to consistently know if its a class or an instance or a module. I want "InitailUpper.foo()" to always be a call to a static method of a class and not be confused with the disambiguation of a funcion within a module. That initial capital shouts out to me to declare "I am a class", and in Tango, its not always the case. While you may be able to argue that modules are more important than classes, the link to the file system where rules over case may differ from those of the language, for me, take precidence, and wherever I have that issue, I resort to all lower-case. This is because it has been shown in experiments to be easier to read than all caps. Tango's wild departure from myown naming style is one of the reasons that I was not an early adopter. A...
Nov 18 2007
next sibling parent Sean Kelly <sean f4.ca> writes:
Alix Pexton wrote:
 Tango's wild departure from myown naming style is one of the reasons 
 that I was not an early adopter.
Tango's naming convention isn't consistent with my own style either, but I didn't find it terribly difficult to get used to. Sean
Nov 18 2007
prev sibling parent "Kris" <foo bar.com> writes:
Alix;

You're certainly welcome to your opinion, just as we all are. There are many 
who disagree with you, and there's no way to resolve that dillema as I've 
already said.




"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
news:fhp7v1$ff8$1 digitalmars.com...
 renoX wrote:
 Sean Kelly a écrit :
 Janice Caron wrote:
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.
What is your objection to CamelCase module names?
Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoX
I agree, I don't know where it started, but I got used to the convention that IdentifiersLikeThis were classes onesLikeThis were instances and OTHERS_LIKE_THIS constants, leaveing alllowercase for modules/namespaces/short-term-variables. In an OO lang, its nice to look at an identifier and be able to consistently know if its a class or an instance or a module. I want "InitailUpper.foo()" to always be a call to a static method of a class and not be confused with the disambiguation of a funcion within a module. That initial capital shouts out to me to declare "I am a class", and in Tango, its not always the case. While you may be able to argue that modules are more important than classes, the link to the file system where rules over case may differ from those of the language, for me, take precidence, and wherever I have that issue, I resort to all lower-case. This is because it has been shown in experiments to be easier to read than all caps. Tango's wild departure from myown naming style is one of the reasons that I was not an early adopter. A...
Nov 18 2007
prev sibling next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
Janice Caron wrote:

 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase.
Well, there are many using this style because W says/said it's standard. That doesn't really mean it's the norm, neither that it is better than any other style.
 Tango is just plain weird in giving variables names like "Stdout".
 That's just perverse. Just because it's a global variable doesn't mean
 you can go all titlecase.
Are you sure you understand the meaning of the word weird?
 
 I kid you not - if Tango used "normal" case conventions, it would have
 a lot more adherents.
Wow, you certainly know a lot.
 
 In any case, I am currently crafting my own personally bastardised
 version of Tango. I've already got a significant fraction of it
 compiling under D2.007 (including Phobos), and yes I renamed all the
 module names to lowercase. And I'll probably make "Stdout" merely an
 alias for "stdout" too (etc.)
I am truly impressed at the effort you put into this.
 
 Seriously - Tango's stylistic issues are a big turn-off. Tango
 folk,when you complete your integration with Phobos, please, please
 fix them.
Tango have very few stylistic issues, all of which should be gone pretty soon. Have a feeling those aren't the ones you mean though... Phobos have a few as it isn't entirely consistent with itself. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 17 2007
prev sibling next sibling parent "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote in message

 Oh I don't think so. Walter is quite clear that module names should be
 lowercase, and I agree with him. And (apart from Tango) I think it is
 "the norm" to name classes in titlecase and variables in lowercase.
 Tango is just plain weird in giving variables names like "Stdout".
 That's just perverse. Just because it's a global variable doesn't mean
 you can go all titlecase.
knew you'd find a way to dredge this up again :) We've already discussed this Janice, and your position was shown to be somewhat more than dubious at that time. That hasn't changed, so it comes down purely to your 'personal' taste. You don't /have/ to use Tango if you find the use of distinguishing characters to be so bitterly offensive. Really, you don't. You swore it off before, and yet here you are ranting about this again. I don't get the issue. It's nothing but a storm in a teacup. Shrug And please, don't start again with the "it says in the D doc that ..." because we've already been there. Done that. Over. Finito. Or maybe you didn't read the responses the last time around? :) Still, thanks for your interest in Tango all the same. I'm really glad that you find the functionality worthwhile to be spending your time converting it. Best; - Kris
Nov 17 2007
prev sibling parent reply phango <phango phangowant.com> writes:
i love that - please release it to us all!
can't wait to get it for all the reasons you put forth.


Janice Caron Wrote:

 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Will both libraries adopt the same style (naming conventions,
 capitalization, etc...)?
I surely hope so. ++myVote
You understand that that would mean Phobos gaining Tango's style?
Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase. Tango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase. I kid you not - if Tango used "normal" case conventions, it would have a lot more adherents. In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.) Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.
Nov 17 2007
parent reply "Kris" <foo bar.com> writes:
There's a fair chance the poster below is actually Janice, but just in case 
there really is someone voicing an honest opinion there, read on ...

What many people fail to realize is that software doesn't survive without 
nurture. In fact, when you forcibly freeze software, it tends to die quite 
quickly (this is what happened to Simula, for those who follow language 
history, and it's somewhat relevant here since Simula is perhaps the closest 
relative to D).

The take-home message is that Tango will continue to develop, grow, improve, 
mature, in a non-static fashion. If anyone wants to chase that with a 
redundant copy, that's their folly. Making a copy of Tango functionality is 
only inviting more work for yourselves, and generating out-of-date 
functionality for others to operate with. Isn't that obvious?

The recommendation is this: if you'd like something changed within Tango, 
then request it. We can't always please everyone, but we do manage to make a 
lot of people happy with the (often real-time) changes we do make. Having 
said that, requesting sweeping stylistic changes, based purely upon personal 
preference, is likely to conflict with the personal preference of others. 
It's very hard to resolve such a dilemma, as I'm sure everyone can 
understand.

- Kris


"phango" <phango phangowant.com> wrote in message 
news:fhnplh$1cs3$1 digitalmars.com...
i love that - please release it to us all!
 can't wait to get it for all the reasons you put forth.
Nov 17 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
Janice Caron wrote:

 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 17 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Janice Caron wrote:

 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.
Kris made a false accusation. That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice. Kris accused me of making a post in another name, in support my actual posts. That, I did not do, and I resent the implication. That accusation is several orders magnitude worse than an criticisism of variable naming conventions, and it stinks. Kris, That wasn't me. Deal with it. And I hope you have the decency to retract the accuasion and apologise.
Nov 17 2007
next sibling parent "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote in message 
news:mailman.98.1195344174.2338.digitalmars-d puremagic.com...
 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Janice Caron wrote:

 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.
Kris made a false accusation.
Nonsense. I made an interesting parapraxes in conjuction with a speculation :)
 That was unwarranted. You can't go
 around accusing people of things they didn't do. That is outrageous.
 Worse, it's injustice.
Melodramatic, yet perhaps true, Janice. But wait! I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?
 Kris, That wasn't me. Deal with it.
Have nothing to "deal" with, Janice. This entire thread seems to be just more of the personal ranting we heard in the past.
 And I hope you have the decency to retract
Already posted
Nov 17 2007
prev sibling parent Bruce Adams <tortoise_74 yeah.who.co.uk> writes:
Janice Caron Wrote:

 On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:
 Janice Caron wrote:

 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.
Kris made a false accusation. That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice. Kris accused me of making a post in another name, in support my actual posts. That, I did not do, and I resent the implication. That accusation is several orders magnitude worse than an criticisism of variable naming conventions, and it stinks. Kris, That wasn't me. Deal with it. And I hope you have the decency to retract the accuasion and apologise.
Are you sure you aren't jumping the gun. I read Kris's post as meaning you'd be the next person to reply, which funnily enough you were. You're quite prolific you know.
Nov 17 2007
prev sibling parent James Dennett <jdennett acm.org> writes:
Lars Ivar Igesund wrote:
 Janice Caron wrote:
 
 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.
There's an interesting issue here. There are two ways of viewing discussions. In one, people *do* distinguish between personal attacks and attacks on viewpoints; in the other, they do not. When those of either school encounter those of the other school, things tend to go badly. It's often a problem here on d.D. -- James
Dec 12 2007
prev sibling next sibling parent reply "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote in message
 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Dash it all. This is what I meant to write: "There's a fair chance the poster below is actually trolling, but just in case there really is someone voicing an honest opinion there, read on ..." But somehow it came out as: "There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ..." Honest mistake, Janice. Really. When it comes to this topic perhaps you've made some kind of impression? I don't know how to explain it otherwise, except perhaps for senility on my part. Anyway, I suspect you'd agree that the rest of it is what's important ...
Nov 17 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Kris <foo bar.com> wrote:
 Dash it all. This is what I meant to write:
Phew! OK, I'm happy now. :-) Thanks for clearing things up.
Nov 17 2007
parent reply "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote
 On 11/18/07, Kris <foo bar.com> wrote:
 Dash it all. This is what I meant to write:
Phew! OK, I'm happy now. :-) Thanks for clearing things up.
Sure, no problem. Now, perhaps you will address the questions asked previously? I'll list them here for your convenience:
 Seriously - Tango's stylistic issues are a big turn-off. Tango
 folk,when you complete your integration with Phobos, please, please
 fix them.
Please suggest an alternate formatting style and explain why it is better.
 So Tango should really follow convention used by Walter in Phobos.
What if that convention proves insufficient for a library that is much larger than Phobos?
 Kris made a false accusation.
 That was unwarranted. You can't go
 around accusing people of things they didn't do. That is outrageous.
 Worse, it's injustice.
Melodramatic, yet perhaps true, Janice. But wait! I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?
Nov 18 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Kris <foo bar.com> wrote:
 Please suggest an alternate formatting style and explain why it is better.
Module name components: likethis Class names: LikeThis Variable names: likeThis; Constants: LIKETHIS or LIKE_THIS Consistency makes code easier to understand and maintain.
 What if that convention proves insufficient for a library that is much
 larger than Phobos?
How can it be? You'd need an infinitely large library before you ran out of identifier names.
 But wait! I recall not so long ago
 you accused people involved with Tango as being "amateurs", or something
 like that.
Consider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever. All I can think of is I might have said that something or other seems amateurish. But even then, I also say that about some movie plots, but still think they're great movies. You may be reading too much into it.
Nov 18 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote

 Consider the possibility that you may have misunderstood? Alas, I
 don't recall the quote you mention, but I'm sure that if you drag up
 exactly what I said word for word, I can either clarify the quote or
 change my mind or whatever.
LOL -- it was the last time you were being shrill about this very topic Janice, and you were perfectly clear at the time. I won't bother to dredge up your post, since you can do that yourself. However, it's vaguely amusing to see your hypocracy is without bounds :)
Nov 18 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Kris <foo bar.com> wrote:
 LOL -- it was the last time you were being shrill about this very topic
shrill - adj - said of a voice, sound, etc: high-pitched and piercing. verb (shrilled, shrilling) to utter in such a high-pitched manner. shrilly adverb. shrillness noun. ETYMOLOGY: 14c: from German schrell. Excuse me!?
 I won't bother to dredge
 up your post, since you can do that yourself.
I'm also capable of just speaking in words, and saying what I think, which is that Tango is a truly excellent body of work with some fantastic code in it. Perhaps you don't want to hear that?
 However, it's vaguely amusing
 to see your hypocracy is without bounds :)
Again, excuse me? Any chance you could just scale down the discourtesy a tad?
Nov 18 2007
parent reply Regan Heath <regan netmail.co.nz> writes:
Janice Caron wrote:
 On 11/18/07, Kris <foo bar.com> wrote:
 However, it's vaguely amusing
 to see your hypocracy is without bounds :)
Again, excuse me? Any chance you could just scale down the discourtesy a tad?
Don't hold your breath. Many a poster has been in your shoes, myself included. Heck, Alix is in the same position right now. No doubt I'll get some of the same treatment shortly, I just wanted to let you know you're not alone. Kris, I wish you wouldn't take comments about Tango quite so personally, Sean and Lars are in the same boat and you don't see them responding with personal attacks. It's quite sad really because despite this you have a number of quite admirable qualities which I respect you for, but damn it if you don't make that hard sometimes. Anyway, for what it's worth you can chalk my name up on the list of people who haven't adopted Tango due to it's style, naming conventions included. Granted it's not the main reason, that being that I don't have a large enough project to need the many wonderful features Tango has. If I did I could probably get past the stlye of Tango if I needed to, I am a pragmatist at heart once I quell the perfectionist. As for a suggestion of naming and style, I like the one Janice posted: Module name components: likethis Class names: LikeThis Variable names: likeThis; Constants: LIKETHIS or LIKE_THIS Regan /dons flame retardant suit and leaves the building.
Nov 19 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"Regan Heath" <regan netmail.co.nz> wrote in message

 Heck, Alix is in the same position right now.
He is? I don't recall saying anything particularly negative to Alix. Tried to get him onto IRC instead, which he ultimately did (thank-you Alix) and we had a long and essentially productive discussion. It's quite unlike this environment, because you /have/ to interact with people instead of perhaps crouching behind a keyboard as some appear to do.
  No doubt I'll get some of the same treatment shortly
Why Regan? If you were ranting about how Tango cannot be used because of some minor stylistic conventions, while advocated forking the library because of that, and at the same time had been happily discrediting the team (this is the second thread on this topic) .... well, you'd probably get some pushback also, Regan. You and I have been down that road, but we can still see eye-to-eye. I'm very happy to say. If this were a serious topic, then by all means let's talk seriously about stylistic changes. That might be a worthy reason to discuss the Tango style elements, and there might be something pertinent to debate or consider. But this thread? It's hard to pick out anything of value Regan. There's just too much misinformation and stylistic preference. I'd rather just get on and listen carefully to the people who are willing to post tickets or discuss things rationally. There's plenty of people who use tango and would prefer it had some different style here and there. Yet, they don't decry the package, or the people responsible. They post tickets, based upon real world use-cases. We make changes. These people are not the armchair quarterback types -- they make requests based upon their real experience with Tango. We make changes. Lot's of changes. We have to focus our limited energy somewhere, so that's where it is focused. When there are tangible concerns about Tango in this newsgroup, then they will warrant serious attention. That's not to dismiss out of hand the concerns a few people have, but we find the interactivity of the IRC channels to be far more conducive to progress than the misconduct shown throughout this thread (and the prior related one). I understand that may not be how you see things, and that's cool. There's also a thread called "Tango Development" that I'd like to hear your input on, if you'd be so kind?
Nov 19 2007
parent Regan Heath <regan netmail.co.nz> writes:
Kris wrote:
 "Regan Heath" <regan netmail.co.nz> wrote in message
 
 Heck, Alix is in the same position right now.
He is? I don't recall saying anything particularly negative to Alix.
My apologies then, I must have confused replies somewhere along the way.
  No doubt I'll get some of the same treatment shortly
Why Regan?
Must be the cynic in me, I try to keep him locked up but sometimes he escapes. In any case I am glad to be mistaken. <snip many good points>
 I understand that may not be how you see things, and that's cool. There's 
 also a thread called "Tango Development" that I'd like to hear your input 
 on, if you'd be so kind? 
To be honest I don't have a heck of a lot to say on the subject. Due to how little I use Tango (and therefore it's style) I don't feel qualified to pass judgement. All I can say at this stage is what I have already said, the style initially put me off, perhaps for the reasons Sean gave when he said: "I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background." in other words, it might just be my background. Regan
Nov 19 2007
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Regan Heath wrote:
 Janice Caron wrote:
 On 11/18/07, Kris <foo bar.com> wrote:
 However, it's vaguely amusing
 to see your hypocracy is without bounds :)
Again, excuse me? Any chance you could just scale down the discourtesy a tad?
Don't hold your breath. Many a poster has been in your shoes, myself included. Heck, Alix is in the same position right now. No doubt I'll get some of the same treatment shortly, I just wanted to let you know you're not alone. Kris, I wish you wouldn't take comments about Tango quite so personally, Sean and Lars are in the same boat and you don't see them responding with personal attacks. It's quite sad really because despite this you have a number of quite admirable qualities which I respect you for, but damn it if you don't make that hard sometimes. Anyway, for what it's worth you can chalk my name up on the list of people who haven't adopted Tango due to it's style, naming conventions included. Granted it's not the main reason, that being that I don't have a large enough project to need the many wonderful features Tango has. If I did I could probably get past the stlye of Tango if I needed to, I am a pragmatist at heart once I quell the perfectionist. As for a suggestion of naming and style, I like the one Janice posted: Module name components: likethis
What about the pen island module problem? Underscores? Do you have any comments to add to the pro column for 'likethis' over in the Module naming conventions thread? Or rebuttals to those in the pro column for LikeThis?
 Class names: LikeThis
 Variable names: likeThis;
 Constants: LIKETHIS or LIKE_THIS
 
 Regan /dons flame retardant suit and leaves the building.
Wait! Come back! You haven't answered my questions! :-) --bb
Nov 19 2007
parent Regan Heath <regan netmail.co.nz> writes:
Bill Baxter wrote:
 Regan Heath wrote:
 As for a suggestion of naming and style, I like the one Janice posted:

 Module name components: likethis
What about the pen island module problem? Underscores? Do you have any comments to add to the pro column for 'likethis' over in the Module naming conventions thread? Or rebuttals to those in the pro column for LikeThis?
I don't really like underscores either. Is the "pen island" problem really a problem? How often does that happen? I think the number of modules causes/increases the likelyhood. Sean made a good post describing the pro's/con's of having a large number of modules: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=61853 A weakness in the linker may have been a factor in some of the decisions and I wonder whether they would change if the weakness was fixed? Then I think, regardless of the number of modules and what you call them I'm still going to need searchable documentation to find the class/method/feature I want at any given time. So, while descriptive naming of modules etc may help a little they don't mean all that much to me. At the end of the day a decision has to be made and it won't make everyone happy (as both Sean and Kris have said a few times). Given that and provided there isn't an obvious flaw the system used I would simply get used to it. Regan
Nov 19 2007
prev sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
Janice Caron wrote:
 Consider the possibility that you may have misunderstood? Alas, I
 don't recall the quote you mention, but I'm sure that if you drag up
 exactly what I said word for word, I can either clarify the quote or
 change my mind or whatever.
 
 All I can think of is I might have said that something or other seems
 amateurish. But even then, I also say that about some movie plots, but
 still think they're great movies. You may be reading too much into it.
For the record, what you said was in this posting: http://www.digitalmars.com/d/archives/digitalmars/D/Re_D_Conference_Tango_Phobos_58225.html#N58577 "Module names in mixed case!? Did the Tango folk not read the D style guide where it says "Module and package names are all lower case, and only contain the characters [a..z][0..9][_]", or did they just purposefully decide to avoid it? If the former, that was amateurish; if the latter, it was petty." [...] "My apologies if I come across as contentious. I realise I'm a newbie in this group. But that is the first impression I get from looking at the Tango docs. I just ask myself over and over again, "Why did they do that?" (...which should be regarded as a rhetorical question which really means "I wish they hadn't done that")." But you guys already had this discussion in September. Can you stop trading barbs and agree that you both got overly personal? -Jeff
Nov 18 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Jeff Nowakowski <jeff dilacero.org> wrote:
 For the record, what you said was in this posting:

 http://www.digitalmars.com/d/archives/digitalmars/D/Re_D_Conference_Tango_Phobos_58225.html#N58577

 "Module names in mixed case!? Did the Tango folk not read the D style
 guide where it says "Module and package names are all lower case, and
 only contain the characters [a..z][0..9][_]", or did they just
 purposefully decide to avoid it? If the former, that was amateurish;
 if the latter, it was petty."
Ooh thank you. Well, that clarifies it. So yes, the core body of code in Tango is excellent. The engine that does all the work is a fantastic bit of software, and not in the least bit amateurish. So you'll notice that in the quote quoted above, the condition in the if statement is false, so in fact it's the else branch that runs. My statement boiled down to the opinion that the /decision/ to ignore the style guide was petty. Note that the criticism was of the decision, not the people making it. And actually, I do that to deliberately go against the style guide was somewhat petty. It's a rival product, after all.
 "My apologies if I come across as contentious. I realise I'm a newbie
 in this group. But that is the first impression I get from looking at
 the Tango docs.
Thanks also for including that bit. Yes we only talking about a first impression here anyway. But I understand now that weren't looking for first impressions.
 Can you stop
 trading barbs and agree that you both got overly personal?
I think it's more that words were /taken/ personally when they were not intended as such. I know that I have never criticised any individual, and never would. I have only ever talked about software, and design decisions. I have too much respect for individuals ever to use "barbs".
Nov 18 2007
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
Janice Caron wrote:
 I think it's more that words were /taken/ personally when they were
 not intended as such.
The problem is you presented your argument as either they did something amateurish or petty, without first asking if they had deeper reasons. It's clear from the responses they that had valid reasons that involved neither being petty nor amateurish, even if their decision can be debated. So I think if you changed your tone you could have had a much more civil and productive discussion. Even now you claim they are being petty with a rival product. There's a big distinction between "this way is better" and "let's be incompatible because we don't like the other guy". By the way, the charge that one of the posts following yours was a sock puppet was legitimate. It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion. If you think it's valid to point out motives as amateur or petty, then it should be equally valid to point out possible sock-puppetry. Maybe not so helpful in either case? -Jeff
Nov 18 2007
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
By the way, that Jeff fellow is absolutely BRILLIANT and INSIGHTFUL with 
PIERCING observations of HUMAN NATURE.  Better pay attention to 
everything he says, because the man is a CERTIFIED GENIUS!!!  Here's 
some more brilliance from the Mind of Jeff...whenever a sock puppet 
posts something favorable to an individual, THAT INDIVIDUAL IS THE SOCK 
PUPPET!!  ALWAYS!!!!  Yes, this means that I REALLY AM JEFF 
NOWAKOWSKI!!!  Hahahahah!!!  Fooled you suckas!!!!  Boo-rah!


Jeff Nowakowski wrote:
 By the way, the charge that one of the posts following yours was a sock
 puppet was legitimate.  It was the first thing that crossed my mind.
 Doesn't mean you did it, but it's a valid suspicion.  If you think it's
 valid to point out motives as amateur or petty, then it should be
 equally valid to point out possible sock-puppetry.  Maybe not so helpful
 in either case?
Nov 18 2007
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
The below forgery was posted by David B. Held.  I must say I'm very 
surprised by this childish behavior.  To address David's point, I said 
there was cause for suspicion, not that there were any kind of certainties.

Congratulations David B. Held on reaching new lows.

-Jeff

Jeff Nowakowski wrote:
 By the way, that Jeff fellow is absolutely BRILLIANT and INSIGHTFUL with 
 PIERCING observations of HUMAN NATURE.  Better pay attention to 
 everything he says, because the man is a CERTIFIED GENIUS!!!  Here's 
 some more brilliance from the Mind of Jeff...whenever a sock puppet 
 posts something favorable to an individual, THAT INDIVIDUAL IS THE SOCK 
 PUPPET!!  ALWAYS!!!!  Yes, this means that I REALLY AM JEFF 
 NOWAKOWSKI!!!  Hahahahah!!!  Fooled you suckas!!!!  Boo-rah!
 
 
 Jeff Nowakowski wrote:
  >
  > By the way, the charge that one of the posts following yours was a sock
  > puppet was legitimate.  It was the first thing that crossed my mind.
  > Doesn't mean you did it, but it's a valid suspicion.  If you think it's
  > valid to point out motives as amateur or petty, then it should be
  > equally valid to point out possible sock-puppetry.  Maybe not so helpful
  > in either case?
Nov 18 2007
parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Jeff Nowakowski wrote:
 The below forgery was posted by David B. Held.  I must say I'm very 
 surprised by this childish behavior.  To address David's point, I said 
 there was cause for suspicion, not that there were any kind of certainties.
 
 Congratulations David B. Held on reaching new lows.
I had a lot of help from my friends who led the way. Obviously, I'm not as sophisticated as them...still, I hope I made my point. BTW, Obama made the same mistake when he accused Hillary of spreading the whispering campaign against him. Maybe she did, or maybe it was Republicans. In any event, it's dangerous to assume, or even suspect when anonymity is at play. For instance, I find it just as plausible that *you* are the "sock puppet" and set up the entire subthread as a basis to make false accusations. Is that "cause for suspicion"? Dave
Nov 19 2007
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
David B. Held wrote:
 I had a lot of help from my friends who led the way.  Obviously, I'm not 
 as sophisticated as them...still, I hope I made my point.
What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else? "Reputations take a very long time to build, but are quite easily destroyed, and often by oneself"
 In any event, it's dangerous to assume, or even suspect 
 when anonymity is at play.  For instance, I find it just as plausible 
 that *you* are the "sock puppet" and set up the entire subthread as a 
 basis to make false accusations.  Is that "cause for suspicion"?
I've already discussed the issue in numerous times. I never endorsed any public accusation of sock puppetry -- quite the opposite. I'll only add here that *everything* is a matter of uncertainty. It's only a question of how much evidence you have. This entire newsgroup could be the fabrication of one person. Not very likely though. -Jeff
Nov 20 2007
next sibling parent reply Regan Heath <regan netmail.co.nz> writes:
Jeff Nowakowski wrote:
 David B. Held wrote:
 I've already discussed the issue in numerous times.  I never endorsed 
 any public accusation of sock puppetry -- quite the opposite.  
Your use of the word "charge" in this sentence: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Gave me the impression you endorsed the accusation (charge), which prompted my response and probably David's actions as well. Regan
Nov 20 2007
parent Jeff Nowakowski <jeff dilacero.org> writes:
Regan Heath wrote:
 
 Your use of the word "charge" in this sentence:
 
 "By the way, the charge that one of the posts following yours was a sock 
 puppet was legitimate."
 
 Gave me the impression you endorsed the accusation (charge), which 
 prompted my response and probably David's actions as well.
Ok, I can see how that can be misconstrued, but I tried to make it clear in the rest of the paragraph that I did not support the accusation. In particular, the last sentence: "It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion. If you think it's valid to point out motives as amateur or petty, then it should be equally valid to point out possible sock-puppetry. Maybe not so helpful in either case?" -Jeff
Nov 20 2007
prev sibling parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Jeff Nowakowski wrote:
 David B. Held wrote:
 I had a lot of help from my friends who led the way.  Obviously, I'm 
 not as sophisticated as them...still, I hope I made my point.
What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else?
Yes, to make a point, I was willing to do that. And if you weren't sophisticated enough to discover the real author for yourself, I was prepared to out myself. I was putting you in Janice's shoes, so you could try walking a mile in them. You only lasted about 5 minutes, so I fear the point was lost on you.
 "Reputations take a very long time to build, but are quite easily 
 destroyed, and often by oneself"
In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community. I've always been too loose with my tongue to be a respected expert like Andrei or Walter; but on the other hand, it gives me the freedom to say whatever I think is necessary, no matter how unpopular.
 [...]
 I've already discussed the issue in numerous times.  I never endorsed 
 any public accusation of sock puppetry -- quite the opposite.  I'll only 
 add here that *everything* is a matter of uncertainty.  It's only a 
 question of how much evidence you have.  This entire newsgroup could be 
 the fabrication of one person.  Not very likely though.
Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be. Then, you followed up with: "It was the first thing that crossed my mind." Here, you say: "And I tend to agree with the accuser." How do I draw that conclusion? Well, it's simple. The first thing that crossed *my* mind was: "Someone is playing a dirty trick on Janice, and then exploiting it." Which means that if you had a different first impression, it must have been because you had already decided that Janice was guilty until proven innocent. But you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion." And here, you make the weakest equivocation possible, with the way you followed up with a confirmation of your original claim: "Accusing Janice of making sock puppets is 'valid'. I declare so by fiat." Umm...you pretty much say: "I declare open season on Janice! Anyone who wants to accuse her of sock puppetry, lock & load your .30-06 and put on yer huntin' gear!" If you look at what the "sock puppet" said: "i love that - please release it to us all! can't wait to get it for all the reasons you put forth." and: "yup - i'd do that too" it seems just as likely, *if not more so*, that "Phango" was being sarcastic and mocking Janice, in just the same way that I was with you. Who in their right mind thinks we are gullible enough to buy the endorsement of an anonymous poster with the fake domain name "phangowant.com". I mean, seriously! The very idea that someone would sit down and say to themselves: "Oooh...I got a good idea...I'll post something flattering about myself via an anonymous alias...what email address should I make up? A real-sounding name? Nah, too obvious. Oh, oh, I know! Nobody will suspect a thing if I use the domain name 'phangowant.com'!!! Yes!!! It's a PERFECT PLAN!!!" Clearly the email address "phango phangowant.com" is transparent sarcasm. It's insult enough to Janice *all by itself*. What makes your attack particularly heinous is that this was not enough for you. You had to twist the blade the other way by *accusing Janice of the being the perpetrator of an anonymous attack on her*! You want to talk about low?!? *That's* what I say is low, and what justified pulling a little prank to make a dramatic point. The fact that I have to spell all this out is, frankly, quite tiresome and a little disturbing. I think Janice was treated particularly poorly by someone without the balls to use their real identity, and then others who happened to disagree with her smelled blood in the water and went in for the kill. If I have to make a fool of myself to point this out, so be it. I can live with that. But don't try to gloss over what you pretty clearly said by equivocating with your weasel words. You have no moral high ground here, despite the little escape route you think you made for yourself. It's about as legit as me saying: "I accuse Jeff of being a big fat nincompoop!!!...possibly. But there is some room for doubt, so don't get mad at me. Oh, and I don't endorse anyone calling Jeff a nincompoop, so that makes what I said before OK. This ad paid for by the committee to re-elect David B. Held. Hi, I'm David B. Held and I endorse this message...to the extent that it cannot be 'misconstrued' to mean something personally embarrassing." Umm...yeah. I'm not going to offer any apologies, because I don't care if people think I'm a jerk (and I fairly doubt that's a new sentiment, anyhow). But I do think Janice still deserves one more... Dave
Nov 20 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"David B. Held" <dheld codelogicconsulting.com> wrote in ...
 Jeff Nowakowski wrote:
 David B. Held wrote:
 I had a lot of help from my friends who led the way.  Obviously, I'm not 
 as sophisticated as them...still, I hope I made my point.
What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else?
Yes, to make a point, I was willing to do that. And if you weren't sophisticated enough to discover the real author for yourself, I was prepared to out myself. I was putting you in Janice's shoes, so you could try walking a mile in them. You only lasted about 5 minutes, so I fear the point was lost on you.
 "Reputations take a very long time to build, but are quite easily 
 destroyed, and often by oneself"
In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community. I've always been too loose with my tongue to be a respected expert like Andrei or Walter; but on the other hand, it gives me the freedom to say whatever I think is necessary, no matter how unpopular.
 [...]
 I've already discussed the issue in numerous times.  I never endorsed any 
 public accusation of sock puppetry -- quite the opposite.  I'll only add 
 here that *everything* is a matter of uncertainty.  It's only a question 
 of how much evidence you have.  This entire newsgroup could be the 
 fabrication of one person.  Not very likely though.
Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be. Then, you followed up with: "It was the first thing that crossed my mind." Here, you say: "And I tend to agree with the accuser." How do I draw that conclusion? Well, it's simple. The first thing that crossed *my* mind was: "Someone is playing a dirty trick on Janice, and then exploiting it." Which means that if you had a different first impression, it must have been because you had already decided that Janice was guilty until proven innocent. But you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion." And here, you make the weakest equivocation possible, with the way you followed up with a confirmation of your original claim: "Accusing Janice of making sock puppets is 'valid'. I declare so by fiat." Umm...you pretty much say: "I declare open season on Janice! Anyone who wants to accuse her of sock puppetry, lock & load your .30-06 and put on yer huntin' gear!" If you look at what the "sock puppet" said: "i love that - please release it to us all! can't wait to get it for all the reasons you put forth." and: "yup - i'd do that too" it seems just as likely, *if not more so*, that "Phango" was being sarcastic and mocking Janice, in just the same way that I was with you. Who in their right mind thinks we are gullible enough to buy the endorsement of an anonymous poster with the fake domain name "phangowant.com". I mean, seriously! The very idea that someone would sit down and say to themselves: "Oooh...I got a good idea...I'll post something flattering about myself via an anonymous alias...what email address should I make up? A real-sounding name? Nah, too obvious. Oh, oh, I know! Nobody will suspect a thing if I use the domain name 'phangowant.com'!!! Yes!!! It's a PERFECT PLAN!!!" Clearly the email address "phango phangowant.com" is transparent sarcasm. It's insult enough to Janice *all by itself*. What makes your attack particularly heinous is that this was not enough for you. You had to twist the blade the other way by *accusing Janice of the being the perpetrator of an anonymous attack on her*! You want to talk about low?!? *That's* what I say is low, and what justified pulling a little prank to make a dramatic point. The fact that I have to spell all this out is, frankly, quite tiresome and a little disturbing. I think Janice was treated particularly poorly by someone without the balls to use their real identity, and then others who happened to disagree with her smelled blood in the water and went in for the kill. If I have to make a fool of myself to point this out, so be it. I can live with that. But don't try to gloss over what you pretty clearly said by equivocating with your weasel words. You have no moral high ground here, despite the little escape route you think you made for yourself. It's about as legit as me saying: "I accuse Jeff of being a big fat nincompoop!!!...possibly. But there is some room for doubt, so don't get mad at me. Oh, and I don't endorse anyone calling Jeff a nincompoop, so that makes what I said before OK. This ad paid for by the committee to re-elect David B. Held. Hi, I'm David B. Held and I endorse this message...to the extent that it cannot be 'misconstrued' to mean something personally embarrassing." Umm...yeah. I'm not going to offer any apologies, because I don't care if people think I'm a jerk (and I fairly doubt that's a new sentiment, anyhow). But I do think Janice still deserves one more... Dave
Excellent! I don't spend much time on this ng anymore, but recently it's been because someone or other has been generating or perpetrating inaccurate information about Tango, or has been deriding the library and/or authors over some questionable issue. Some of that has reached the dubious level of fud-mongering. You may well disagree, yet that's my opinion of it. Knowing nothing of value about a particular subject will never stop certain people from mouthing off about it, but when they do so over Tango, I'll have something to say. Yes, I'm personally tired of hearing that Tango is somehow 'amateurish' or 'petty' or whatever the other terms have been, since that reflects upon all the people involved (and there are many). Not to mention that the code and design itself is generally of exceptional quality and clarity -- notably more so than a number of well-known libraries. So, like you, I don't give a rats-ass if my "reputation" is somehow sullied, burned or lost over my responses to posts that are "loaded" in this manner -- "reputations" are the folly of political poseurs and ego-centric fools. Far better to be judged by one's work instead, and there's lots of that in Tango, by many people. I suggest those naysayers or armchair-quarterbacks with a disposition to rant might perhaps use Tango for a while, and ask us or tell us about it in a manner that we can presumably respond appropriately to (IRC and tickets). Of course, some people just want to vent and have no intent to ask for help at all. I recall one recent ranter who adamantly refused to write a ticket for Tango, or discuss it with us on IRC, and nor did they even try to or even want to use the library. In that particular instance, there wasn't /even/ a tangible problem. The instructions go like this: Open packet. Sprinkle fud-crystals into five gallon bucket of water, mix well and disperse liberally. As for this weird thing with the sock-puppet, I admit to being entirely bemused until you owned up to it. Then I wondered if that might be a double-blind post, but the one above does appear to be you. FWIW, it seems sad that anyone would attempt to manipulate or subvert the ng like that ... is it /really/ that important? You call that a 'prank', while I have to wonder if such behavior isn't grounded in malevolence instead. Trolling is bad enough, but what you claim to have done is surely several steps below? Yet, here you are chewing out Jeff N over some token semantic distinction. I don't get it. That does seem a bit hypocritical doesn't it? Why don't you have a go at me instead? Or, did you perhaps think JeffN was me? Also, I will admit that I have wondered why you made that analogy between Boost and Tango, since your message appeared to be saying "Hey, the Tango guys say Yo! Put up or Shutup!" which really couldn't be further from the truth. Heck, there's even a long recent thread on toString vs toUtf8 in this regard. As I pointed out in a reply to your post, Tango is changing in order to have some measure of compatibility with phobos (which you no doubt know of) and, as a library, it was never intended to be compatible in the first place. This aspect was clearly noted in the text immediately above your post, so you could hardly miss that either. Both these aspects would tend to render the specific analogy worthless. Yet, you didn't bother to respond to my query, in order to clarify whether the message you were sending could be misconstrued. Thus, your post could be seen as something of a sly strawman, with mucho negativity directed towards Tango. I sure hope it wasn't intended as such, but now that I'm seeing this weird sock-puppet thing ...... heck, I sure /hope/ that was not the case? To be clear: I'm not trying to take pot-shots at you, Dave. I'm just a bit concerned by these two things you're responsible for, and specifically because they are both related to Tango. Can you help me understand them better?
Nov 21 2007
next sibling parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Kris wrote:
 [...]
 As for this weird thing with the sock-puppet, I admit to being entirely 
 bemused until you owned up to it. Then I wondered if that might be a 
 double-blind post, but the one above does appear to be you. FWIW, it seems 
 sad that anyone would attempt to manipulate or subvert the ng like that ... 
 is it /really/ that important? You call that a 'prank', while I have to 
 wonder if such behavior isn't grounded in malevolence instead. Trolling is 
 bad enough, but what you claim to have done is surely several steps below? 
 Yet, here you are chewing out Jeff N over some token semantic distinction. I 
 don't get it. That does seem a bit hypocritical doesn't it? Why don't you 
 have a go at me instead? Or, did you perhaps think JeffN was me?
Well, the double-standard here is quite amusing. Both of you accused someone else of deception and trickery when the most obvious reading of the "sock puppetry" does not lead to that conclusion. On the contrary, the puppeteer was most likely insulting Janice as well, which means that you two were feigning stupidity, adding insult to injury, and then making light of it by dismissing your claims as "speculation". Well, obviously, you haven't been a victim of such tricks yet, so it is easy for you to blame the victim (which is what you did, let's not mince words). However, I notice that once Jeff was a victim, he had a wholly different reaction to the situation and did not sit around waiting for someone to accuse *him* of sock puppetry (even though that would be just as silly as both of your accusations). In fact, Jeff highlighted with his strong words just how serious an offense it is, and now you, though not being a victim, are merely emphasizing Jeff's point: being the victim of an anonymous attack really sucks, in the way that a hit-n-run sucks...you can't even strike back at your attacker. How is it that an *anonymous* person can attack a member of the community, and you have the right to *accuse the victim of being the attacker*, but as soon as you have a suspect in sight, it's *obviously wrong to accuse the victim*. *That*, my friend, is a double-standard. Was it "malevolent" to demonstrate this point? No more so than it was for you two to blame the victim, which is an all-to-common sociological reaction to crimes in which the suspects have gotten away scot-free. The reason I targeted Jeff and not you is because you at least had the decency to retract your accusation after Janice protested innocence, but Jeff was not so forgiving, despite having not enough evidence to convict a squirrel of burying nuts. I have participated in enough electronic social media to know that false-flag operations are the dirtiest tricks of the game. It *really* sucks to be a victim; and thus, accusing the victim of being the perpetrator is what I consider to be particularly "malevolent". Since you seem to not have the taste of being a victim yet, I can still pull out my sock puppet; and this time I'll be clever enough to post through the web interface...then I'll lay an old blame-the-victim trick on you and let you decide which is more malevolent...blaming the victim or exposing the hypocrisy of doing so.
 Also, I will admit that I have wondered why you made that analogy between 
 Boost and Tango, since your message appeared to be saying "Hey, the Tango 
 guys say Yo! Put up or Shutup!" which really couldn't be further from the 
 truth. Heck, there's even a long recent thread on toString vs toUtf8 in this 
 regard.
Obviously, Tango is written by more than one developer, not all of whom express the same attitude towards commentary on the library. The difference is in challenging critics vs. justifying your design decisions to critics. Good library authors can disarm their critics with a good explanation of the design decisions, while authors outside of that set don't feel that justification is necessary, because they are the ones who put their hard work into it. Not all criticism is justified, and some of it is simply bad, but the way it's responded to makes all the difference in the world. It reminds me of the interviewing process at work. Some candidates simply refuse to answer simple coding questions, because it is "beneath them". Well, maybe it is, but that's all the more reason to give a quick answer rather than rejecting the question on principle. Without any answer at all, it's impossible to tell whether the question really is beneath the candidate, or they are just stalling because they can't answer it. When a critic says: "You should change X", you can say: "No, you're wrong. That's a matter of taste and I can't please everybody" or you can say: "The reason I chose X was because given the alternatives, it gave us the most flexibility as library authors. Here is what I mean..." Maybe "You should change X" is a stupid criticism that isn't worth your time to respond to. Or maybe it's not. If you have a justification at the ready, it makes you look all the more knowledgeable than protesting artistic license. If you present the attitude that the criticism is worthless, then other users begin to wonder whether X was actually designed or was merely an accident. My point is not that Tango is bad (though perhaps your self-congratulation on it is a bit generous). I haven't seen enough of Tango to say whether it is or not, and the parts I have seen seemed reasonable to me. My point is that some of Tangos authors are more diplomatic than others; and whether you feel that is fair or not (to have to suffer fools, from your perspective), the reputation of Tango as a piece of work is affected by the attitudes of its contributors (the point I was trying to make, as delicately as possible). On the other hand, I don't have any user-visible contributions to D, so I'm not jeopardizing anything (the man who has nothing to lose is the most dangerous of all). I happen to think that Sean Kelly is a good ambassador of Tango, and if everything I knew about Tango came from things he said, I would be predisposed to think it's a pretty darned good library. I suspect a lot of other folks might say the same thing.
 As I pointed out in a reply to your post, Tango is changing in order 
 to have some measure of compatibility with phobos (which you no doubt know 
 of) and, as a library, it was never intended to be compatible in the first 
 place.
 [...]
That's not the point. The point is that it was clearly designed to be a standard library, or it would not have defined things like Object.d. So the whole "never intended to be Phobos-compatible" claim ignores the fact that users of Tango are necessarily going to expect a feature set similar to Phobos, if for no other reason than that Phobos is the official standard library. So whether that was an original design intent or not, the Tango developers would have had to be extremely short-sighted to not consider that such compatibility issues would eventually arise. I would like to give you that much credit, anyway. If Tango merely offered an alternative implementation to Phobos' features, then your claim would have merit (like OpenGL is an alternative to DirectX). But the fact that Tango offers a significantly *disjoint but overlapping* feature set from Phobos makes it inevitable that users would want to eat their cake and have it too (in the way that both Qt and OpenGL allow you to draw on the display, and thus both feature graphics primitives, but one is clearly more than an alternative to the other). Boost overlaps with but is disjoint from the Standard Library in that it offers smart pointers, binders, and numerics. It could easily have said: "Well, Boost wasn't designed to be compatible with the Standard Libray, so if you want to mix shared_ptr<> with auto_ptr<>, you're SOL." That would have been just as reasonable as Tango taking that position. But if you look at the interface of shared_ptr<>, you'll see that it accepts a std::auto_ptr<>. You're not telling me that the design of Tango wasn't forward-looking, are you? After all, as you say, Tango is now changing to *become* compatible with Phobos... Dave
Nov 23 2007
parent reply "Kris" <foo bar.com> writes:
"David B. Held" <dheld codelogicconsulting.com> wrote in message 
news:fi87no$8h4$1 digitalmars.com...
 Kris wrote:
 [...]
 As for this weird thing with the sock-puppet, I admit to being entirely 
 bemused until you owned up to it. Then I wondered if that might be a 
 double-blind post, but the one above does appear to be you. FWIW, it 
 seems sad that anyone would attempt to manipulate or subvert the ng like 
 that ... is it /really/ that important? You call that a 'prank', while I 
 have to wonder if such behavior isn't grounded in malevolence instead. 
 Trolling is bad enough, but what you claim to have done is surely several 
 steps below? Yet, here you are chewing out Jeff N over some token 
 semantic distinction. I don't get it. That does seem a bit hypocritical 
 doesn't it? Why don't you have a go at me instead? Or, did you perhaps 
 think JeffN was me?
Well, the double-standard here is quite amusing. Both of you accused someone else of deception and trickery when the most obvious reading of the "sock puppetry" does not lead to that conclusion.
Which obvious reading? Can you be more specific about that?
 On the contrary, the puppeteer was most likely insulting Janice as well, 
 which means that you two were feigning stupidity, adding insult to injury, 
 and then making light of it by dismissing your claims as "speculation". 
 Well,
You say "most likely", and then draw an extensive conclusion from that. I didn't read the post in the manner you have suggested at all, so can happily and honestly disagree with your "assertions" in full.
 obviously, you haven't been a victim of such tricks yet, so it is easy for 
 you to blame the victim (which is what you did, let's not mince
Victim? Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave? The only way you could be /so/ sure is if you'd posted it yourself. Right? Let me ask you: Did you make that post, David? Be honest about it.
 words).  However, I notice that once Jeff was a victim, he had a wholly 
 different reaction to the situation and did not sit around waiting for 
 someone to accuse *him* of sock puppetry (even though that would be just 
 as silly as both of your accusations).  In fact, Jeff highlighted with his 
 strong words just how serious an offense it is, and now you, though not 
 being a victim, are merely emphasizing Jeff's point: being the victim of 
 an anonymous attack really sucks, in the way that a hit-n-run sucks...you 
 can't even strike back at your attacker.  How is it that an
Again, the only way you could be so sure is if you'd posted it yourself. Did you make that post, David? If you didn't, then your assertions are surely limited in extent and perhaps entirely baseless? If you did post as "wantphango" or whatever, then simply own up to it.
 *anonymous* person can attack a member of the community, and you have the 
 right to *accuse the victim of being the attacker*, but as soon as you 
 have a suspect in sight, it's *obviously wrong to accuse the victim*. 
 *That*, my friend, is a double-standard.
I really have no idea of what you're trying to say here. Sorry :)
 Was it "malevolent" to demonstrate this point?  No more so than it was for 
 you two to blame the victim, which is an all-to-common sociological 
 reaction to crimes in which the suspects have gotten away scot-free.
You're still discussing a 'victim', and it's not even clear of what. Are you saying that the troll post was somehow 'attacking' Janice? If so, how? I'd like to understand that aspect.
 The reason I targeted Jeff and not you is because you at least had the 
 decency to retract your accusation after Janice protested innocence, but 
 Jeff was not so forgiving, despite having not enough evidence to convict a 
 squirrel of burying nuts.  I have participated in enough electronic social 
 media to know that false-flag operations are the dirtiest tricks of the 
 game.  It *really* sucks to be a victim; and thus, accusing the victim of 
 being the perpetrator is what I consider to be particularly
Faceless conclusions based upon your own interprestions? You're projecting shared opinion and knowledge here (with yourself), which is certainly groundless. And again, how can you be so positive about this?
 "malevolent".  Since you seem to not have the taste of being a victim
 yet, I can still pull out my sock puppet; and this time I'll be clever 
 enough to post through the web interface...then I'll lay an old 
 blame-the-victim trick on you and let you decide which is more 
 malevolent...blaming the victim or exposing the hypocrisy of doing so.
I see. So, you intend to run around posting under false names with the intend to cause some kind of malevolent damage within the NG? That really doesn't seem appropriate, but if it happens we can all point to this post and have a good idea of who is behind the scenes.
 Also, I will admit that I have wondered why you made that analogy between 
 Boost and Tango, since your message appeared to be saying "Hey, the Tango 
 guys say Yo! Put up or Shutup!" which really couldn't be further from the 
 truth. Heck, there's even a long recent thread on toString vs toUtf8 in 
 this regard.
Good library authors can disarm their critics with a good explanation of the design decisions, while authors outside of that set don't feel that justification is necessary, because they are the ones who put their hard work into it.
The connotation here is that perhaps those who do not "disarm their critics" are not "good library authors". Thus, since you're implying elsewhere that Tango has at least some such people, then the library itself is somehow not "good". It's a silly, groundless, and vague accusation. Seems a bit like fud, actually. You don't say anything about trolls either :)
 Not all criticism is justified, and some of it is simply bad, but the way 
 it's responded to makes all the difference in the world.
You're using the term 'criticism' as though we don't deal with it every single day. Perhaps you should hang out on IRC sometimes, and watch carefully how criticism is most often responded to ... the vast majority of such criticism results in a change to the codebase. There are exceptions to that rule, but that's generally how criticism is responded to. Go and look through the tickets also. Heck, log onto IRC and just ask - you couldn't ask for a faster way of getting a reality check :)
 It reminds me of the interviewing process at work.  Some candidates simply 
 refuse to answer simple coding questions, because it is "beneath them". 
 Well, maybe it is, but that's all the more reason to give a quick answer 
 rather than rejecting the question on principle.  Without any answer at 
 all, it's impossible to tell whether the question really is beneath the 
 candidate, or they are just stalling because they can't answer it.
That is indeed silly and, thankfully, I've never met such a person though I've interviewed hundreds. Do you refuse to answer code questions?
 When a critic says: "You should change X", you can say: "No, you're wrong. 
 That's a matter of taste and I can't please everybody" or you can say: 
 "The reason I chose X was because given the alternatives, it gave us the 
 most flexibility as library authors.  Here is what I mean..."  Maybe "You 
 should change X" is a stupid criticism that isn't worth your time to 
 respond to.  Or maybe it's not.  If you have a justification at the ready, 
 it makes you look all the more knowledgeable than protesting artistic 
 license.  If you present the attitude that the criticism is worthless, 
 then other users begin to wonder whether X was actually designed or was 
 merely an accident.
Not all good engineers are good politicians. I imagine few good politicians make good engineers. That's the truth, and it's just fine.
 My point is not that Tango is bad (though perhaps your self-congratulation 
 on it is a bit generous).  I haven't seen enough of Tango to say whether 
 it is or not, and the parts I have seen seemed reasonable to me.  My point 
 is that some of Tangos authors are more diplomatic than others; and 
 whether you feel that is fair or not (to have to suffer fools, from your 
 perspective), the reputation of Tango as a piece of work is affected by 
 the attitudes of its contributors (the point I was trying to make, as 
 delicately as possible).  On the other hand, I don't have any user-visible 
 contributions to D, so I'm not jeopardizing anything (the man who has 
 nothing to lose is the most
Tango does not rest upon all of us being diplomats (at all, or all the time), so let's stop pretending it matters nearly as much as you've been trying to make out.
 dangerous of all).  I happen to think that Sean Kelly is a good ambassador 
 of Tango, and if everything I knew about Tango came from things he said, I 
 would be predisposed to think it's a pretty darned good library.  I 
 suspect a lot of other folks might say the same thing.
Indeed, and good for Sean. Having people with different skill-sets is often crucial to the success of any project.
 As I pointed out in a reply to your post, Tango is changing in order to 
 have some measure of compatibility with phobos (which you no doubt know 
 of) and, as a library, it was never intended to be compatible in the 
 first place.
 [...]
That's not the point. The point is that it was clearly designed to be a standard library, or it would not have defined things like Object.d. So the whole "never intended to be Phobos-compatible" claim ignores the fact that users of Tango are necessarily going to expect a feature set similar to Phobos, if for no other reason than that Phobos is the official standard library. So whether that was an original design
Actually, it most certainly is the point, Dave. And it's not a "claim" (as you say) about "phobos compatability" -- it is a cold hard fact instead. Even if a handful of features *are* similar, the organization is entirely different, and is thus wholly incompatible at the package level. That decision, along with many others, was a concious and fully intentional one. Other details aside, we needed to scale the library beyond the stage where you can simply dump everything into one folder and call it good.
 intent or not, the Tango developers would have had to be extremely 
 short-sighted to not consider that such compatibility issues would 
 eventually arise.  I would like to give you that much credit, anyway.
Please don't. We considered a slew of options and eventually decided that we'd have to be incompatible in a variety of ways in order to make the library operate the way we wanted it to. Again, there was no intent to be compatible, since it was not feasible to do so while at the same time meet the goals we had set. That was a choice we made. You can contuinue denying that all you like, but it really makes no difference whatsoever :)
 If Tango merely offered an alternative implementation to Phobos' features, 
 then your claim would have merit (like OpenGL is an alternative to 
 DirectX).  But the fact that Tango offers a significantly *disjoint but 
 overlapping* feature set from Phobos makes it inevitable that users would 
 want to eat their cake and have it too (in the way that both Qt and OpenGL 
 allow you to draw on the display, and thus both feature graphics 
 primitives, but one is clearly more than an alternative to the other).
Again, Tango very quickly gave up on all notion of full phobos compatability in the early stages.
 Boost overlaps with but is disjoint from the Standard Library in that it 
 offers smart pointers, binders, and numerics.  It could easily have said: 
 "Well, Boost wasn't designed to be compatible with the Standard Libray, so 
 if you want to mix shared_ptr<> with auto_ptr<>, you're SOL." That would 
 have been just as reasonable as Tango taking that position. But if you 
 look at the interface of shared_ptr<>, you'll see that it accepts a 
 std::auto_ptr<>.  You're not telling me that the design of Tango wasn't 
 forward-looking, are you?  After all, as you say, Tango is now changing to 
 *become* compatible with Phobos...
We're changing some trivial things to be compatible at the runtime layer. Things like toString() and so on. The upper layers, like I/O are incompatible, as is the structure of the library itself and the package layout. In fact, the phobos runtime is changing to look like Tango, since there is currently an effort under way to use the Tango runtime instead of the existing phobos one. Thus, as I already said, phobos is changing to look like Tango. You apparently cut that bit out of my post, because it blows huge holes in your entirely inaccurate analogy :) Specifically related to Tango, your analogy is based on entirely false assertions. I suspect you don't know much about the library, or the history behind it? If you did, then you'd understand how irrellevant the commentary really is. That's to be expected, but I'm surprised at just how many "concrete" conclusions you're managing to draw from thin air. I'd encourage you to use Tango and draw conclusions based on some solid experience instead? I'm sure people would be happy to answer any of those you may have once you dig deeper. In the end it comes down to a simple (reapeated) notion: we made an early decision not to conform with phobos in a manner that could be considered compatible. Phobos had frozen in time, and patches sent for the library lay languishing somewhere for months and even years. There was little point in sacrificing better approaches because of that, and we knew it. Those were difficult choices, but we made them and moved on. If you want to ignore that and draw your conclusions anyway, you are welcome to do so. Read the history, as I've suggested, and you'll perhaps get a better feel for how far off your analogy has actually been? - Kris p.s. Just out of interest, have you written or designed a library on a scale similar to Tango?
Nov 23 2007
next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/24/07, Kris <foo bar.com> wrote:
 Surely you're making a rather grand assumption that the person you
 call the 'victim' could never have made that post at all? How do you
 actually know that, Dave?
Because I have stated that fact loudly and clearly. Once again, I, Janice Caron, do hereby declare that I have made no posts on this group in any name other than Janice Caron. Can I possibly be more clear? Now stop making false accusations. I am /so/ looking forward to the moderated newsgroup!
Nov 23 2007
parent "Kris" <foo bar.com> writes:
"Janice Caron" <caron800 googlemail.com> wrote in message 
news:mailman.123.1195890481.2338.digitalmars-d puremagic.com...
 On 11/24/07, Kris <foo bar.com> wrote:
 Surely you're making a rather grand assumption that the person you
 call the 'victim' could never have made that post at all? How do you
 actually know that, Dave?
Because I have stated that fact loudly and clearly. Once again, I, Janice Caron, do hereby declare that I have made no posts on this group in any name other than Janice Caron. Can I possibly be more clear?
Oh, you make that claim, and that's fine. But the point is that David cannot know that for sure unless he made that post himself. David has attempted to create a notable level of 'fact' based upon knowing exactly who did what. He places so much emphasis on it, one surely has to ask the question posed above. I am simply asking that question.
 Now stop making false accusations.
There is no accusation there. Period. Instead, there is a question to Dave. Perhaps you should stop attempting to create issue where there is none.
Nov 24 2007
prev sibling parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Kris wrote:
 "David B. Held" <dheld codelogicconsulting.com> wrote in message 
 [...]
 Which obvious reading? Can you be more specific about that?
I believe I spelled it out in my last response to Jeff. Since you seem to be following the thread, I don't really feel it's worth my while to repeat the argument in full.
 [...]
 On the contrary, the puppeteer was most likely insulting Janice as well, 
 which means that you two were feigning stupidity, adding insult to injury, 
 and then making light of it by dismissing your claims as "speculation". 
 Well,
You say "most likely", and then draw an extensive conclusion from that. I didn't read the post in the manner you have suggested at all, so can happily and honestly disagree with your "assertions" in full.
Then I would say that either A) you didn't stop and think very carefully about the implications, or B) you wrote the posts and they didn't work out the way you had hoped.
 obviously, you haven't been a victim of such tricks yet, so it is easy for 
 you to blame the victim (which is what you did, let's not mince
Victim? Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave? The only way you could be /so/ sure is if you'd posted it yourself. Right? Let me ask you: Did you make that post, David? Be honest about it.
Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.
 [...]
 Good library authors can disarm their critics with a good explanation of 
 the design decisions, while authors outside of that set don't feel that 
 justification is necessary, because they are the ones who put their hard 
 work into it.
The connotation here is that perhaps those who do not "disarm their critics" are not "good library authors". Thus, since you're implying elsewhere that Tango has at least some such people, then the library itself is somehow not "good".
Well, that's a non-sequitur. Someone who isn't a diplomatic representative of a library does not force the library itself to somehow be bad. And yet, that person can cause harm to the library by influencing the opinions of prospective users. However, if the author *is* the library, then I agree that bad author == bad library. Are you a D library?
 It's a silly, groundless, and vague accusation.
What's silly is the line of reasoning used to arrive at this putative "accusation".
 [...]
 Not all criticism is justified, and some of it is simply bad, but the way 
 it's responded to makes all the difference in the world.
You're using the term 'criticism' as though we don't deal with it every single day. Perhaps you should hang out on IRC sometimes, and watch carefully how criticism is most often responded to ...
Whether you like it or not, the NG is not some kind of static IRC channel. What you say on IRC is not recorded and archived and made public in the way this newsgroup is. It may well be that people who talk to you on IRC have a completely different experience than those who read this NG. Whether that is a good thing or a bad thing, I'll let you decide.
 [...]
 Tango does not rest upon all of us being diplomats (at all, or all the 
 time), so let's stop pretending it matters nearly as much as you've been 
 trying to make out.
I wonder if you've ever tried to commercialize anything you've written. I've sold software I wrote to put bread on the table, and the way you treat your customers, whether they are programmers or businesspeople, makes all the difference in the world. I can especially tell you that it makes a difference to companies like Borland, where I saw people complain about their products every day (because I was often one of them). Maybe Tango will always be a free product, and that would be great. But if you ever decide that you should get paid for your hard work (say, through a dual-licensing scheme, which seems rather popular these days), you might find that diplomacy hits the bottom line rather directly.
 [...]
 Again, Tango very quickly gave up on all notion of full phobos compatability 
 in the early stages.
There's a difference between full compatibility and gratuitous incompatibility. C++ isn't fully compatible with C, and obviously had to do things differently to do them better. On the other hand, Bjarne always had a good reason for doing things differently, and wasn't afraid to share it with users (and, I might add, he managed to do so without calling them idiots).
 [...]
 p.s. Just out of interest, have you written or designed a library on a scale 
 similar to Tango?
No, Kris, I haven't. I'm not a brilliant programmer who only writes amazing code like you are. I doubt I could write a 10 line program without introducing more than one bug per line. My judgment and opinion are absolutely worthless next to your shining intellect. May your wisdom bless the D community for all of its days! I've only ever worked on toy codebases of a few hundred lines, and never on something that was actually used by other people. Every night when I go to bed, I think to myself: "If only I could one day be as great a h X0r as Kris...that would be swell!" I feel stupid even replying to you, as if I have the right to challenge a man who has so profoundly changed the face of D! I'm sorry, I won't ever let it happen again. Dave
Nov 24 2007
parent reply "Kris" <foo bar.com> writes:
"David B. Held" <dheld codelogicconsulting.com> wrote
 Let me ask you: Did you make that post, David? Be honest about it.
Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.
I asked a simply question, and there's really no need to take this attitude. I will admit to being saddened by the levels that you claim to stoop to, though I guess I should not be surprised given what you've previously claimed: 1) that you deliberately subverted the integrity of the ng via your sock-puppet spoof 2) that you'd be more than willing to do so again now you claim: 3) trolling against Tango is fair game for you (phangowant) 4) doing so with the intent to generate a flame fest was your goal ("baiting people ... exactly the way I predicted") Bring on those moderators ... Given those elements, one could be forgiven for concluding that your innacurate analogy regarding Boost and Tango was posted with similar malevolent intent. Too bad, since it made for an otherwise interesting read.
 You're using the term 'criticism' as though we don't deal with it every 
 single day. Perhaps you should hang out on IRC sometimes, and watch 
 carefully how criticism is most often responded to ...
Whether you like it or not, the NG is not some kind of static IRC channel. What you say on IRC is not recorded and archived and made public in the way this newsgroup is. It may well be that people who talk to you on IRC have a completely different experience than those who read this NG. Whether that is a good thing or a bad thing, I'll let you decide.
Thanks. Well, given the claims you've made so far, I'd say the NG is an inappropriate place to conduct any kind of rational discourse. I mean, what's the point if people like you are more than willing to (as you've described) subvert and/or pervert the environment? I (perhaps ignorantly) thought it was a place for D enthusiasts to discuss related topics, rather than for those with some kind of twisted agenda. That's too bad.
 Tango does not rest upon all of us being diplomats (at all, or all the 
 time), so let's stop pretending it matters nearly as much as you've been 
 trying to make out.
Maybe Tango will always be a free product, and that would be great. But if you ever decide that you should get paid for your hard work (say, through a dual-licensing scheme, which seems rather popular these days), you might find that diplomacy hits the bottom line rather directly.
Yes, I'm aware how the business environment operates. And yes, Tango will always be a free product as far as I'm concerned. Why would it not be? Tango exists because we are D enthusiasts.
 p.s. Just out of interest, have you written or designed a library on a 
 scale similar to Tango?
No, Kris, I haven't. I'm not a brilliant programmer who only writes amazing code like you are. I doubt I could write a 10 line program without introducing more than one bug per line. My judgment and opinion are absolutely worthless next to your shining intellect. May your wisdom bless the D community for all of its days! I've only ever worked on toy codebases of a few hundred lines, and never on something that was actually used by other people. Every night when I go to bed, I think to myself: "If only I could one day be as great a h X0r as Kris...that would be swell!" I feel stupid even replying to you, as if I have the right to challenge a man who has so profoundly changed the face of D! I'm sorry, I won't ever let it happen again.
There's really no need to utterly wig-out, is there? I asked a perfectly innocent, and what I thought to be reasonable, question. I mean, you might have had far more experience in that arena than all of Tango put together, and could thus be in a position to offer lots of solid advice on technical concerns too. I asked only because you seemed to be hinting in that direction.. However, I'll take your reply to be an affirmation in the negative sense. Thank you for clarifying my original two questions regarding your posts over Tango.
Nov 24 2007
parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Kris wrote:
 "David B. Held" <dheld codelogicconsulting.com> wrote
 Let me ask you: Did you make that post, David? Be honest about it.
Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.
I asked a simply question, and there's really no need to take this attitude.
You asked a simple question, but I didn't see one ounce of sincerity in it. I just got done writing several long posts about the evils of anonymous posting, and now you want to accuse *me* of being the poster?? Obviously, the original poster was far more sophisticated in the ways of evading detection than I was, so let me ask you this...what would be my reward for then making a clumsy *not-so-anonymous* post?? There are only two conclusions to be made here: 1) you didn't take 5 seconds to think this through and realize that only an utter moron would perform the sequence of events: a) post as phango b) post as dheld , "anonymously" c) admit that b) was a ruse 2) you were not being sincere Now, you are saying that 2) is not the case, so you are basically calling me a complete idiot for trying to pull off 1). Your faux "sincerity" is extremely annoying and does you no credit, and I take the insult quite personally.
 I will admit to being saddened by the levels that you claim to stoop to, 
 though I guess I should not be surprised given what you've previously 
 claimed:
You're "saddened"? Oh, poor, poor crocodile...look at those big tears...
 1) that you deliberately subverted the integrity of the ng via your 
 sock-puppet spoof
 2) that you'd be more than willing to do so again
At least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).
 now you claim:
 
 3) trolling against Tango is fair game for you (phangowant)
Ok, since you seem to lack the basic comprehension of literary devices, I'll spell this one out for you in excruciating detail: my "admission" above is something called "sarcasm". Here's a good reference: http://en.wikipedia.org/wiki/Sarcasm. I think it's ok for me to quote an excerpt: Sarcasm[A] is the sneering, sly, jesting, or mocking of a person, situation or thing. I felt that was all that your "sincere" query deserved as a response. So to be perfectly explicit (since that seems to be what you need, in your I'm-playing-literal-and-naive mode), this is a false conclusion because I am not phango , I do not endorse anything phango says, I am opposed to trolling, and I have nothing against Tango the library, nor do I endorse attacking the library. On the other hand, I think every piece of work is open for criticism (certainly including anything I've written), but that is different from an attack in that a criticism has technical merit and an attack does not.
 4) doing so with the intent to generate a flame fest was your goal ("baiting 
 people ... exactly the way I predicted")
Kris, if this is really a sincere interpretation of my words, I have to wonder if you simply have a hard time communicating with other people via idioms and expressions and forms of speech which are not literal? I understand that there are specific cognitive defects which can lead to this situation, but usually the are the result of some developmental disability that is more systemic in nature. You don't seem to merely be a high-functioning autistic or Aspberger's patient, but I don't get to see you in your normal milieu, so I can't make any kind of guess as to your condition.
 [...]
 Given those elements, one could be forgiven for concluding that your 
 innacurate analogy regarding Boost and Tango was posted with similar 
 malevolent intent. Too bad, since it made for an otherwise interesting read.
Yes, by comparing Boost to Tango, I wanted to heap aspersions on Tango. Clearly, Boost is a simmering pile of dung, and by association, I'm saying that Tango is crap. It's a totally unflattering comparison, and one for which Tango is most undeserving. You have persuaded me to retract my comparison and say that Tango is nothing at all like Boost in any way, shape, or form. In fact, it's more like the opposite of Boost. Are you happy?
 [...]
 Thanks. Well, given the claims you've made so far, I'd say the NG is an 
 inappropriate place to conduct any kind of rational discourse. I mean, 
 what's the point if people like you are more than willing to (as you've 
 described) subvert and/or pervert the environment? I (perhaps ignorantly) 
 thought it was a place for D enthusiasts to discuss related topics, rather 
 than for those with some kind of twisted agenda. That's too bad.
Yes, it is too bad. Apparently, all the "rational" discourse goes on in IRC, which is clearly where the D newsgroup should migrate (not the least of all because *you* are there). If only the perverts and the subverts would go away, the D newsgroup would become a playground of rational discourse by D enthusiasts. My "twisted agenda" has rained down hellfire and brimstone on the face of D, and everything has come grinding to a halt. Oh, woe is we! Woe is we! Let us put on sackcloth and ashes and mourn for the death of our beloved newsgroup... Kris, let me remind you that the instigator of this thread was that anonymous coward posting as phango . And what fanned the flames was when you and Jeff accused Janice of being that coward (though you yourself still have not disclaimed being phango ). At that point, the thread left the realm of "rational discourse" and ceased being about D at all. Trying to impute the nature of the subsequent posts to the rest of the newsgroup is about as irrational as one can get (and you have shown me just how irrational one can get). For instance, I invite you to show how I have "subverted" or "perverted" the environment outside of this thread. Go ahead and try. I'm calling you out.
 [...]
 Yes, I'm aware how the business environment operates. And yes, Tango will 
 always be a free product as far as I'm concerned. Why would it not be? Tango 
 exists because we are D enthusiasts.
Oh, that's interesting. Do all the other Tango contributors agree with you, or are you the official spokesman for the library? What if someone else tried to sell Tango with a license? What would you do?
 [...]
 There's really no need to utterly wig-out, is there? I asked a perfectly 
 innocent, and what I thought to be reasonable, question.
I'm sorry, Kris. I thought your question was as "sincere" as the others in your last post and I reacted accordingly. We obviously have a major disagreement over what constitutes "sincerity". Since your definition seems to flip-flop between reading sarcastic things literally and taking them as they were intended, it's very hard to tell which statements you make are sincere, and which are not. Perhaps you could do me a small favor and mark different passages that you write and respond to as [literal] or [figurative]. Then we would be on the same page.
 I mean, you might have had far more experience in that arena than all of
 Tango put together, and could thus be in a position to offer lots of
 solid advice on technical concerns too.
I see...and you would accept my criticisms with the same level of respect you afford Janice? I'm not sure I know of any library author willing to take you up on your "offer".
 I asked only because you seemed  to be hinting in that direction.. However,
 I'll take your reply to be an  affirmation in the negative sense.
Oh, interesting...here you seem to be able to read between the lines after all! Amazing!!! Mr. Literal was able to properly detect sarcasm! It's a miracle! Notice how selectively you do it, though. When you read one sarcastic passage literally and another figuratively, it casts serious doubts over your "sincerity". Unlike you, Kris, I feel no need to trumpet my credentials or declare how magnificent my work is. It's easy enough for someone to find different things that I've worked on, if for some reason that interests them. But you won't ever see me spell it out here, as a matter of principle. I've always felt that if you need to say how great your work is, it's because there aren't enough other people saying it for you.
 Thank you for clarifying my original two questions regarding your posts over 
 Tango.
Oh, you're most welcome, Mr. Literal-When-It's-Convenient. You think you are so clever what with your faux innocence and crocodile tears, and yet you freely admit that you are a prickly person that does not always play well with others. Why pretend some of the time and not others? I would respect you a lot more if you didn't play these "I'm going to be naive and innocent and literal now because it suits me" games and just stuck to your "I don't care what people think" line. Dave
Nov 25 2007
parent reply "Kris" <foo bar.com> writes:
"David B. Held" <dheld codelogicconsulting.com> wrote in message 
news:fick79$u53$1 digitalmars.com...
 Kris wrote:
 "David B. Held" <dheld codelogicconsulting.com> wrote
 Let me ask you: Did you make that post, David? Be honest about it.
Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.
I asked a simply question, and there's really no need to take this attitude.
You asked a simple question, but I didn't see one ounce of sincerity in it. I just got done writing several long posts about the evils of anonymous posting, and now you want to accuse *me* of being the poster??
Huh? Perhaps you should remind yourself that you are the one who's been playing sock-puppet games? As an anonymous poster?
  Obviously, the original poster was far more sophisticated in the ways of 
 evading detection than I was, so let me ask you this...what would be my 
 reward for then making a clumsy *not-so-anonymous* post??  There are only 
 two conclusions to be made here:
Oh, it was perfectly sincere. You made all the implications that you knew exactly who the poster was, and it seemed the only way you could know for sure is if it had been you. I noted that and thus asked the question, to which you appeared to answer honestly. Have you been digging a hole for yourself?
 1) you didn't take 5 seconds to think this through and realize that only 
 an utter moron would perform the sequence of events:

   a) post as phango 
   b) post as dheld , "anonymously"
   c) admit that b) was a ruse
There's little point in trying to second-guess you. Instead, I've merely been accepting what you admit to, or otherwise claim, as being the truth. You can't fault anyone for that.
 2) you were not being sincere

 Now, you are saying that 2) is not the case, so you are basically calling 
 me a complete idiot for trying to pull off 1).  Your faux "sincerity" is 
 extremely annoying and does you no credit, and I take the insult quite 
 personally.
I asked a simple question and you answered it, noting it as being sincere. I can accept your answer or assume you are lying about it. I chose the former, since you had been honest about your sock-puppetry actions (though, in retrospect, perhaps your honesty there was due to being 'outed' ?). The rest has been entirely in your hands.
 I will admit to being saddened by the levels that you claim to stoop to, 
 though I guess I should not be surprised given what you've previously 
 claimed:
You're "saddened"? Oh, poor, poor crocodile...look at those big tears...
Again, I chose to assume you were being honest. You specifically said you were being sincere.
 1) that you deliberately subverted the integrity of the ng via your 
 sock-puppet spoof
 2) that you'd be more than willing to do so again
At least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).
You claimed earler that it was actually you, and there was no reason to assume you meant otherwise. No, it wasn't me who posted that, either. It would be great if Walter would check the logs and find out who it was.
 now you claim:

 3) trolling against Tango is fair game for you (phangowant)
Ok, since you seem to lack the basic comprehension of literary devices, I'll spell this one out for you in excruciating detail: my "admission" above is something called "sarcasm". Here's a good reference: http://en.wikipedia.org/wiki/Sarcasm. I think it's ok for me to quote an excerpt:
Then you should drop the sarcasm?
 I felt that was all that your "sincere" query deserved as a response. So 
 to be perfectly explicit (since that seems to be what you need, in your 
 I'm-playing-literal-and-naive mode), this is a false conclusion because I 
 am not phango , I do not endorse anything phango  says, I am opposed to 
 trolling, and I have nothing against Tango the library, nor do I endorse 
 attacking the library.  On the other hand, I think every piece of work is 
 open for criticism (certainly including anything I've written), but that 
 is different from an attack in that a criticism has technical merit and an 
 attack does not.
We completely agree on the criticism aspect.
 4) doing so with the intent to generate a flame fest was your goal 
 ("baiting people ... exactly the way I predicted")
Kris, if this is really a sincere interpretation of my words, I have to wonder if you simply have a hard time communicating with other people via idioms and expressions and forms of speech which are not literal? I understand that there are specific cognitive defects which can lead to this situation, but usually the are the result of some developmental disability that is more systemic in nature. You don't seem to merely be a high-functioning autistic or Aspberger's patient, but I don't get to see you in your normal milieu, so I can't make any kind of guess as to your condition.
Again, there was no reason to believe you were not being sincere. After all, you don't find sock-puppetry to be distasteful. Trolling is the lesser evil in my book.
 [...]
 Thanks. Well, given the claims you've made so far, I'd say the NG is an 
 inappropriate place to conduct any kind of rational discourse. I mean, 
 what's the point if people like you are more than willing to (as you've 
 described) subvert and/or pervert the environment? I (perhaps ignorantly) 
 thought it was a place for D enthusiasts to discuss related topics, 
 rather than for those with some kind of twisted agenda. That's too bad.
Yes, it is too bad. Apparently, all the "rational" discourse goes on in IRC, which is clearly where the D newsgroup should migrate (not the least of all because *you* are there). If only the perverts and the subverts would go away, the D newsgroup would become a playground of rational discourse by D enthusiasts. My "twisted agenda" has rained down hellfire and brimstone on the face of D, and everything has come grinding to a halt. Oh, woe is we! Woe is we! Let us put on sackcloth and ashes and mourn for the death of our beloved newsgroup...
You had claimed to be both a puppeteer and a troll. I would say that represents a twisted agenda. The drama you're making out of this just makes you look a bit silly, imo
 Kris, let me remind you that the instigator of this thread was that 
 anonymous coward posting as phango .  And what fanned the flames was
To which you had claimed was you.
 when you and Jeff accused Janice of being that coward (though you yourself 
 still have not disclaimed being phango ).  At that point, the thread left 
 the realm of "rational discourse" and ceased being about D at all.  Trying 
 to impute the nature of the subsequent posts to the rest of the newsgroup 
 is about as irrational as one can get (and you have shown me just how 
 irrational one can get).  For instance, I invite you to show how I have 
 "subverted" or "perverted" the environment outside of this thread.  Go 
 ahead and try.  I'm calling you out.
Did I say you did? Instead, I've simply noted what you claimed to have done. You deliberately manipulated the ng with your sock-puppetry - that's subversion. You were quite explicit that you'd happily do so again (perhaps /threatened/ is more appropriate?). You then claimed to be the "phangowant" troll, and explicitly noted how you were trying to manipulate other posters. Did you expect a pat on the back for this?
 [...]
 Yes, I'm aware how the business environment operates. And yes, Tango will 
 always be a free product as far as I'm concerned. Why would it not be? 
 Tango exists because we are D enthusiasts.
Oh, that's interesting. Do all the other Tango contributors agree with you, or are you the official spokesman for the library?
Did I say I was? You asked my opinon, and I replied "as far as I am concerned". End of story.
 What if someone else tried to sell Tango with a license?  What would you 
 do?
No idea. How is this relevant to your sock-puppetry?
 [...]
 There's really no need to utterly wig-out, is there? I asked a perfectly 
 innocent, and what I thought to be reasonable, question.
I'm sorry, Kris. I thought your question was as "sincere" as the others in your last post and I reacted accordingly. We obviously have a major disagreement over what constitutes "sincerity".
I've tried to be clear and sincere toward you. If you find you cannot respond in kind, that is your choice.
 I asked only because you seemed  to be hinting in that direction.. 
 However,
 I'll take your reply to be an  affirmation in the negative sense.
Oh, interesting...here you seem to be able to read between the lines after all! Amazing!!! Mr. Literal was able to properly detect sarcasm! It's a miracle! Notice how selectively you do it, though. When you read one sarcastic passage literally and another figuratively, it casts serious doubts over your "sincerity".
What I saw resembled a meltdown. I doubt anyone needed to read between any lines there?
 Unlike you, Kris, I feel no need to trumpet my credentials or declare how 
 magnificent my work is.  It's easy enough for someone to find different 
 things that I've worked on, if for some reason that interests them.  But 
 you won't ever see me spell it out here, as a matter of principle.  I've 
 always felt that if you need to say how great your work is, it's because 
 there aren't enough other people saying it for you.
Strawman. I don't actually trumpet my own work. If you're talking about Tango, my contribution is just that: a contribution. As you know, there are lots of people involved, and it is that collection of skills and ideas that make Tango the great peice of work that it is. Even Tango detractors have nice things to say about it.
 Thank you for clarifying my original two questions regarding your posts 
 over Tango.
Oh, you're most welcome, Mr. Literal-When-It's-Convenient. You think you are so clever what with your faux innocence and crocodile tears, and yet you freely admit that you are a prickly person that does not always play well with others. Why pretend some of the time and not others? I would respect you a lot more if you didn't play these "I'm going to be naive and innocent and literal now because it suits me" games and just stuck to your "I don't care what people think" line.
Sad.
Nov 25 2007
parent Regan Heath <regan netmail.co.nz> writes:
Kris wrote:
 1) that you deliberately subverted the integrity of the ng via your 
 sock-puppet spoof
 2) that you'd be more than willing to do so again
At least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).
You claimed earler that it was actually you, and there was no reason to assume you meant otherwise. No, it wasn't me who posted that, either. It would be great if Walter would check the logs and find out who it was.
I think you must have missunderstood something here Kris, or perhaps I did. David didn't claim the original phango posting was him, he claimed this one was: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=61861 I don't know about you but when I read that it was pretty obvious that it wasn't Jeff but someone playing a prank. At least, that was my interpretation. I don't want to fan the flames which seem to have died down, just to point out there may be some areas where one or the other of you have missunderstood the situation somewhat. Regan
Nov 26 2007
prev sibling parent reply Daniel Keep <daniel.keep.lists gmail.com> writes:
It's a month until Christmas, and I think this thread isn't doing anyone
any good.  In the spirit of the season (forgiveness, good-will, etc.)
how about we just let this thread die now?

	-- Daniel
Nov 25 2007
next sibling parent "Kris" <foo bar.com> writes:
"Daniel Keep" <daniel.keep.lists gmail.com> wrote in message 
news:fidjbn$2ah2$1 digitalmars.com...
 It's a month until Christmas, and I think this thread isn't doing anyone
 any good.  In the spirit of the season (forgiveness, good-will, etc.)
 how about we just let this thread die now?

 -- Daniel
Gladly. No further comment.
Nov 25 2007
prev sibling next sibling parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Daniel Keep wrote:
 It's a month until Christmas, and I think this thread isn't doing anyone
 any good.  In the spirit of the season (forgiveness, good-will, etc.)
 how about we just let this thread die now?
 
 	-- Daniel
Here here! /Raises glass of eggnog/ --bb
Nov 25 2007
prev sibling parent Clay Smith <clayasaurus gmail.com> writes:
Daniel Keep wrote:
 It's a month until Christmas, and I think this thread isn't doing anyone
 any good.  In the spirit of the season (forgiveness, good-will, etc.)
 how about we just let this thread die now?
 
 	-- Daniel
Please, just let it rest in peace.
Nov 25 2007
prev sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
David B. Held wrote:
 In case you haven't noticed, I haven't been working especially hard to 
 win friends or standing in the D community.
Your posts are almost always thoughtful and refraining from animosity. Numerous times you have implored others to do the same. Your personal attack/forgery was totally out of character. No matter how wrong you think I was, you have no excuse for acting worse.
 Well, your backpedaling and equivocation is pretty transparent, in my 
 book.  First you say:
 
     "By the way, the charge that one of the posts following yours
     was a sock puppet was legitimate."
 
 Here, there is no "misconstruing" going on.  You clearly said: "Somebody 
 accused you of creating a sock puppet, and that accusation was valid, 
 not baseless."  I don't think it takes a lawyer to read it that way. You 
 made it about as unambiguous as could be.
Your interpretation is wrong. When I said the charge was "legitimate", I meant as in http://dictionary.reference.com/browse/legitimate: 4. in accordance with the laws of reasoning; logically inferable; logical: a legitimate conclusion.
 Then, you followed up with:
 
     "It was the first thing that crossed my mind."
 
 Here, you say: "And I tend to agree with the accuser."  How do I draw 
 that conclusion?  Well, it's simple.  The first thing that crossed *my* 
 mind was: "Someone is playing a dirty trick on Janice, and then 
 exploiting it."  Which means that if you had a different first 
 impression, it must have been because you had already decided that 
 Janice was guilty until proven innocent.
Your analysis is wrong. It "crossed my mind". That's all. It looked fishy, and an obvious possibility was a sock puppet. There are other possibilities, and I reached no firm conclusions. I filed it away in the back of my mind and continued reading the newsgroup.
 But you realized you had gone 
 too far, so you decided to try to smooth things over with a CYA clause:
 
     "Doesn't mean you did it, but it's a valid suspicion."
Wrong again, Mr. Holmes. I'm trying to make it clear that there is no confirmed guilt, only suspicion. I think I'll stop here. Believe what you want to believe. -Jeff
Nov 21 2007
parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Jeff Nowakowski wrote:
 David B. Held wrote:
 In case you haven't noticed, I haven't been working especially hard to 
 win friends or standing in the D community.
Your posts are almost always thoughtful and refraining from animosity. Numerous times you have implored others to do the same. Your personal attack/forgery was totally out of character. No matter how wrong you think I was, you have no excuse for acting worse.
No matter how wrong you think I was, you have no excuse for claiming my actions were worse. If you feel strongly offended (and yes, that was the intent), then imagine how Janice felt 1) when some coward posted as "phango phangowant.com", and 2) when two other people then had the gall to accuse her of being the trickster. I didn't even get the luxury of calling you the perpetrator to complete the recreation, or justice would have truly been served. It's all about you, you, you, isn't it? My whole point here was about Janice, and that fact that *she* is the only true victim here. And yet you continue to insist that *you* are the only victim, even after personally experiencing a bit of the situation that Janice was placed in. I'm glad you got to sit in the victim-chair for a few minutes. It's too bad it didn't increase your empathy one iota.
 Well, your backpedaling and equivocation is pretty transparent, in my 
 book.  First you say:

     "By the way, the charge that one of the posts following yours
     was a sock puppet was legitimate."

 Here, there is no "misconstruing" going on.  You clearly said: 
 "Somebody accused you of creating a sock puppet, and that accusation 
 was valid, not baseless."  I don't think it takes a lawyer to read it 
 that way. You made it about as unambiguous as could be.
Your interpretation is wrong. When I said the charge was "legitimate", I meant as in http://dictionary.reference.com/browse/legitimate: 4. in accordance with the laws of reasoning; logically inferable; logical: a legitimate conclusion.
I already deconstructed this bit of hogwash. The only way for you to make this defense is to claim stupidity: "Yes, I really was swayed by the phango phangowant.com endorsement...until I realized it could only have been Janice in disguise!!!" Either that, or you are gravely insulting Janice's intelligence, which would be your third offence: "Yes, I really think Janice is stupid enough to post a sock puppet as phango phangowant.com...in fact, I think she's a blazing idiot!!!" Neither of those positions is particularly flattering.
 [...]
 But you realized you had gone too far, so you decided to try to smooth 
 things over with a CYA clause:

     "Doesn't mean you did it, but it's a valid suspicion."
Wrong again, Mr. Holmes. I'm trying to make it clear that there is no confirmed guilt, only suspicion. I think I'll stop here. Believe what you want to believe.
You know what's wrong with defence? If you had really stopped for two seconds to think about the implications of Janice writing those anonymous posts, you would have come to the same conclusion that I did: Completely bogus hypothesis. When *you* were the victim, all of the sudden is was worth your time to not only consider the implications of person X being the author, you made a concerted effort to find out who X was! And still, you lack the ability to put yourself in Janice's shoes and imagine that *perhaps she felt the same way you did when you accused her of being her own attacker*. This isn't about what I believe...it's about the behavior I observed. Actions speak louder than words. Dave
Nov 23 2007
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
David B. Held wrote:
 No matter how wrong you think I was, you have no excuse for claiming my 
 actions were worse.
You crossed the line from debate to taking an underhanded action. You made a fraudulent post and used the opportunity to make a personal attack of a nature that I've never seen you do under your own name. The end does not justify the means. I wasn't going to continue this thread, but I have additional context to offer, and a response to the nature of the original anonymous poster. You seem to be coming at this from a Tango vs Phobos angle, to the point that you think I'm attacking Janice from the Tango side. That's not the case, and I hope you read the following with an open mind. First, what were my motives for entering this thread? Here's what happened. I saw the personal animosity between Kris and Janice go up a notch when Kris accused Janice of being a sock puppet ("There's a fair chance the poster below is actually Janice"). Kris later retracted his statement ("Honest mistake, Janice. Really."), but still felt upset about an "amateurish" charge that Janice made earlier ("I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?") To which Janice replied "Consider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever." It seems better to argue about what was actually said if possible (as an aside, this is why I hate the idea of forums where you can edit your posts). After it was clear that neither Kris nor Janice would supply the quote and Janice didn't see any injustice, I found the quote and posted it. I even made sure to quote the part that softened Janice's statement in an effort to be fair, for which Janice thanked me. It was only after Janice still felt that nothing was wrong with the original "amateurish/petty" statement that I tried to convey that Kris was upset for the same underlying reason that upset Janice. It was not my intention at all to further the accusation against Janice, and that I did so I completely apologize for. I only meant to show it was a reasonable suspicion (not probable), and that it should not have been publically aired, and neither should have the "amateur/petty" charge. So, in light of all that, I never claimed that *I* was the only victim, nor do I agree that Janice is the only "true victim". As is usual in these kinds of disagreements, everybody involved is damaged in some respects.
 I already deconstructed this bit of hogwash.  The only way for you to 
 make this defense is to claim stupidity: "Yes, I really was swayed by 
 the phango phangowant.com endorsement...until I realized it could only 
 have been Janice in disguise!!!"
You're exaggerating my position by saying "it could only have been". Personally, my Occam's razor point of view is that the post was made earnestly by somebody who chose to be anonymous. I don't see it as an attack against Janice at all -- if the very same post was made by a regular, you would have no problem with it. The "phango phangowant.com" identity is no worse than an "I <heart> New York" t-shirt. My "hmm" view is that *maybe* it was Janice. Now you claim that this is stupid. Your view, that this was an attack against Janice, I find just as unreasonable as you find mine. Asking for a fork of Tango that many might find appealing would be a really bad idea from Tango's perspective, one that nobody pro-Tango would ask for even as a false flag attack. Are you willing to admit to being wrong? Ask Walter to check the logs of the web forum. The date of the post was Sat, 17 Nov 2007 17:23:45 -0500. Find the IP address associated with that post and I bet you'll find the same IP belongs to a regular poster, either via the news server or via the web interface.
 Either that, or you are gravely insulting Janice's intelligence,
 which would be your third offence: "Yes, I really think Janice is
 stupid enough to post a sock puppet as phango phangowant.com...in
 fact, I think she's a blazing idiot!!!"
As already stated, I don't see the email address as incriminating. It's only the fact that the poster is anonymous and not a regular that raised a flag for me. By the way, smart people do stupid things all the time. For reference, see the story of the CEO of Whole Foods, who posted under a pseudonym based on an anagram of his wife's name. He said things of himself like "I like Mackey's haircut. I think he looks cute!": http://valleywag.com/tech/john-mackey/whole-foods-ceo-proud-to-be-an-internet-blowhard-277793.php
 When *you* were the victim, all of the sudden is was worth your time
 to not only consider the implications of person X being the author,
 you made a concerted effort to find out who X was!
For the record, your outing is the 4th time I have uncovered an anonymous attacker. I find the practice despicable, to the point that the previous three times all involved an anonymous person attacking people I personally disliked. I'll provide archive references if you wish. I checked the original phango ... post and only saw that it came from the web, so I was blocked. So it wasn't that it was about me that got me upset. It was the action itself. It's totally out of bounds for newsgroup ethics, even given all the usual flamewars that go on.
 And still, you lack the ability to put yourself in Janice's shoes and
 imagine that *perhaps she felt the same way you did when you accused 
 her of being her own attacker*.
I completely understand and empathize with Janice's perspective, and your actions had nothing to do with it. I also understand Kris's perspective, and that's why I tried to relate the two to Janice. By the way, I've also been publically accused of making an anonymous attack before, and I responded calmly. I can provide an archival reference for that too. I'm not trying to toot my own horn, but to show that your portrayal of my motives and character is completely wrong. -Jeff
Nov 24 2007
parent "David B. Held" <dheld codelogicconsulting.com> writes:
Jeff Nowakowski wrote:
 David B. Held wrote:
 No matter how wrong you think I was, you have no excuse for claiming 
 my actions were worse.
You crossed the line from debate to taking an underhanded action.
From my perspective, the thread had left the realm of "debate" long before I joined it. And as far as I'm concerned, taking something as dirty as an anonymous post and accusing the victim of being the perpetrator is as underhanded as it gets (in a way analogous to blaming rape victims, though I don't want to trivialize the issue of rape). So I didn't think I was muddying the waters any more than they already were.
 [...]
 You seem to be coming at this from a Tango vs Phobos angle, to the point 
 that you think I'm attacking Janice from the Tango side.
This isn't about Tango or Phobos at all, except to the extent that comments about those libraries happened to be at the beginning of the thread. This is about playing dirty tricks with anonymity (which is the double-edged sword of the internet).
 [...]
 You're exaggerating my position by saying "it could only have been". 
 Personally, my Occam's razor point of view is that the post was made 
 earnestly by somebody who chose to be anonymous.  I don't see it as an 
 attack against Janice at all -- if the very same post was made by a 
 regular, you would have no problem with it.
Right, because the poster would obviously not be afraid of putting their name on the idea. The fact that it was *anonymous* is what tips me off that it isn't sincere...and if we look at folks who are not always sincere...
 The "phango phangowant.com" identity is no worse than an "I <heart>
 New York" t-shirt. My "hmm" view is that *maybe* it was Janice.
I think it's ridiculous, because if that were an honest sentiment, you wouldn't be afraid to put your name on it. You generally don't wear shirts with your name on them, but you regularly put your name on NG posts, so I don't buy the analogy.
 Now you claim that this is stupid.  Your view, that this was an attack 
 against Janice, I find just as unreasonable as you find mine.  Asking 
 for a fork of Tango that many might find appealing would be a really bad 
 idea from Tango's perspective, one that nobody pro-Tango would ask for 
 even as a false flag attack.
It would make the perfect setup for an accusation of sock puppetry to discredit someone you disagree with and don't like.
 Are you willing to admit to being wrong?  Ask Walter to check the logs 
 of the web forum.  The date of the post was Sat, 17 Nov 2007 17:23:45 
 -0500.  Find the IP address associated with that post and I bet you'll 
 find the same IP belongs to a regular poster, either via the news server 
 or via the web interface.
Oh, it seems almost certain that phango is a regular poster. I think it would be great if we knew who it was, and I wish we tried to do that before this thread went anywhere. I wish Walter had a policy of outing any anonymous posters, but he's a busy man and doesn't have the time for such petty things.
 [...]
 For the record, your outing is the 4th time I have uncovered an 
 anonymous attacker.  I find the practice despicable, to the point that 
 the previous three times all involved an anonymous person attacking 
 people I personally disliked.  I'll provide archive references if you 
 wish.  I checked the original phango ... post and only saw that it came 
 from the web, so I was blocked.
 
 So it wasn't that it was about me that got me upset.  It was the action 
 itself.  It's totally out of bounds for newsgroup ethics, even given all 
 the usual flamewars that go on.
If you find it so despicable, why did you think it was ok to point fingers?
 [...]
 I'm not trying to toot my own horn, but to show that your portrayal of 
 my motives and character is completely wrong.
I'm willing to agree with that, and I think the context you provide is very helpful. I'm sorry I resorted to posting anonymously against you, and I won't do it again (for the obvious reason that I think one demonstration is well more than enough). I do find it incongruent that you seem to be so opposed to anonymous posting, but were willing to point fingers anyway; but I think we can agree that it's an ugly practice that ought not to be tolerated. Dave
Nov 25 2007
prev sibling parent reply Regan Heath <regan netmail.co.nz> writes:
Jeff Nowakowski wrote:
 By the way, the charge that one of the posts following yours was a sock 
 puppet was legitimate.  It was the first thing that crossed my mind. 
 Doesn't mean you did it, but it's a valid suspicion.
I prefer to assume the best of people, it generally turns out to be true and it helps avoid things like this from happening. I would like to point out that there is a difference between thinking something might be the case and posting your suspician where it can be taken the wrong way (as an accusation) as I'm about to show... I've read Kris's explanation of what happened and I have formed my own thoughts/opinions as to his motives but I'm certainly not going to post them here. Regan
Nov 19 2007
parent Jeff Nowakowski <jeff dilacero.org> writes:
Regan Heath wrote:
 
 I would like to point out that there is a difference between thinking 
 something might be the case and posting your suspician where it can be 
 taken the wrong way (as an accusation)
I agree, and that was my point. Calling somebody a sock puppet in public, while a legitimate *suspicion*, is wrong if it's only based on superficial evidence. Same goes for calling somebody's design decisions amateurish or petty without first asking why they made the decision. -Jeff
Nov 19 2007
prev sibling parent reply Tom S <h3r3tic remove.mat.uni.torun.pl> writes:
Janice Caron wrote:
 (...) the /decision/ to ignore the
 style guide was petty. Note that the criticism was of the decision,
 not the people making it. And actually, I do that to deliberately go
 against the style guide was somewhat petty. (...)
And you realize that by stating that the decision was amateurish, you put yourself above the ones who made it? Thus, being a newbie, accused the Tango team of being amateurish. Tango is seen by most of its users as a replacement for Phobos, so it doesn't have to be compatible with it, or use its naming conventions. What Walter states in the 'official style guide' has to be taken with a grain of salt. With all due respect, Walter is a single programmer as well, not an oracle or a religious guru whose words have to be followed exactly. Someone creates another lib for D - they may use whatever they like. I recommend a shock therapy - looking at this code: http://dsource.org/projects/scrapple/browser/trunk/tools/tools ;) Anyway, as far as I remember, there was a deeper reason for having distinct casing conventions for module and package names. /* This might have been even before Tango (possibly in Mango) */ If lowercase was used for both module and package names, you could not have a module with the same (logical) name as a package. About two or three years ago, I still used alllowercase for modules and packages and ran into this problem a few times. I took the idea of using MixedCase for module names from Kris. And it works very well. For instance, I have a module 'OpenGL' in my code and a package 'opengl', which exist in the same directory. opengl/*.d are implementations of specific components of the OpenGL module. Had I used lowercase for everything, both would be just 'opengl' and 'opengl.foo' would be a conflict between a module in the 'opengl' package and a symbol in the 'opengl' module. See? A practical reason. Not to mention that MixedCaseNames are easier to read than mixedcasenames. On the other hand, there is no practical reason not to use MixedCase, except the dubious case sensitivity issue of certain file systems ( I use Windows and Linux / Solaris with D interchangeably and don't experience said problems with MixedCase ). If all it boils down to is personal preference and this is the main reason of this flamewar... Excuse me, but nothing is more amateurish or petty than that. But since we're all enjoying the party of expressing our preferences... I think that Tango's style is much better than the official guide, plus I consider the guide flawed for ever suggesting UPPER_CASE_NAMES for consts and enum values. I also know for a fact, that many Tango users simply agree with its design conventions, but find this entire discussion too silly and irrelevant to participate in. -- Tomasz Stachowiak http://h3.team0xf.com/ h3/h3r3tic on #D freenode
Nov 18 2007
parent Frank Benoit <keinfarbton googlemail.com> writes:
Tom S schrieb:
 I also know for a fact, that many Tango users simply agree with its
 design conventions, but find this entire discussion too silly and
 irrelevant to participate in.
very well said tom Frank
Nov 18 2007
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 "Janice Caron" <caron800 googlemail.com> wrote
 On 11/18/07, Kris <foo bar.com> wrote:
 Dash it all. This is what I meant to write:
Phew! OK, I'm happy now. :-) Thanks for clearing things up.
Sure, no problem. Now, perhaps you will address the questions asked previously? I'll list them here for your convenience:
 Seriously - Tango's stylistic issues are a big turn-off. Tango
 folk,when you complete your integration with Phobos, please, please
 fix them.
Please suggest an alternate formatting style and explain why it is better.
 So Tango should really follow convention used by Walter in Phobos.
What if that convention proves insufficient for a library that is much larger than Phobos?
It seems to me the burden should be on the Tango developers here, as the newcomers, to explain to the world why the Tango convention is better, rather than asking everyone else to justify why the pre-existing and already established convention is better. The Tango convention may be better for all I know, but I don't recall hearing any compelling arguments in favor of why a change was needed. If they were given and I just forgot them, then sorry. I do recall hearing unsubstantiated claims like "we found it was better" or "we found the phobos convention to be insufficient" etc, but I don't recall any actual good arguments that made me go "hmm ah, yes indeed". Anyway given that this topic continues to come up, it seems it would be a good idea to collect all these reasons on a page over at tango.dsource.org. --bb
Nov 18 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"Bill Baxter" <dnewsgroup billbaxter.com> wrote

 It seems to me the burden should be on the Tango developers here, as the 
 newcomers, to explain to the world why the Tango convention is better, 
 rather than asking everyone else to justify why the pre-existing and 
 already established convention is better.
Newcomers? Tango has been in development for almost 4 years, Bill. As for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants. moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 "Bill Baxter" <dnewsgroup billbaxter.com> wrote
 
 It seems to me the burden should be on the Tango developers here, as the 
 newcomers, to explain to the world why the Tango convention is better, 
 rather than asking everyone else to justify why the pre-existing and 
 already established convention is better.
Newcomers? Tango has been in development for almost 4 years, Bill.
Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.
 As for 
 conventions, it is my opinion that Tango doesn't have to justify the choices 
 made to anyone at this point. It's water under the bridge, just as the some 
 minor stylistic choices in phobos or D are now just water under the bridge. 
 As Walter already noted: Tango can use whatever style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
 moving along, I believe Sean's two questions (posted much earlier, which I 
 repeated on his behalf) were intended to elicit some positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases: In favor of lower case module names: * It's a de-facto standard established by Walter * OS Case sensitivity (or lack thereof) * Redundancy in fully qualified names (package.ClassName.ClassName) In favor of mixed case module names: * Easier to remember module names when there's a one-to-one correspondence with the class name. --bb
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
"Bill Baxter" <dnewsgroup billbaxter.com>
 Yes, newcomers.  4 is less than 10.  That makes you newcomers relative to 
 phobos and the D style guide Walter has had posted up on digitalmars.com 
 that I presume is about as old as phobos.  That's all I meant.
Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.
 As for conventions, it is my opinion that Tango doesn't have to justify 
 the choices made to anyone at this point. It's water under the bridge, 
 just as the some minor stylistic choices in phobos or D are now just 
 water under the bridge. As Walter already noted: Tango can use whatever 
 style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
Are you sure about that? :p
 moving along, I believe Sean's two questions (posted much earlier, which 
 I repeated on his behalf) were intended to elicit some positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;
Nov 18 2007
next sibling parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "Bill Baxter" <dnewsgroup billbaxter.com>
 Yes, newcomers.  4 is less than 10.  That makes you newcomers relative to 
 phobos and the D style guide Walter has had posted up on digitalmars.com 
 that I presume is about as old as phobos.  That's all I meant.
Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.
 As for conventions, it is my opinion that Tango doesn't have to justify 
 the choices made to anyone at this point. It's water under the bridge, 
 just as the some minor stylistic choices in phobos or D are now just 
 water under the bridge. As Walter already noted: Tango can use whatever 
 style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
Are you sure about that? :p
 moving along, I believe Sean's two questions (posted much earlier, which 
 I repeated on his behalf) were intended to elicit some positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;
Why aren't you listening? it's not "simply stylistic"! A...
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
"Alix Pexton"  wrote in message
 Why aren't you listening? it's not "simply stylistic"!
Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "Alix Pexton"  wrote in message
 Why aren't you listening? it's not "simply stylistic"!
Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
I think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
Er, why don't you give us some examples, Alix? That's what we'd be asking 
you for on IRC.



"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
news:fhqs6k$bi2$1 digitalmars.com...
 Kris wrote:
 "Alix Pexton"  wrote in message
 Why aren't you listening? it's not "simply stylistic"!
Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
I think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...
Nov 18 2007
parent reply Christopher Wright <dhasenan gmail.com> writes:
Kris wrote:
 Er, why don't you give us some examples, Alix? That's what we'd be asking 
 you for on IRC.
I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields? This is a stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code. Just curious. I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
 news:fhqs6k$bi2$1 digitalmars.com...
 Kris wrote:
 "Alix Pexton"  wrote in message
 Why aren't you listening? it's not "simply stylistic"!
Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
I think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...
Nov 19 2007
parent reply Sean Kelly <sean f4.ca> writes:
Christopher Wright wrote:
 Kris wrote:
 Er, why don't you give us some examples, Alix? That's what we'd be 
 asking you for on IRC.
I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields?
This is what the D style guide suggests.
 This is
 a stylistic topic that almost no one touches, probably because Tango 
 conventions seem to be lifted wholesale from Java and that's how Java 
 does it, but I find it a bit confusing and annoying when I'm reading 
 someone else's code.
For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".
 I would at least prefix private variables with an underscore, if I were 
 setting the style. But if I want to muck about with Tango's internals, I 
 can suck it up.
I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision. Sean
Nov 19 2007
next sibling parent Christopher Wright <dhasenan gmail.com> writes:
Sean Kelly wrote:
 Christopher Wright wrote:
 Kris wrote:
 Er, why don't you give us some examples, Alix? That's what we'd be 
 asking you for on IRC.
I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields?
This is what the D style guide suggests. > This is
 a stylistic topic that almost no one touches, probably because Tango 
 conventions seem to be lifted wholesale from Java and that's how Java 
 does it, but I find it a bit confusing and annoying when I'm reading 
 someone else's code.
For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".
 I would at least prefix private variables with an underscore, if I 
 were setting the style. But if I want to muck about with Tango's 
 internals, I can suck it up.
I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision. Sean
Groovy, thanks.
Nov 19 2007
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Sean Kelly wrote:
 Christopher Wright wrote:
  > This is
 a stylistic topic that almost no one touches, probably because Tango 
 conventions seem to be lifted wholesale from Java and that's how Java 
 does it, but I find it a bit confusing and annoying when I'm reading 
 someone else's code.
For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".
 I would at least prefix private variables with an underscore, if I 
 were setting the style. But if I want to muck about with Tango's 
 internals, I can suck it up.
I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bb
Nov 19 2007
next sibling parent reply Robert Fraser <fraserofthenight gmail.com> writes:
Bill Baxter Wrote:

 Sean Kelly wrote:
 Christopher Wright wrote:
  > This is
 a stylistic topic that almost no one touches, probably because Tango 
 conventions seem to be lifted wholesale from Java and that's how Java 
 does it, but I find it a bit confusing and annoying when I'm reading 
 someone else's code.
For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".
 I would at least prefix private variables with an underscore, if I 
 were setting the style. But if I want to muck about with Tango's 
 internals, I can suck it up.
I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bb
Why do private members need to be differentiated typographically?
Nov 19 2007
next sibling parent Christopher Wright <dhasenan gmail.com> writes:
Robert Fraser wrote:
 Bill Baxter Wrote:
 
 Sean Kelly wrote:
 Christopher Wright wrote:
  > This is
 a stylistic topic that almost no one touches, probably because Tango 
 conventions seem to be lifted wholesale from Java and that's how Java 
 does it, but I find it a bit confusing and annoying when I'm reading 
 someone else's code.
For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".
 I would at least prefix private variables with an underscore, if I 
 were setting the style. But if I want to muck about with Tango's 
 internals, I can suck it up.
I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bb
Why do private members need to be differentiated typographically?
More that they should be differentiated from locals. It's a reminder that you should be careful to modify the variable, and it means you don't have to read as much or search as much to find the scope of a variable. The extremes are Java and Hungarian notation. Hungarian, from the few examples I've seen, tends to be complex and opaque. Java style only takes a couple extra seconds to parse, but that's multiplied by the number of times you have to read the code. Using a prefix and associating it with a simple property is relatively clear and marks out those variables. The question is, does it actually improve readability to any appreciable degree?
Nov 19 2007
prev sibling next sibling parent Sean Kelly <sean f4.ca> writes:
Robert Fraser wrote:
 
 Why do private members need to be differentiated typographically?
It can increase the clarity of member functions, as a variable prefix avoids the need to place constraints on function parameter names. Also, I find it useful for operations on member data vs. local data to be obvious by inspection. I feel that doing so reduces the chance of bugs and improves readability for maintenance. Sean
Nov 19 2007
prev sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
Robert Fraser wrote:
 Why do private members need to be differentiated typographically?
I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Nov 20 2007
next sibling parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Walter Bright wrote:
 Robert Fraser wrote:
 Why do private members need to be differentiated typographically?
I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Yes they're limited in scope, but that scope can be pretty much an entire file. If the scope of a class is bigger than one or two screenfuls, then flagging members can be helpful. If it's a tiny class where you can see the whole thing on one page, then I agree, differentiating members from parameters and locals is less useful. --bb
Nov 20 2007
prev sibling next sibling parent Sean Kelly <sean f4.ca> writes:
Walter Bright wrote:
 Robert Fraser wrote:
 Why do private members need to be differentiated typographically?
I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Class implementations occupy more than one screen's worth of text, while functions (typically) do not. Labeling member data indicates at a glance that the data is at class scope and not module or global scope. I find that doing so serves as a useful indicator for determining function side-effects and indicating whether mutexes and such are required. I label static members separately for the same reason. Sean
Nov 20 2007
prev sibling parent =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= writes:
Walter Bright wrote:
 Robert Fraser wrote:
 Why do private members need to be differentiated typographically?
I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
I'm in the m_ camp but I use it to flag the intent not the scope. I want a visual clue when I'm modifying the state of the object because I'm terrible at following state changes in my head (Specially with events and multi-threading). For static members I use g_ because they're simply global variables. Stating the scope is (IMHO) a pretty lame reason to add a prefix. The compiler is better at that than I am. It's the same difference between Apps Hungarian and Systems Hungarian: One it's quite useful the other is just silly. -- Julio César Carrascal Urquijo http://jcesar.artelogico.com/
Nov 20 2007
prev sibling next sibling parent reply Sean Kelly <sean f4.ca> writes:
Bill Baxter wrote:
 
 I used to be a big 'm_' guy, but I recently started using trailing 
 underscores for private members.  Started doing that after porting 
 OpenMesh from C++, which uses that convention.  I was amazed at how much 
 more readable all the code looked with the garbage characters appended 
 as a suffix rather than a prefix.  Apparently this style is used some by 
 Boost as well as the ACE library.  Trying to find out where it came from 
 I ran across a quote from someone saying (in 2004) that it's "the de 
 facto cool kids' C++ style".  :-) 
 http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14
 
 I asked the original OpenMesh devs about it and one responded that he 
 used to be in typography before computer science, and from what he 
 learned doing that about how humans read he could say the suffix version 
 is definitely going to be more readable.
I prefer the "m_" prefix specifically because it is more visible than a suffix. Perhaps I simply haven't spent enough time with the suffix form, but I feel that it's easier to miss a trailing underscore. I am also not sure of how I would indicate static member data with a suffix... perhaps myVar_M and myVar_SM? Sean
Nov 19 2007
parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Sean Kelly wrote:
 Bill Baxter wrote:
 I used to be a big 'm_' guy, but I recently started using trailing 
 underscores for private members.  Started doing that after porting 
 OpenMesh from C++, which uses that convention.  I was amazed at how 
 much more readable all the code looked with the garbage characters 
 appended as a suffix rather than a prefix.  Apparently this style is 
 used some by Boost as well as the ACE library.  Trying to find out 
 where it came from I ran across a quote from someone saying (in 2004) 
 that it's "the de facto cool kids' C++ style".  :-) 
 http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14

 I asked the original OpenMesh devs about it and one responded that he 
 used to be in typography before computer science, and from what he 
 learned doing that about how humans read he could say the suffix 
 version is definitely going to be more readable.
I prefer the "m_" prefix specifically because it is more visible than a suffix. Perhaps I simply haven't spent enough time with the suffix form, but I feel that it's easier to miss a trailing underscore.
That's exactly why it's so great. It feels like you're using regular variables instead of ugly hungarian notation, but you still get the benefit of the notation when you're confused or trying to figure out what's what in a function.
 I am also not sure of how I would indicate static member data with a 
 suffix... perhaps myVar_M and myVar_SM?
I guess. I used to do the ms_ for static variables but never found myself confused over whether a variable was static or not. So I dropped it. I guess I just don't use static variables enough or do enough multithreaded programming for it to be an important distinction. If I wasn't clear the convention I was talking about is to use "foo_" for private member vars. So if I wanted to annotate statics, I'd probably try "_s". --bb
Nov 19 2007
prev sibling parent Brian Hay <bhay construct3d.com> writes:
Bill Baxter wrote:
 I used to be a big 'm_' guy, but I recently started using trailing 
 underscores for private members.  Started doing that after porting 
 OpenMesh from C++, which uses that convention.  I was amazed at how much 
 more readable all the code looked with the garbage characters appended 
 as a suffix rather than a prefix.
FWIW I've grown to appreciate the "my" prefix for member variables. There's simply nothing more readable and by that I mean that the ultimate test of code readability is being able to read it ALOUD and have it make perfect sense. Reading "m" or "underscore" or "member" in place of the former two just doesn't cut it for me. :-)
Nov 19 2007
prev sibling next sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 "Bill Baxter" <dnewsgroup billbaxter.com>
 Yes, newcomers.  4 is less than 10.  That makes you newcomers relative to 
 phobos and the D style guide Walter has had posted up on digitalmars.com 
 that I presume is about as old as phobos.  That's all I meant.
Oh that's easy to answer: we understood those to be guidelines only,
Yes, I agree. But if the established guidelines work, you might as well use them...
 and 
 felt that some minor details would need adjustment for our purposes. I 
 recall there was some technical difficulty regarding module names at the 
 time, but don't recall the specifics right now.
.. and if they don't work out then you should have some good reasons why. I just want to know what those reasons are so I can decide if I agree or not. And I think that's what others are really after too, even if they prefix their requests with "You silly tango developers! your keyboard was a hamster and your library smells of elderberries!".
 As for conventions, it is my opinion that Tango doesn't have to justify 
 the choices made to anyone at this point. It's water under the bridge, 
 just as the some minor stylistic choices in phobos or D are now just 
 water under the bridge. As Walter already noted: Tango can use whatever 
 style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
Are you sure about that? :p
Well maybe downs would be if he were participating. :-) Personally, I'd really like to see Tango catch on in a big way. The more of a standard it becomes the more pressure there is on Walter to make sure DMD integrates with it well, and the less library writers have to worry about depending on it in their code. That being the case, I think every nay-sayer needs to have their concerns addressed in a convincing manner. Saying "we had our reasons but I don't recall right now -- and besides your concern is trivial" doesn't convince anyone. Here's another reason to spend some time convincing people to use Tango. My dad is in a much more sales-oriented field than I am and he told me one time about how there are different kinds of customers. Some customers walk in and will take anything you try to sell them. But they'll also just as happily go down the street next week to the other guy and buy from him instead. Other customers ask a lot of questions and require a lot of hand holding -- they're harder to get an initial sale out of, but once you've convinced them, often they're yours for life. They'll even go out of their way to convince *other* people to go to your shop, and ignore things like price differences, just because you've earned their trust. So, I think Sean's doing a good job building up that kind of trust for Tango. When I read his posts I think, "ok these guys have thought through these things, I see the reasoning, and I kind of agree with it. Hmm, maybe I can trust the other decisions Sean has been a part of as well."
 moving along, I believe Sean's two questions (posted much earlier, which 
 I repeated on his behalf) were intended to elicit some positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
The effort is appreciated Bill, but realistically, Tango is not going to change in this manner.
That's cute. You re-post Sean's questions asking for arguments about why to change, then when you get an answer you say "actually we don't care what you answer, Tango's not changing". Well, I'd still like to suss out what the best practices are for D coding so that we can all use them and recommend them unequivocally and with solid reasons to all D coders. Those practices may precisely be the ones used in Tango already. I hope so. As has been noted several times prior, one persons
 stylistic meat is another's stylistic poison. 
The point here that you keep ignoring is that there's more involved than just style or personal preference. The tidbit about module/package name conflicts that Tom S brings up is another good objective reason for using Tango's convention. --bb
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
"Bill Baxter" <dnewsgroup billbaxter.com> wrote ...
 felt that some minor details would need adjustment for our purposes. I 
 recall there was some technical difficulty regarding module names at the 
 time, but don't recall the specifics right now.
See the post from h3 ...
 .. and if they don't work out then you should have some good reasons why. 
 I just want to know what those reasons are so I can decide if I agree or 
 not.  And I think that's what others are really after too, even if they 
 prefix their requests with "You silly tango developers! your keyboard was 
 a hamster and your library smells of elderberries!".
Tired of it, Bill. Some people will always latch onto something because that's just the way they are.
 Here's another reason to spend some time convincing people to use Tango. 
 My dad is in a much more sales-oriented field than I am and he told me one 
 time about how there are different kinds of customers.  Some customers 
 walk in and will take anything you try to sell them.  But they'll also 
 just as happily go down the street next week to the other guy and buy from 
 him instead.  Other customers ask a lot of questions and require a lot of 
 hand holding -- they're harder to get an initial sale out of, but once 
 you've convinced them, often they're yours for life.  They'll even go out 
 of their way to convince *other* people to go to your shop, and ignore 
 things like price differences, just because you've earned their trust.
There's perhaps also a case where some people are just not worth the trouble? Strangely enough, some people would prefer to have no choice, and for Tango to die a horrible death. There's little point in trying to reason with such people. I'm sure you'd agree?
 So, I think Sean's doing a good job building up that kind of trust for 
 Tango.  When I read his posts I think, "ok these guys have thought through 
 these things, I see the reasoning, and I kind of agree with it. Hmm, maybe 
 I can trust the other decisions Sean has been a part of as well."
Good.
 The effort is appreciated Bill, but realistically, Tango is not going to 
 change in this manner.
That's cute. You re-post Sean's questions asking for arguments about why to change, then when you get an answer you say "actually we don't care what you answer, Tango's not changing".
For what is being asked and the reasons given, no. I explained why also (for the fourth time), but you chopped that part off :)
 Well, I'd still like to suss out what the best practices are for D coding 
 so that we can all use them and recommend them unequivocally and with 
 solid reasons to all D coders.  Those practices may precisely be the ones 
 used in Tango already.  I hope so.
That's great! I certainly wish you well and would be mor than happy to participate. I'm not interested in using Tango as some kind of whipping-boy for this exercise though :)
 As has been noted several times prior, one persons
 stylistic meat is another's stylistic poison.
The point here that you keep ignoring is that there's more involved than just style or personal preference.
Please spell them out so that it's clear?
 The tidbit about module/package name conflicts that Tom S brings up is 
 another good objective reason for using Tango's convention.
That's one of the reasons I noted at the beginning, but didn't recall the specifics of.
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:

 Here's another reason to spend some time convincing people to use Tango. 
 My dad is in a much more sales-oriented field than I am and he told me one 
 time about how there are different kinds of customers.  Some customers 
 walk in and will take anything you try to sell them.  But they'll also 
 just as happily go down the street next week to the other guy and buy from 
 him instead.  Other customers ask a lot of questions and require a lot of 
 hand holding -- they're harder to get an initial sale out of, but once 
 you've convinced them, often they're yours for life.  They'll even go out 
 of their way to convince *other* people to go to your shop, and ignore 
 things like price differences, just because you've earned their trust.
There's perhaps also a case where some people are just not worth the trouble? Strangely enough, some people would prefer to have no choice, and for Tango to die a horrible death. There's little point in trying to reason with such people. I'm sure you'd agree?
Yep. There are those. But every cogent, well-reasoned argument you make in the face of blustering just makes you and Tango look better to everyone watching from the sidelines. --bb
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
Reply to Bill:

"Bill Baxter" <dnewsgroup billbaxter.com>

Bill, you may not have seen this response to one of your questions? I'd like 
to hear what it is that I'm supposed to be ignoring, so am copying it here 
again:

 The point here that you keep ignoring is that there's more involved than 
 just style or personal preference.
Please spell them out so that it's clear?
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 Reply to Bill:
 
 "Bill Baxter" <dnewsgroup billbaxter.com>
 
 Bill, you may not have seen this response to one of your questions? I'd like 
 to hear what it is that I'm supposed to be ignoring, so am copying it here 
 again:
 
 The point here that you keep ignoring is that there's more involved than 
 just style or personal preference.
Please spell them out so that it's clear?
Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bb
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
Hrm ... I did look and, apart from some very recent ones from Sean, they 
seem to be style related?



"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
news:fhra2o$rbf$1 digitalmars.com...
 Kris wrote:
 Reply to Bill:

 "Bill Baxter" <dnewsgroup billbaxter.com>

 Bill, you may not have seen this response to one of your questions? I'd 
 like to hear what it is that I'm supposed to be ignoring, so am copying 
 it here again:

 The point here that you keep ignoring is that there's more involved than 
 just style or personal preference.
Please spell them out so that it's clear?
Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bb
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 Hrm ... I did look and, apart from some very recent ones from Sean, they 
 seem to be style related?
So would you like for me to spell it out for you line by line, then? --bb
 "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
 news:fhra2o$rbf$1 digitalmars.com...
 Kris wrote:
 Reply to Bill:

 "Bill Baxter" <dnewsgroup billbaxter.com>

 Bill, you may not have seen this response to one of your questions? I'd 
 like to hear what it is that I'm supposed to be ignoring, so am copying 
 it here again:

 The point here that you keep ignoring is that there's more involved than 
 just style or personal preference.
Please spell them out so that it's clear?
Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bb
Nov 18 2007
parent reply "Kris" <foo bar.com> writes:
Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible 
that I've missed something really important. You'd be doing me a favour by 
spelling it out:

- Kris


"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
news:fhrbsb$td7$1 digitalmars.com...
 Kris wrote:
 Hrm ... I did look and, apart from some very recent ones from Sean, they 
 seem to be style related?
So would you like for me to spell it out for you line by line, then? --bb
 "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
 news:fhra2o$rbf$1 digitalmars.com...
 Kris wrote:
 Reply to Bill:

 "Bill Baxter" <dnewsgroup billbaxter.com>

 Bill, you may not have seen this response to one of your questions? I'd 
 like to hear what it is that I'm supposed to be ignoring, so am copying 
 it here again:

 The point here that you keep ignoring is that there's more involved 
 than just style or personal preference.
Please spell them out so that it's clear?
Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bb
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Kris wrote:
 Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible 
 that I've missed something really important. You'd be doing me a favour by 
 spelling it out:
 
 - Kris
Ok. Will do. Maybe part of what you're not getting is that I'm trying to be impartial here. I want the lowercase defenders to spell out their arguments just as much as I want Tango folks to. I made the list, so that everyone could see the actual arguments side by side, stripped of rhetoric and judge for themselves which convention makes the most sense for D. I tried to characterize both sides best I could. --bb
 
 
 "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
 news:fhrbsb$td7$1 digitalmars.com...
 Kris wrote:
 Hrm ... I did look and, apart from some very recent ones from Sean, they 
 seem to be style related?
So would you like for me to spell it out for you line by line, then? --bb
 "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
 news:fhra2o$rbf$1 digitalmars.com...
 Kris wrote:
 Reply to Bill:

 "Bill Baxter" <dnewsgroup billbaxter.com>

 Bill, you may not have seen this response to one of your questions? I'd 
 like to hear what it is that I'm supposed to be ignoring, so am copying 
 it here again:

 The point here that you keep ignoring is that there's more involved 
 than just style or personal preference.
Please spell them out so that it's clear?
Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bb
Nov 18 2007
parent "Kris" <foo bar.com> writes:
Thanks! I see your list, Bill, and I'll just keep my opinion to myself. 
After all, you're just trying to figure out the right style for you, as you 
had noted earlier.

- Kris


"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message 
news:fhrdfv$vfh$1 digitalmars.com...
 Kris wrote:
 Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible 
 that I've missed something really important. You'd be doing me a favour 
 by spelling it out:

 - Kris
Ok. Will do.
Nov 18 2007
prev sibling parent reply Don Clugston <dac nospam.com.au> writes:
Kris wrote:
 "Bill Baxter" <dnewsgroup billbaxter.com>
 Yes, newcomers.  4 is less than 10.  That makes you newcomers relative to 
 phobos and the D style guide Walter has had posted up on digitalmars.com 
 that I presume is about as old as phobos.  That's all I meant.
Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.
 As for conventions, it is my opinion that Tango doesn't have to justify 
 the choices made to anyone at this point. It's water under the bridge, 
 just as the some minor stylistic choices in phobos or D are now just 
 water under the bridge. As Walter already noted: Tango can use whatever 
 style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
Are you sure about that? :p
 moving along, I believe Sean's two questions (posted much earlier, which 
 I repeated on his behalf) were intended to elicit some positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;
Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background! Ultimately, I suspect that the underlying conflict arises because Tango has heavy Java influence, whereas Phobos is mostly modelled on the C standard library. Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior. As Andrei said before, D can expect a flood of refugees from C++ over the next couple of years. To be hospitable to them, we need to recognize that they'll be suffering from culture shock. This doesn't necessarily mean that Tango needs to change anything, but a more sympathetic attitude is really important. The major stumbling blocks deserve a little explanation. -Don.
Nov 19 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"Don Clugston" <dac nospam.com.au> wrote in message

 Kris -
 I think there's a legitimate concern here which you've been ignoring. It 
 would be helpful to give some background as to why Tango uses the 
 conventions it does. And my guess is that the primary reason Tango uses 
 the conventions it does, is that you have a Java background!
Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, Modula, Ada, C#, etc. To claim that Tango is driven by a Java background is being more than a tad superficial :) Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?
Nov 19 2007
next sibling parent Regan Heath <regan netmail.co.nz> writes:
Kris wrote:
 "Don Clugston" <dac nospam.com.au> wrote in message
 
 Kris -
 I think there's a legitimate concern here which you've been ignoring. It 
 would be helpful to give some background as to why Tango uses the 
 conventions it does. And my guess is that the primary reason Tango uses 
 the conventions it does, is that you have a Java background!
Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, Modula, Ada, C#, etc. To claim that Tango is driven by a Java background is being more than a tad superficial :) Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?
You may recall I made the same assumption a few years back until you put me right :) I think it's the (what I would call) heavy use of classes and interfaces, a very OO style if you will, which to my mind (and I may be strange) says "Java" to me. In actual fact C++ code can be written in the same fashion but it can also be written in what I would call a "C with classes" style. It's hard to put ones finger on the reasons but that is the impression I got and it seems Don had the same impression so there must be something to it... even if that something is that both of us had the same weird and random thought. Regan
Nov 19 2007
prev sibling parent reply Don Clugston <dac nospam.com.au> writes:
Kris wrote:
 "Don Clugston" <dac nospam.com.au> wrote in message
 
 Kris -
 I think there's a legitimate concern here which you've been ignoring. It 
 would be helpful to give some background as to why Tango uses the 
 conventions it does. And my guess is that the primary reason Tango uses 
 the conventions it does, is that you have a Java background!
Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, Modula, Ada, C#, etc. To claim that Tango is driven by a Java background is being more than a tad superficial :)
Perhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels much more familiar. But I also think (as a non-C# programmer) that C# also looks similar to Java (and similarly foreign). This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.
 Now I'm interested: where did you get that notion from, Don? Perhaps because 
 I used it as an example at the conference? 
Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
Nov 19 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
Don Clugston wrote:

 Kris wrote:
 "Don Clugston" <dac nospam.com.au> wrote in message
 
 Kris -
 I think there's a legitimate concern here which you've been ignoring. It
 would be helpful to give some background as to why Tango uses the
 conventions it does. And my guess is that the primary reason Tango uses
 the conventions it does, is that you have a Java background!
Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, Modula, Ada, C#, etc. To claim that Tango is driven by a Java background is being more than a tad superficial :)
Perhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels much more familiar. But I also think (as a non-C# programmer) that C# also looks similar to Java (and similarly foreign). This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.
I used to be a C++ programmer, and based on the styles I used then (not invented by me, btw), would end up very close to what Tango has now. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 19 2007
prev sibling next sibling parent "Kris" <foo bar.com> writes:
"Don Clugston" <dac nospam.com.au> wrote ...
 Kris wrote:
 "Don Clugston" <dac nospam.com.au> wrote in message

 Kris -
 I think there's a legitimate concern here which you've been ignoring. It 
 would be helpful to give some background as to why Tango uses the 
 conventions it does. And my guess is that the primary reason Tango uses 
 the conventions it does, is that you have a Java background!
Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, Modula, Ada, C#, etc. To claim that Tango is driven by a Java background is being more than a tad superficial :)
Perhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels much more familiar. But I also think (as a non-C# programmer) that C# also looks similar to Java (and similarly foreign).
FWIW, I have written mountains of C, so it's not at all unfamiliar to me. At the time I'd encourage people to write structs of pointers to encapsulate library functionality, and place those structs within other in order to gain some better degree of maintainability in very large systems (for 15 years. Actually more than that, but who's counting). It worked for us. Anyway, here's the thing: we decided that the style of Tango would have a somewhat OO flavour, rather than like a C library. This seems to be a common approach with 'modern' libraries so, as I recall, we were quite comfortable making that choice. Perhaps that's the aspect that you're seeing? I don't think it's a Java style per se, although the containers do originate there. Is it perhaps an OO style distinction?
 This isn't a criticism in any way (as an expat, I spend most of my life 
 feeling foreign!), just an observation. Most of the unfavourable comments 
 about the Tango style seem to be coming from C++ programmers, and I think 
 it's related to what they (we) are used to.
(I'm an expat also, so may be used to "feeling foreign" also) You may well have a point there. Yet, this thread is not about the fact that Tango uses some decorator patterns here or there, or that the I/O system is different to C++ (phobos does that also, I expect?). Or that it has a Text class, or FilePath, or whatever. It's not about OO at all. Instead, it is about module names, of all things. I'd really like to say this is wholly relevant to being sympathetic to C++ developers, but it's hard to see the connection. Maybe you can help out there? Let me ask: how does the matter of module names significantly help a C or C++ programmer get used to all the differences in D and any D library? I would have though any significance would be in the language and library design, rather than whether the module names are lowercase, uppercase or camelcase? Isn't this a minor stylistic point instead?
 Now I'm interested: where did you get that notion from, Don? Perhaps 
 because I used it as an example at the conference?
Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
Ah, well the C++ part is true. It's related to why I've been such a D advocate.
Nov 19 2007
prev sibling next sibling parent "Kris" <foo bar.com> writes:
"Don Clugston" <dac nospam.com.au> wrote in message ...

 Long before that. You've mentioned Java a fair bit over the years. I 
 remember that you didn't come from C++, anyway.
Pardon, Don ... I switched subject lines on you. Replied under "Tango Influences" instead, since that seemed to be a more relevent heading.
Nov 19 2007
prev sibling next sibling parent Sean Kelly <sean f4.ca> writes:
Don Clugston wrote:
 
 This isn't a criticism in any way (as an expat, I spend most of my life 
 feeling foreign!), just an observation. Most of the unfavourable 
 comments about the Tango style seem to be coming from C++ programmers, 
 and I think it's related to what they (we) are used to.
I think this is probably true. I am a C++ person myself, and required some convincing before I accepted the Tango style being discussed.
 Now I'm interested: where did you get that notion from, Don? Perhaps 
 because I used it as an example at the conference? 
Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
In all honesty, I've always felt Kris has a Java approach as well, and have said as much before. But that may simply be because I have little experience with Ada, Simula, etc. Sean
Nov 19 2007
prev sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
Don Clugston wrote:
 This isn't a criticism in any way (as an expat, I spend most of my life 
 feeling foreign!), just an observation. Most of the unfavourable 
 comments about the Tango style seem to be coming from C++ programmers, 
 and I think it's related to what they (we) are used to.
I think you've touched on a larger issue. Languages tend to have a look and feel, and if a programmer doesn't like a particular language, they'll tend to associate those bad feelings with that look and feel. For example, in the 80's, the big divide was the C camp and the Pascal camp. The two groups were distinct, and they argued with each other a lot about which was better. Each had a distinct look and feel to their language (and their respective derivative languages). I don't like Pascal. I've deliberately resisted imbuing D with elements that resemble Pascal's look and feel, not only because of my own preference, but because I know that the C camp does not like Pascal and if D adopts a Pascal look, they will be turned off from D. D is deliberately designed so that C/C++ users will quickly feel at home with it.
Nov 19 2007
parent Lars Ivar Igesund <larsivar igesund.net> writes:
Walter Bright wrote:

 Don Clugston wrote:
 This isn't a criticism in any way (as an expat, I spend most of my life
 feeling foreign!), just an observation. Most of the unfavourable
 comments about the Tango style seem to be coming from C++ programmers,
 and I think it's related to what they (we) are used to.
I think you've touched on a larger issue. Languages tend to have a look and feel, and if a programmer doesn't like a particular language, they'll tend to associate those bad feelings with that look and feel. For example, in the 80's, the big divide was the C camp and the Pascal camp. The two groups were distinct, and they argued with each other a lot about which was better. Each had a distinct look and feel to their language (and their respective derivative languages). I don't like Pascal. I've deliberately resisted imbuing D with elements that resemble Pascal's look and feel, not only because of my own preference, but because I know that the C camp does not like Pascal and if D adopts a Pascal look, they will be turned off from D. D is deliberately designed so that C/C++ users will quickly feel at home with it.
And I have to say again - the C++ libraries I have used all make me more comfortable with Tango's style than Phobos' style. And they are darn popular C++ libraries too. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 19 2007
prev sibling parent reply Christopher Wright <dhasenan gmail.com> writes:
Don Clugston wrote:
 Kris wrote:
 "Bill Baxter" <dnewsgroup billbaxter.com>
 Yes, newcomers.  4 is less than 10.  That makes you newcomers 
 relative to phobos and the D style guide Walter has had posted up on 
 digitalmars.com that I presume is about as old as phobos.  That's all 
 I meant.
Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.
 As for conventions, it is my opinion that Tango doesn't have to 
 justify the choices made to anyone at this point. It's water under 
 the bridge, just as the some minor stylistic choices in phobos or D 
 are now just water under the bridge. As Walter already noted: Tango 
 can use whatever style it wants.
Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.
Are you sure about that? :p
 moving along, I believe Sean's two questions (posted much earlier, 
 which I repeated on his behalf) were intended to elicit some 
 positive feedback?
Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;
Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background! Ultimately, I suspect that the underlying conflict arises because Tango has heavy Java influence, whereas Phobos is mostly modelled on the C standard library. Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily. I'm not so certain that encountering three nested packages before a module is an advantage in itself, even if those packages are well organized (for instance, NOT lumping collections in with a whole bunch of random date/time and logging stuff -- I think Tango might benefit from dumping all the packages under util into the tango package). You might be able to find the file you're working on more easily with deeper structure. It might be a frequent issue when you're working with a GUI that doesn't allow you to type a file name to select and open that file. That's the best argument I see at the moment. You've more experience than I, I'm sure, so you probably have good arguments in favor of a deeper hierarchy for your code. I'd like to hear them. And please, if I go on to argue with you about it, point me to this paragraph saying that I'm only looking for information, not a flamewar.
 As Andrei said before, D can expect a flood of refugees from C++ over 
 the next couple of years. To be hospitable to them, we need to recognize 
 that they'll be suffering from culture shock. This doesn't necessarily 
 mean that Tango needs to change anything, but a more sympathetic 
 attitude is really important. The major stumbling blocks deserve a 
 little explanation.
 
 -Don.
Nov 19 2007
next sibling parent reply Sean Kelly <sean f4.ca> writes:
Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation. Sean
Nov 19 2007
next sibling parent Walter Bright <newshound1 digitalmars.com> writes:
Sean Kelly wrote:
 This is why I like deeper hierarchies.  I tend to look at the code 
 itself for reference more often than the documentation itself, so it's 
 nice to have the code grouped in a manner that matches the documentation.
I like flatter ones, probably because I'm too lazy to type out the long names.
Nov 20 2007
prev sibling parent reply Christopher Wright <dhasenan gmail.com> writes:
Sean Kelly wrote:
 Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.
One could argue that you just need better documentation. Also, this hierarchical documentation could be as simple as "if you want to accomplish this task, you should look at this module", and then it's O(1) to get to the file in the flat structure, not O(log n) as with the hierarchical one. And again, you only have to write a module once, but you read it many times. When you're reading it, you know exactly which modules it references, so a flat structure is faster. Also, a documentation hierarchy can be entirely independent of the code hierarchy, so you would put your collection documentation in the collections folder, not util/collections, so it's more easily discovered. Or other things like that, where the structure of your packages is not desirable but you can't change it immediately due to legacy code. I don't recall ever having browsed through the source of a library in search of some functionality; it's always been a particular module. The documentation is where I search first. I guess I'll be using Tango more when it has a stable D2 release and I have a good IDE that can auto-import for me.
Nov 20 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
Christopher Wright wrote:

 Sean Kelly wrote:
 Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which
 hasn't been mentioned, is that Phobos uses a flat structure (except
 for a couple of things like std.c.windows.windows!). IMHO, the flat
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.
 
 And again, you only have to write a module once, but you read it many
 times. When you're reading it, you know exactly which modules it
 references, so a flat structure is faster.
I think an open source project have it's code browsed very often, and even modified/mantained regularly - so I do think Sean has a point. As with everything else, there are many opinions though. I tend to like deep more than flat, even if I see pros for the flat hierarchy. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 20 2007
prev sibling next sibling parent reply Matti Niemenmaa <see_signature for.real.address> writes:
Christopher Wright wrote:
 Also, this hierarchical documentation could be as simple as "if you want
 to accomplish this task, you should look at this module", and then it's
 O(1) to get to the file in the flat structure, not O(log n) as with the
 hierarchical one.
Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy. Taking L as the average length of a file in the hierarchical structure, it's l/n where n is the total number of modules into which the l-length module has been split. Thus the hierarchical one is O(l/n + d) where d is O(n), so it comes down to O(l) versus O(l/n + n), of which the former grows faster. And of course, you still need to find the documentation first, too... ;-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
next sibling parent Sean Kelly <sean f4.ca> writes:
Matti Niemenmaa wrote:
 Christopher Wright wrote:
 Also, this hierarchical documentation could be as simple as "if you want
 to accomplish this task, you should look at this module", and then it's
 O(1) to get to the file in the flat structure, not O(log n) as with the
 hierarchical one.
Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy.
I just woke up and your math is confusing me :-) I like two things about hierarchical structures: first, logically grouped things are typically grouped in a directory, and second, if I have a rough idea where to look then I get fewer false hits with grep. In large code bases, this can be a real time-saver. Sean
Nov 20 2007
prev sibling parent reply Christopher Wright <dhasenan gmail.com> writes:
Matti Niemenmaa wrote:
 Christopher Wright wrote:
 Also, this hierarchical documentation could be as simple as "if you want
 to accomplish this task, you should look at this module", and then it's
 O(1) to get to the file in the flat structure, not O(log n) as with the
 hierarchical one.
Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy. Taking L as the average length of a file in the hierarchical structure, it's l/n where n is the total number of modules into which the l-length module has been split. Thus the hierarchical one is O(l/n + d) where d is O(n), so it comes down to O(l) versus O(l/n + n), of which the former grows faster.
You're saying that having fewer large modules is a direct consequence of having a flat structure and having many modules is a direct consequence of having a hierarchical structure. I disagree with that.
 And of course, you still need to find the documentation first, too... ;-)
 
Nov 20 2007
parent Matti Niemenmaa <see_signature for.real.address> writes:
Christopher Wright wrote:
 You're saying that having fewer large modules is a direct consequence of
 having a flat structure and having many modules is a direct consequence
 of having a hierarchical structure. I disagree with that.
You're right, of course. Sorry, don't know where I got that from. However, I still think the speed of finding a file given that you know where it is is at least approximately the same. Informally, I find it quicker to browse through 4 directories and then pick the right file out of 8, than to find the right file out of 32, for instance. YMMV. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
prev sibling parent Sean Kelly <sean f4.ca> writes:
Christopher Wright wrote:
 Sean Kelly wrote:
 Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.
One could argue that you just need better documentation.
Certainly. But I've come to accept that the existence of any documentation at all is a rare thing, and its accuracy is equally rare. Documentation also assumes the documented code is bug-free. Sean
Nov 20 2007
prev sibling parent reply Don Clugston <dac nospam.com.au> writes:
Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. I think it's perfectly reasonable to have a fairly large number (say twenty, maybe many more) entries on each level. That gives 20*20*20 = 8000 modules with just a three-level structure. But 8000 modules in one directory would be insane. Pretty soon, all the good names are taken. For the more obscure things, you find yourself wanting to include the root name inside the module name. Two examples in Phobos are 'socketstream' and 'metastrings'. As Phobos expands, it will get worse. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep; I hope I never have to use tango.net.cluster.tina.util.model.IServer; I think tango.util.collection.HashMap is way too much to type for something so fundamental). But it has room to expand.
Nov 26 2007
next sibling parent reply Aarti_pl <aarti interia.pl> writes:
Don Clugston pisze:
 Personally, parts of Tango's structure are a bit too deep for my liking. 
 (I don't think frequently used stuff should be more that a couple of 
 levels deep;
 I hope I never have to use tango.net.cluster.tina.util.model.IServer; I 
 think tango.util.collection.HashMap is way too much to type for 
 something so fundamental). But it has room to expand.
 
Yup. First one is definitely too deep. In case of second one I really don't like Java approach of putting collections into util package. IMHO collections are too fundamental in language for being threated just as part of util. It would be much nicer to have: tango.collection package instead. BR Marcin Kuszczak (aarti_pl)
Nov 26 2007
parent Aarti_pl <aarti interia.pl> writes:
Aarti_pl pisze:
 Don Clugston pisze:
 Personally, parts of Tango's structure are a bit too deep for my 
 liking. (I don't think frequently used stuff should be more that a 
 couple of levels deep;
 I hope I never have to use tango.net.cluster.tina.util.model.IServer; 
 I think tango.util.collection.HashMap is way too much to type for 
 something so fundamental). But it has room to expand.
Yup. First one is definitely too deep. In case of second one I really don't like Java approach of putting collections into util package. IMHO collections are too fundamental in language for being threated just as part of util. It would be much nicer to have: tango.collection package instead.
And: tango.util.time --> tango.time tango.util.Convert --> tango.convert.Convert (after quick look into tango.util). Above are too fundamental to exist in util. These are basic concepts in every programming language. BR Marcin Kuszczak (aarti_pl)
Nov 26 2007
prev sibling parent reply darrylb <noemail example.com> writes:
Don Clugston Wrote:

 Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep;
Ok, I usually just lurk and sit back and eat popcorn while reading the flames her e but I just had to comment... Are you serious? You're worried about typing out a few extra characters in your import? Seriously, how much extra time is typing out maybe 10-20 characters going to cost you, as compared to say, writing the actual code for the module? I'm not meaning to pick here but.. this just seems so inconsequential as to not even be worthy of mentioning. If a slightly deeper structure leads to all sorts of benefits (logical separation, better segmentation of generated documentation, future-proofing expansion, etc) I really don't mind the extra 5 seconds to type out a bit more at the top of a module that I'll probably be working on for _much_ longer. Less typing? Sure, but the act of physically pressing keys and getting characters on the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus 'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it works. After you're finished the 'pain' of typing that out once, you can always cut & paste it into other modules if it's that big of a deal :P
Nov 26 2007
next sibling parent reply "David Wilson" <dw botanicus.net> writes:
On 11/26/07, darrylb <noemail example.com> wrote:

 Actually, I agree. I advocate shallow heirachies, not deep ones. But a
 completely flat heirarchy is not the same as a shallow one.

 Personally, parts of Tango's structure are a bit too deep for my liking. (I
 don't think frequently used stuff should be more that a couple of levels deep;
 Are you serious? You're worried about typing out a few extra characters in
your import? Seriously, how much extra time is typing out maybe 10-20
characters going to cost you, as compared to say, writing the actual code for
the module?
 I'm not meaning to pick here but.. this just seems so inconsequential as to
not even be worthy of mentioning.
I doubt this has anything to do with number of characters typed, at least not in my case. My problem with deep nestings is that I simply do not remember them. When you have on average a single word per module ala. Python or Phobos, remembering where a class lives involves recalling a single english-sounding word, which my brain is excellently geared for. There are variations of this theme, but that is basically it. I know that any filesystem functions in Phobos lives in std.path, std.file, std.stream, std.stdio. If I had to guess the same about Tango, I might go searching the docs for words like "conduit" which bare no resemblance to what I'm actually trying to achieve. Just suggesting that for some people, this issue has more substance to it than merely a matter of style. David.
 If a slightly deeper structure leads to all sorts of benefits (logical
separation, better segmentation of generated documentation, future-proofing
expansion, etc) I really don't mind the extra 5 seconds to type out a bit more
at the top of a module that I'll probably be working on for _much_ longer. Less
typing? Sure, but the act of physically pressing keys and getting characters on
the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus
'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it
works. After you're finished the 'pain' of typing that out once, you can always
cut & paste it into other modules if it's that big of a deal :P
Nov 26 2007
parent darrylb <noemail example.com> writes:
David Wilson Wrote:
 I doubt this has anything to do with number of characters typed, at
 least not in my case. My problem with deep nestings is that I simply
 do not remember them. When you have on average a single word per
 module ala. Python or Phobos, remembering where a class lives involves
 recalling a single english-sounding word, which my brain is
 excellently geared for.
 
 There are variations of this theme, but that is basically it. I know
 that any filesystem functions in Phobos lives in std.path, std.file,
 std.stream, std.stdio. If I had to guess the same about Tango, I might
 go searching the docs for words like "conduit" which bare no
 resemblance to what I'm actually trying to achieve.
 
 Just suggesting that for some people, this issue has more substance to
 it than merely a matter of style.
Ok, I hear what you're saying, but I think it becomes much less relevant as the library grows. Memorizing a list of 10 items isn't so bad, but when that grows to 100, or 1000, there needs to be some sort of mechanism in place to make coherant sense of said items. That's mostly what the module pathing is for. So that, when you aren't sure exactly what you want, but you know that you need some sort of X that is itself some sort of Y, that you are likely to find it in library.Y.X, which you can look in (and look for the documentation in) rather than some libraryYX module that's mixed in with 900 others. For smaller libs that you are mostly going to keep in your head, then maybe a flatter structure would work. But I think it's forward-thinking of a lib that will become larger to be slighly extended. And the cluster example is very extreme, for the most part, we're talking about adding one layer, in rare cases, possibly two. I think that's a very acceptable trade off for being able to keep some semblance of sanity via logical separations. I suppose perhaps on another level, this discussion is more akin to, the more complex things get, the more complex they are. :). The (mildly) extended structure is in place simply to manage complexity, If it helps there, and the adversion to typing a few extra characters is only a psychological block to a solution for a real problem, while I agree that the imaginary issue can entirely be present (for some more than others), I don't think it should trump an otherwise fine solution to a very real problem (managing present and future complexity). I mean, I don't like dialing area codes for long distance either, but hey, it sure helps to manage the complexity of phone numbers, and my complaints about hitting a few extra buttons to call someplace are far outweighed by other benefits. :). Ok, it's a questionable analogy, but I just thought I'd throw it in anyway :). I still think 'tango.collection' versus 'tango.util.collection' is quite nitpicky.
Nov 26 2007
prev sibling parent Oskar Linde <oskar.lindeREM OVEgmail.com> writes:
darrylb wrote:
 Don Clugston Wrote:
 
 Christopher Wright wrote:
 Don Clugston wrote:
 Incidentally, one stylistic change between Phobos and Tango which 
 hasn't been mentioned, is that Phobos uses a flat structure (except 
 for a couple of things like std.c.windows.windows!). IMHO, the flat 
 structure is decidedly inferior.
Why is that? I work on a decently sized (40k lines) project in C#, and we're moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep;
Ok, I usually just lurk and sit back and eat popcorn while reading the flames her e but I just had to comment... Are you serious? You're worried about typing out a few extra characters in your import? Seriously, how much extra time is typing out maybe 10-20 characters going to cost you, as compared to say, writing the actual code for the module? I'm not meaning to pick here but.. this just seems so inconsequential as to not even be worthy of mentioning. If a slightly deeper structure leads to all sorts of benefits (logical separation, better segmentation of generated documentation, future-proofing expansion, etc) I really don't mind the extra 5 seconds to type out a bit more at the top of a module that I'll probably be working on for _much_ longer. Less typing? Sure, but the act of physically pressing keys and getting characters on the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus 'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it works. After you're finished the 'pain' of typing that out once, you can always cut & paste it into other modules if it's that big of a deal :P
You are probably 100 % right that for a fully rational person those few extra seconds you spend typing a longer module name won't make any difference at all in the long run when it comes to productivity, but we humans are irrational. I'd say there are at least three more or less rational reasons why excessively long names are bad: First, there is probably a psychological drive to minimize the effort we spend on doing things. We seem to have a bias towards overestimating the effort required for non-stimulating tasks while often underestimating the stimulating ones. Typing out a longer module name will feel like it would require much more effort than it actually would. For example, I'm betting that the number of uses for delegate literals in D increased quite tremendously when the short form (purely syntactical sugar) was introduced a while ago -- and that for very irrational reasons. Secondly, thinking about a longer and more complex name requires greater cognitive effort, wasting resources better spent elsewhere. There are actually very few things we (or at least I :) ) can keep in mind at the same time. Lowering the apparent complexity of something makes it more likely to be used. Thirdly, recalling a deeply nested name is much harder. Short names can be recalled as a single unit, while a name such as tango.net.cluster.tina.util.model.IServer probably requires several recursive memory fetch calls, flushing valuable caches in the process. :) -- Oskar
Nov 26 2007
prev sibling parent reply Sean Kelly <sean f4.ca> writes:
Bill Baxter wrote:
 
 The Tango convention may be better for all I know, but I don't recall 
 hearing any compelling arguments in favor of why a change was needed. If 
 they were given and I just forgot them, then sorry.  I do recall hearing 
 unsubstantiated claims like "we found it was better" or "we found the 
 phobos convention to be insufficient" etc, but I don't recall any actual 
 good arguments that made me go "hmm ah, yes indeed".  Anyway given that 
 this topic continues to come up, it seems it would be a good idea to 
 collect all these reasons on a page over at tango.dsource.org.
I think some of the reasons may be there already, but the page is broken (for me anyway) so I can't tell you where to look. I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background. But as Tango has grown I've come to appreciate the readability that the scheme provides. For example, many of the module names in Tango are multi-word combinations: DeviceConduit, MemoryConduit, EndianProtocol, VirtualFolder, etc. I feel that eliminating the caps in these names would render them largely unreadable: deviceconduit, memoryconduit, endianprotocol, virtualfolder... The C/C++ way would be to find some abbreviated form instead, but I hesitate to think that such names would be more clear. I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead. As for capitalization being confusing for people using case-sensitive vs. case-insensitive filesystems, I suppose this is a problem I have simply never been exposed to. D is a case-sensitive language, so I would expect people using D to not make mistakes regarding capitalization, particularly when the capitalization in this case follows a simple and established convention (even if that convention doesn't match what is in the D style guide). Has this truly been a problem? Finally, I'll admit to being a bit baffled about what the big deal is anyway. The C/C++ standard library uses lowercase for /everything/, type names included, and I've yet to see someone complain to the various committees about this, even when third party libraries for the same language follow a different convention. And things are even worse in C++ because the library relies on specifically named typedefs to operate, so the convention there is viral by necessity. Regarding D, Phobos, and Tango, I think the differences between the Phobos and the Tango convention are small potatoes. Import lines may look a bit different, but /that's it/. The only other difference in style concerns global objects, of which Tango has perhaps 3-4, all of which could be aliased to something else or wrapped in about ten seconds. How can such an issue possibly be enough to discuss so much, let alone to use as grounds to reject a library entirely? Frankly, if this is the worst thing that people have to say about Tango then I think the project has succeeded beyond my wildest expectations. Sean
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Sean Kelly wrote:
 Bill Baxter wrote:
Excellent flame-free technical post addressing the issues Sean. Thanks.
 The Tango convention may be better for all I know, but I don't recall 
 hearing any compelling arguments in favor of why a change was needed. 
 If they were given and I just forgot them, then sorry.  I do recall 
 hearing unsubstantiated claims like "we found it was better" or "we 
 found the phobos convention to be insufficient" etc, but I don't 
 recall any actual good arguments that made me go "hmm ah, yes 
 indeed".  Anyway given that this topic continues to come up, it seems 
 it would be a good idea to collect all these reasons on a page over at 
 tango.dsource.org.
I think some of the reasons may be there already, but the page is broken (for me anyway) so I can't tell you where to look. I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background. But as Tango has grown I've come to appreciate the readability that the scheme provides. For example, many of the module names in Tango are multi-word combinations: DeviceConduit, MemoryConduit, EndianProtocol, VirtualFolder, etc. I feel that eliminating the caps in these names would render them largely unreadable: deviceconduit, memoryconduit, endianprotocol, virtualfolder... The C/C++ way would be to find some abbreviated form instead, but I hesitate to think that such names would be more clear.
I agree that deviceconduit is atrocious. But the official C++/STL/Boost way is to use underscores: #include <hash_map> #include <boost/shared_ptr.hpp> etc.. So it could be device_conduit. But then again as you mention below, in C++/STL/Boost the naming convention for files *and* classes *and* methods is lowercase w/ underscores. So you could say the file names are just being consistent with the class names.
 I suppose one could argue that following the Java approach in Tango 
 results in unneeded redundancies, such as the DeviceConduit module 
 containing a DeviceConduit class, but again, I would argue that choosing 
 an arbitrary name to avoid these redundancies would reduce clarity.  As 
 it is, I know that if I want to use a DeviceConduit in my app, I just 
 have to import tango.io.DeviceConduit.  There is no need to remember 
 that the class actually lives in tango.io.blah instead.
That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
 As for capitalization being confusing for people using case-sensitive 
 vs. case-insensitive filesystems, I suppose this is a problem I have 
 simply never been exposed to.  D is a case-sensitive language, so I 
 would expect people using D to not make mistakes regarding 
 capitalization, particularly when the capitalization in this case 
 follows a simple and established convention (even if that convention 
 doesn't match what is in the D style guide).  Has this truly been a 
 problem?
Yeh, I don't really understand the fuss either. I use C++ libraries that have mixed case headers all the time on Windows, and the exact same issues apply as far as I know. A lot of big, well-respected libraries use this, such as Qt and OpenSceneGraph. On the other hand wxWidgets doesn't. They use the randomized compression algorithm you speak of to make a short name out of a long name. Oooh I hate that.
 Finally, I'll admit to being a bit baffled about what the big deal is 
 anyway.  The C/C++ standard library uses lowercase for /everything/, 
 type names included, and I've yet to see someone complain to the various 
 committees about this, even when third party libraries for the same 
 language follow a different convention.  And things are even worse in 
 C++ because the library relies on specifically named typedefs to 
 operate, so the convention there is viral by necessity.
I've heard complaining. I've even been a complainer (before I started liking lower_case names :-P). But I never felt there was any hope in my complaints leading to a change. That's where D and Tango are different. :-)
 Regarding D, Phobos, and Tango, I think the differences between the 
 Phobos and the Tango convention are small potatoes.  Import lines may 
 look a bit different, but /that's it/.  The only other difference in 
 style concerns global objects, of which Tango has perhaps 3-4, all of 
 which could be aliased to something else or wrapped in about ten 
 seconds.  How can such an issue possibly be enough to discuss so much, 
 let alone to use as grounds to reject a library entirely?  Frankly, if 
 this is the worst thing that people have to say about Tango then I think 
 the project has succeeded beyond my wildest expectations.
I agree with you there. I find that as long as something is consistent, you can get used to it, and maybe even like it after you get past your initial revulsion. But I don't actually find Tangos module naming disagreeable. I'd prefer coarser granularity than one-file-one-class, but that can be fixed easily with a few public import modules. I'm more interested in figuring what convention really makes the most sense for D overall. Since what ever it is I'd like to follow it in my own libraries too. I'm not sure what it is yet. But it doesn't seem to me that just using what language X uses turns out so well. C++ has a more flexible mapping of files to namespaces than D, so C++ conventions don't work so well. Java with one-file-per-class and every file named after the class doesn't work so well with D where there are legitimate reasons to put two major classes in one file (or maybe no classes at all). And there's also the redundancy issue with using the Java naming convention. Here's an example from my porting of OpenMesh from C++ to D. OpenMesh has a class OpenMesh::IO::Options defined in the file OpenMesh/Core/IO/Options.hh. Trying to make as few changes as possible, I named the module OpenMesh.Core.IO.Options. But it's been annoying me to no end because "Options" is such a generic name I never want to import that into my main namespace. But I think that as an FQN it's a great name, except that the actual class is called ...IO.Options.Options. --bb
Nov 18 2007
next sibling parent reply Sean Kelly <sean f4.ca> writes:
Bill Baxter wrote:
 Sean Kelly wrote:
 
 I suppose one could argue that following the Java approach in Tango 
 results in unneeded redundancies, such as the DeviceConduit module 
 containing a DeviceConduit class, but again, I would argue that 
 choosing an arbitrary name to avoid these redundancies would reduce 
 clarity.  As it is, I know that if I want to use a DeviceConduit in my 
 app, I just have to import tango.io.DeviceConduit.  There is no need 
 to remember that the class actually lives in tango.io.blah instead.
That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
It's not true of every module, because as you say, not every module contains any classes at all. But for the classes that do exist in Tango, in the vast majority of cases they live in a module of the same name. The most obvious exception being modules with one 'primary' class and a number of related classes. tango.core.Thread, for example, contains Thread, ThreadLocal, and ThreadGroup. I'll admit that I find this correspondence most useful when dealing with Tango's IO package however, because it is so heavily modular. In fact, this modularity is the reason there are few aggregate modules. Tango is designed in a manner that largely avoids unused code being linked into an application by spreading it across multiple modules. One may argue that block-level linking would mostly solve this problem as well, but it currently does not work with D, and things like static data, module ctors, etc, would not be omitted even with this feature.
 Finally, I'll admit to being a bit baffled about what the big deal is 
 anyway.  The C/C++ standard library uses lowercase for /everything/, 
 type names included, and I've yet to see someone complain to the 
 various committees about this, even when third party libraries for the 
 same language follow a different convention.  And things are even 
 worse in C++ because the library relies on specifically named typedefs 
 to operate, so the convention there is viral by necessity.
I've heard complaining. I've even been a complainer (before I started liking lower_case names :-P). But I never felt there was any hope in my complaints leading to a change. That's where D and Tango are different. :-)
Touche. :-)
 Regarding D, Phobos, and Tango, I think the differences between the 
 Phobos and the Tango convention are small potatoes.  Import lines may 
 look a bit different, but /that's it/.  The only other difference in 
 style concerns global objects, of which Tango has perhaps 3-4, all of 
 which could be aliased to something else or wrapped in about ten 
 seconds.  How can such an issue possibly be enough to discuss so much, 
 let alone to use as grounds to reject a library entirely?  Frankly, if 
 this is the worst thing that people have to say about Tango then I 
 think the project has succeeded beyond my wildest expectations.
I agree with you there. I find that as long as something is consistent, you can get used to it, and maybe even like it after you get past your initial revulsion. But I don't actually find Tangos module naming disagreeable. I'd prefer coarser granularity than one-file-one-class, but that can be fixed easily with a few public import modules.
In my experience, nearly every project has slightly different demands and it is impossible for a single library to exactly meet all of those demands. However, I feel that it is the mark of a good library if it can be adapted to every project with little effort, little undesired overhead, and by not imposing design restrictions on the application by virtue of the library's own design. Tango is intended to provide a framework and style guide for application programming more than to include a tool for every job. This is the true reason for all the interface modules--they allow the user to build upon the library in a way which will most likely be portable to other applications. At the same time, Tango avoids hidden costs wherever possible. Almost no memory allocations are performed behind the scenes, exceptions are not used as a means of flow control, and so on. And finally, the library is divided into a very granular set of modules to allow the user to link only the code she actually intends to use. However, this aim towards customizability does increase the learning curve associated with Tango. Often it is not obvious just what to import to perform simple operations, and it is often necessary to import quite a few modules for an average task. Also, some users find the lack of convenience functions somewhat daunting. These are all areas where we are trying to improve Tango, but I personally feel that such an effort can only ever be moderately successful. This is because, as I said earlier, every application has slightly different requirements, and such convenience functions must necessarily assume a specific set of requirements. So I would expect such functions to be most useful to a novice programmer and for one-off projects rather than for industrial-grade applications. Sorry for being so long winded, but this is the basic rationale behind Tango's current design. Given this, I think our greatest challenge is probably making the library more accessible to new users. If you or anyone else has suggestions for this or anything else, then please let us know either here or in the Tango forums. I deal almost exclusively with rather obscure parts of the library, so I tend to forget about the high-level issues people face with Tango.
 Here's an example from my porting of OpenMesh from C++ to D.  OpenMesh 
 has a class OpenMesh::IO::Options defined in the file 
 OpenMesh/Core/IO/Options.hh.  Trying to make as few changes as possible, 
 I named the module OpenMesh.Core.IO.Options.  But it's been annoying me 
 to no end because "Options" is such a generic name I never want to 
 import that into my main namespace.  But I think that as an FQN it's a 
 great name, except that the actual class is called ...IO.Options.Options.
I'll admit that the double name "Options.Options" thing drives me crazy sometimes. But I haven't come up with any language feature to improve on that. So far, I just use selective imports, aliasing, etc, to make my code more compact. Sean
Nov 18 2007
parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Sean Kelly wrote:

 However, this aim towards customizability does increase the learning 
 curve associated with Tango.  Often it is not obvious just what to 
 import to perform simple operations, and it is often necessary to import 
 quite a few modules for an average task.  Also, some users find the lack 
 of convenience functions somewhat daunting.  These are all areas where 
 we are trying to improve Tango, but I personally feel that such an 
 effort can only ever be moderately successful.  This is because, as I 
 said earlier, every application has slightly different requirements, and 
 such convenience functions must necessarily assume a specific set of 
 requirements.  So I would expect such functions to be most useful to a 
 novice programmer and for one-off projects rather than for 
 industrial-grade applications.
 
 Sorry for being so long winded, but this is the basic rationale behind 
 Tango's current design.  Given this, I think our greatest challenge is 
 probably making the library more accessible to new users.  If you or 
 anyone else has suggestions for this or anything else, then please let 
 us know either here or in the Tango forums.  I deal almost exclusively 
 with rather obscure parts of the library, so I tend to forget about the 
 high-level issues people face with Tango.
 I'll admit that the double name "Options.Options" thing drives me crazy 
 sometimes.  But I haven't come up with any language feature to improve 
 on that.  So far, I just use selective imports, aliasing, etc, to make 
 my code more compact.
Asking for a feature where class package.Options.Options can be accessed as just package.Options seems a decent idea at first -- the same trick works for templates after all -- but I don't think it would pan out. Other than that I don't see any other obvious language-level changes that would fix it. So maybe we're stuck with Options.Options. One thing that might help make long package names seem less annoying generally would be aliases for packages, or a package "with". alias tango.util.collection TUC; import TUC.ArrayBag; import TUC.LinkSeq; Or with (tango.util.collection) { import ArrayBag; import LinkSeq; } Or import tango.util.collection : ArrayBag, LinkSeq Given that you _can_ have "Net.d" and "net/" in the same directory, thanks to Tango's naming convention, maybe tango could provide some coarser granularity imports via up-cased directory names. So "import tango.Net" would give you all the commonly needed net stuff. "import tango.net.Cluster" would give you the important stuff from cluster/*.d I guess it's not so different from the "all.d" But I think it has more legs than all.d. With all.d you're pretty much promising that it's going to have everything, and it better be everything or people will be confused why "import tango.net.all" doesn't really import *everything* from tango.net. If you need variations, you're stuck. And making a convention of other "all"-like modules gets you into a wierd area of violating your own style conventions whereby modules should be uppercase. Whereas you could easily have variations with what I'm suggesting: "import tango.Net" -- all major tango.net stuff, "import tango.NetBase" just the fundamental net stuff without all the subdirs. Just an idea. Not sure how much I like it not having used Tango much. --bb
Nov 18 2007
parent reply Walter Bright <newshound1 digitalmars.com> writes:
Bill Baxter wrote:
 Asking for a feature where class package.Options.Options can be accessed 
 as just package.Options seems a decent idea at first -- the same trick 
 works for templates after all -- but I don't think it would pan out. 
You're right, templates do that, but it's a risky feature because it's essentially a special case hack. Anytime you do something like that, it can have subtle, unintended consequences. My dislike of it has been one of the motivators for changing the syntax: template Foo(T) { class Foo { ... } } has become: class Foo(T) { ... } where the hack is not necessary.
Nov 19 2007
parent Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Walter Bright wrote:

 Bill Baxter wrote:
 Asking for a feature where class package.Options.Options can be accessed
 as just package.Options seems a decent idea at first -- the same trick
 works for templates after all -- but I don't think it would pan out.
You're right, templates do that, but it's a risky feature because it's essentially a special case hack. Anytime you do something like that, it can have subtle, unintended consequences. My dislike of it has been one of the motivators for changing the syntax: template Foo(T) { class Foo { ... } } has become: class Foo(T) { ... } where the hack is not necessary.
You could have made class Foo(T) {} a synonym for anonym template + class declaration. Still there's the problem that you may sometimes want to change the nested symbol type based on template parameters so the special case trick is still needed: template Sacrifice(int i) { static if (i == 666) class Virgin {} else class Goat {} } The c++ way would avoid the special case, but I guess the reason for static if was that it's "easier". What can you do, templates are damn verbose a language for doing functional stuff.. I personally don't like the static if since it tends to add redundancy - you need to write the same alias/const foo = blahblah several times. You could loan syntax from functional languages, but it might be hard to accommodate to a C-like language.
Nov 19 2007
prev sibling parent reply Don Clugston <dac nospam.com.au> writes:
Bill Baxter wrote:
 Sean Kelly wrote:
 Bill Baxter wrote:
Excellent flame-free technical post addressing the issues Sean. Thanks.
 I suppose one could argue that following the Java approach in Tango 
 results in unneeded redundancies, such as the DeviceConduit module 
 containing a DeviceConduit class, but again, I would argue that 
 choosing an arbitrary name to avoid these redundancies would reduce 
 clarity.  As it is, I know that if I want to use a DeviceConduit in my 
 app, I just have to import tango.io.DeviceConduit.  There is no need 
 to remember that the class actually lives in tango.io.blah instead.
That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
Quite true -- the fact that D allows free functions means that Java styles are not sufficient. BTW - it used to be called tango.math.Core, the idea being that any library could have its basic functions in a file called 'Core.d', but unfortunately there were linker issues (can't have two obj files both called core.obj).
Nov 19 2007
next sibling parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Don Clugston wrote:
 Bill Baxter wrote:
 Sean Kelly wrote:
 Bill Baxter wrote:
Excellent flame-free technical post addressing the issues Sean. Thanks.
 I suppose one could argue that following the Java approach in Tango 
 results in unneeded redundancies, such as the DeviceConduit module 
 containing a DeviceConduit class, but again, I would argue that 
 choosing an arbitrary name to avoid these redundancies would reduce 
 clarity.  As it is, I know that if I want to use a DeviceConduit in 
 my app, I just have to import tango.io.DeviceConduit.  There is no 
 need to remember that the class actually lives in tango.io.blah instead.
That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
Quite true -- the fact that D allows free functions means that Java styles are not sufficient. BTW - it used to be called tango.math.Core, the idea being that any library could have its basic functions in a file called 'Core.d', but unfortunately there were linker issues (can't have two obj files both called core.obj).
Oh dang, I've been using dsss for so long now that I had blissfully forgotten about that particular D issue. :-) --bb
Nov 19 2007
prev sibling parent Sean Kelly <sean f4.ca> writes:
Don Clugston wrote:
 
 Quite true -- the fact that D allows free functions means that Java 
 styles are not sufficient.
 BTW - it used to be called tango.math.Core, the idea being that any 
 library could have its basic functions in a file called 'Core.d', but 
 unfortunately there were linker issues (can't have two obj files both 
 called core.obj).
Technically, you can, so long as the files are not in the same directory. But I'll grant that the errors can be confusing. It certainly complicated the Ares build process. Sean
Nov 19 2007
prev sibling parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Janice Caron wrote:
 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development. I don't know how many people find the case issue a sticking point, but I do, and I am reluctant to use a library with such a different style not because it is ugly in its self, but because it clashes with my own style, making my code ugly and unreadable. Keep up the good work Janice! A...
Nov 18 2007
next sibling parent "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:
 If there were 2 versions of Tango, the current "Offical" version and one like
Janice's
To be honest, I never actually intended to make this version public - I just wanted it for myself, so that I could use Tango's streams and collection classes and cryptographic hash functions, without having to ditch D2.007 or Phobos. So far I've got it working with about half of the examples that interest me, and it took three or four days, so give it another week and I'll be done. But that said, I guess I could let other people see it if they want. All the original copyright notices are still in there intact so the original programmers get their due credit. But my version isn't really "professional". I mean, it's not been tested on Mac or Linux, for a start. I also don't promise to maintain it, except to make it work with D2.008+ with the new const syntax.
Nov 18 2007
prev sibling next sibling parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Janice Caron <caron800 googlemail.com> wrote:
 To be honest, I never actually intended to make this version public -
 I just wanted it for myself, so that I could use Tango's streams and
 collection classes and cryptographic hash functions, without having to
 ditch D2.007 or Phobos. So far I've got it working with about half of
 the examples that interest me, and it took three or four days, so give
 it another week and I'll be done.
In fact, to be absolutely clear, I didn't start doing this because I didn't like the style stuff - I started this because I wanted to use it. Or at least, bits of it. (without having to give up D2.007 or Phobos). I changed the module names /because/ it was just for me. I figured, if no one else is ever going to see it, who was going to care? Might as well use a style I like. That's all. I posted about it here in the spirit of "Ooh this is cool. Look what you can do".
Nov 18 2007
parent Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Janice Caron wrote:
 On 11/18/07, Janice Caron <caron800 googlemail.com> wrote:
 To be honest, I never actually intended to make this version public -
 I just wanted it for myself, so that I could use Tango's streams and
 collection classes and cryptographic hash functions, without having to
 ditch D2.007 or Phobos. So far I've got it working with about half of
 the examples that interest me, and it took three or four days, so give
 it another week and I'll be done.
In fact, to be absolutely clear, I didn't start doing this because I didn't like the style stuff - I started this because I wanted to use it. Or at least, bits of it. (without having to give up D2.007 or Phobos). I changed the module names /because/ it was just for me. I figured, if no one else is ever going to see it, who was going to care? Might as well use a style I like. That's all. I posted about it here in the spirit of "Ooh this is cool. Look what you can do".
Regardless of your motivations, I'm sill interested in the results. A...
Nov 18 2007
prev sibling next sibling parent Phango <Phango Phango.com> writes:
yup - i'd do that too

Alix Pexton Wrote:

 Janice Caron wrote:
 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development. I don't know how many people find the case issue a sticking point, but I do, and I am reluctant to use a library with such a different style not because it is ugly in its self, but because it clashes with my own style, making my code ugly and unreadable. Keep up the good work Janice! A...
Nov 18 2007
prev sibling parent Christopher Wright <dhasenan gmail.com> writes:
Alix Pexton wrote:
 Janice Caron wrote:
 On 11/17/07, Kris <foo bar.com> wrote:
 There's a fair chance the poster below is actually Janice,
Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development.
I think it shouldn't be too difficult to arrange an automated system for doing that. It could support any number of coding styles. The issue is fragmentation: you're using Tango-(phobos style), and I'm using Tango-(C# style), and Fredchook's using Tango-(Java style), and we can't compile each others' code. The solution would be using lots of aliases. To some extent, this can be accomplished via some CTFE/mixin-based plating, something like: string phobosAliases(T)() { string ret = ""; foreach (methodName; __traits(allMembers, T)) { ret ~= "alias " ~ methodName ~ " " ~ toPhobosCase(methodName) ~ ";\n" } return ret; } class HashMap { ... mixin phobosAliases!(HashMap); } Well, that would be if phobos didn't use the java style for class members. Given that the matter is just module-level variables, the aliasing will have to be manual. (And case-insensitive imports would be nice.) But to support C# style, for instance, such a template would work.
 I don't know how many people find the case issue a sticking point, but I 
 do, and I am reluctant to use a library with such a different style not 
 because it is ugly in its self, but because it clashes with my own 
 style, making my code ugly and unreadable.
 
 Keep up the good work Janice!
 
 A...
Nov 18 2007
prev sibling parent reply renoX <renosky free.fr> writes:
Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in case 
 there really is someone voicing an honest opinion there, read on ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry) Linux kernel developers have even made a Perl script to ensure that new developers respect their "style".. The exception is some rare case where the style is truly stupid, in which case you should first convince the authors to change their style, but here for the module naming, this isn't the case: this change was a gratuitous one. renoX
 
 What many people fail to realize is that software doesn't survive without 
 nurture. In fact, when you forcibly freeze software, it tends to die quite 
 quickly (this is what happened to Simula, for those who follow language 
 history, and it's somewhat relevant here since Simula is perhaps the closest 
 relative to D).
 
 The take-home message is that Tango will continue to develop, grow, improve, 
 mature, in a non-static fashion. If anyone wants to chase that with a 
 redundant copy, that's their folly. Making a copy of Tango functionality is 
 only inviting more work for yourselves, and generating out-of-date 
 functionality for others to operate with. Isn't that obvious?
 
 The recommendation is this: if you'd like something changed within Tango, 
 then request it. We can't always please everyone, but we do manage to make a 
 lot of people happy with the (often real-time) changes we do make. Having 
 said that, requesting sweeping stylistic changes, based purely upon personal 
 preference, is likely to conflict with the personal preference of others. 
 It's very hard to resolve such a dilemma, as I'm sure everyone can 
 understand.
 
 - Kris
 
 
 "phango" <phango phangowant.com> wrote in message 
 news:fhnplh$1cs3$1 digitalmars.com...
 i love that - please release it to us all!
 can't wait to get it for all the reasons you put forth.
Nov 18 2007
next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
renoX wrote:

 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in
 case there really is someone voicing an honest opinion there, read on ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime). -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
parent reply renoX <renosky free.fr> writes:
Lars Ivar Igesund a écrit :
 renoX wrote:
 
 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in
 case there really is someone voicing an honest opinion there, read on ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime).
*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is. Regards, renoX
Nov 18 2007
next sibling parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
renoX wrote:
 Lars Ivar Igesund a écrit :
 renoX wrote:

 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in
 case there really is someone voicing an honest opinion there, read 
 on ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime).
*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is. Regards, renoX
I've not used every part of Phobos, and some parts of it do grate a little, but I do not find it confusing the way that I sometimes do with Tango. I have notthing at all against the use of CamelCase, but I think that it should be used in different ways in different places. I just feel that it is bad practice to have the same naming scheme for modules and classes. A...
Nov 18 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:
 I have notthing at all against the use of CamelCase
I thought camel case was when every word /except/ the first was capitalised (because it's got humps in the middle, no?). likeThis. Examples are "opCall" and "toString". If the first word is also capitalised, I believe that's called titlecase (because that's what book titles do, more or less). Examples are "BufferedStream" and "DirIterator". I'm not sure what "Stdout" is. By my reckoning, stdout is two words - std (short for standard) and out (short for output). So I figure, camelcase would be "stdOut" and titlecase would be "StdOut". I guess some folk must just count it as one word.
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:
 I have notthing at all against the use of CamelCase
I thought camel case was when every word /except/ the first was capitalised (because it's got humps in the middle, no?). likeThis. Examples are "opCall" and "toString". If the first word is also capitalised, I believe that's called titlecase (because that's what book titles do, more or less). Examples are "BufferedStream" and "DirIterator". I'm not sure what "Stdout" is. By my reckoning, stdout is two words - std (short for standard) and out (short for output). So I figure, camelcase would be "stdOut" and titlecase would be "StdOut". I guess some folk must just count it as one word.
It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised. A...
Nov 18 2007
parent reply "Janice Caron" <caron800 googlemail.com> writes:
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:
 It was my understanding that CamelCase was the catch all term for all
space-eliminating mechanisms that use capitals to denote the beginning of a new
word, whether or not the first word is capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 18 2007
parent reply Don Clugston <dac nospam.com.au> writes:
Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:
 It was my understanding that CamelCase was the catch all term for all
space-eliminating mechanisms that use capitals to denote the beginning of a new
word, whether or not the first word is capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCa eIncludesPascalCase }.
Nov 19 2007
parent reply Robert DaSilva <sp.unit.262+digitalmars gmail.com> writes:
Don Clugston wrote:
 Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>
 wrote:
 It was my understanding that CamelCase was the catch all term for all
 space-eliminating mechanisms that use capitals to denote the
 beginning of a new word, whether or not the first word is capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.
How about camelCase?
Nov 19 2007
parent reply Matti Niemenmaa <see_signature for.real.address> writes:
Robert DaSilva wrote:
 Don Clugston wrote:
 Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>
 wrote:
 It was my understanding that CamelCase was the catch all term for all
 space-eliminating mechanisms that use capitals to denote the
 beginning of a new word, whether or not the first word is capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.
How about camelCase?
The terms I've heard and use are lowerCamelCase and UpperCamelCase. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
parent reply Oskar Linde <oskar.lindeREM OVEgmail.com> writes:
Matti Niemenmaa wrote:
 Robert DaSilva wrote:
 Don Clugston wrote:
 Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>
 wrote:
 It was my understanding that CamelCase was the catch all term for all
 space-eliminating mechanisms that use capitals to denote the
 beginning of a new word, whether or not the first word is capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.
How about camelCase?
The terms I've heard and use are lowerCamelCase and UpperCamelCase.
Or CamelCase and dromedarCase :) -- Oskar
Nov 20 2007
parent Matti Niemenmaa <see_signature for.real.address> writes:
Oskar Linde wrote:
 Matti Niemenmaa wrote:
 Robert DaSilva wrote:
 Don Clugston wrote:
 Janice Caron wrote:
 On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>
 wrote:
 It was my understanding that CamelCase was the catch all term for all
 space-eliminating mechanisms that use capitals to denote the
 beginning of a new word, whether or not the first word is
 capitalised.
Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.
How about camelCase?
The terms I've heard and use are lowerCamelCase and UpperCamelCase.
Or CamelCase and dromedarCase :)
Yes, that's another (although isn't it dromedaryCase?). But I don't like the term dromedaryCase since if it's gotMoreThanOneHump it's not a dromedary. :-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
prev sibling next sibling parent reply Lars Ivar Igesund <larsivar igesund.net> writes:
renoX wrote:

 Lars Ivar Igesund a écrit :
 renoX wrote:
 
 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in
 case there really is someone voicing an honest opinion there, read on
 ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime).
*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.
I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Lars Ivar Igesund wrote:
 renoX wrote:
 
 Lars Ivar Igesund a écrit :
 renoX wrote:

 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just in
 case there really is someone voicing an honest opinion there, read on
 ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime).
*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.
I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though.
Firstly, I think it quite rude to refer to me by my surname alone, even if you are unsure if you are making the correct assumption it would be polite to prefix Mr. Secondly, my gripe has nothing to do with using Tango and Phobos together and I don't know where in what I have written I might have given that impression. I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake. All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force. I wish you all the best with your library... A...
Nov 18 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
Alix Pexton wrote:

 Lars Ivar Igesund wrote:
 renoX wrote:
 
 Lars Ivar Igesund a écrit :
 renoX wrote:

 Kris a écrit :
 There's a fair chance the poster below is actually Janice, but just
 in case there really is someone voicing an honest opinion there, read
 on ...
Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Indeed, and Tango is quite a different project from Phobos (not counting the runtime).
*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.
I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though.
Firstly, I think it quite rude to refer to me by my surname alone, even if you are unsure if you are making the correct assumption it would be polite to prefix Mr.
Deeply sorry for this Alix, I usually get such things right, and I don't tend to use mother language as an excuse for such errors. So, sorry again.
 
 Secondly, my gripe has nothing to do with using Tango and Phobos together
 and I don't know where in what I have written I might have given that
 impression.
Right, misinterpreted the section where you said it conflicted with your style. I took this to mean that you followed Phobos' style, but apparently it did not.
 
 I will give you credit, Tango is very consistent in its style and much of
 the code is very elegant, but I believe very strongly that the decision to
 use mixed case identifiers for BOTH module names AND classes was a
 mistake.
 
 All the other issues I have with the layout of the library stem from this,
 but it seems that you are an immovable object, and alas I am not an
 unstoppable force.
We're not immovable, we just don't understand the issue :)
 
 I wish you all the best with your library...
Thanks! -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
prev sibling parent reply "Kris" <foo bar.com> writes:
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>

 I will give you credit, Tango is very consistent in its style and much of 
 the code is very elegant, but I believe very strongly that the decision to 
 use mixed case identifiers for BOTH module names AND classes was a 
 mistake.
Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this: # import tango.io.stream.all;
 All the other issues I have with the layout of the library stem from this, 
 but it seems that you are an immovable object, and alas I am not an 
 unstoppable force.
That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Nov 18 2007
parent reply Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>
 
 I will give you credit, Tango is very consistent in its style and much of 
 the code is very elegant, but I believe very strongly that the decision to 
 use mixed case identifiers for BOTH module names AND classes was a 
 mistake.
Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this: # import tango.io.stream.all;
 All the other issues I have with the layout of the library stem from this, 
 but it seems that you are an immovable object, and alas I am not an 
 unstoppable force.
That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Its not as simple as personal preference, my preferences nor anyone elses are the issue here. I'm going to spell this out as carefully as I can even though I am quite tired, and I thought I had doneso several times already. As I understand it, your argument for using CamelCase for your module names is two fold. 1) Importing "tango.Foo" gives one access to the class within "Foo" called "Foo" 2) Using "PenIsland" (where Foo and Bar are real words with real meanings) instead of "penisland" means the meaning can not be mistaken for "penis land". (actual website btw) Now, by far the vast majority of module names that I have encountered outside of Tango are either abstract or a single word, and DO NOT share the name with any of the classes inside. This makes it a convention, and one that I believe has a very good track record for being easy to understand and with good reason. In D, I know I am importing modules, not individual classes, I expect a module that I have imported to have in it some related classes and functions, some of which I might not use and will be pruned by the linker, but that they will all have names that are unique identifiers. In Java, I know that I can import whole packages with .* (in which case I must take care within my own namespace not to shadow in imported class) or I can import an individual class and get just that class. When I first looked at Tango I though... "yay, they guys have given me a way of importing individual classes, albeit via a bit of a messy namespace kludge," but I began to realise that all was not quite as it seamed. Sometimes a Tango import brings along a bunch of other classes that I wasn't expecting, might have been added since I last looked at the library source and suddenly introduce identifiers that might be in my code. Thanks to D being D, my code at least does not compile, I hope! So you see, or I hope you do, that the CamelCase is just the tip of the issue as I see it, and that mixing up modules that are just modles, modules that are just classes and modules that are both, can create confusion and introduce errors. Maybe its not Tango's fault at all, maybe D is wrong about the correlation between namespaces, modules and classes and you are just doing the best you can within the system. I really don't like having to carefully alias module names and classes so that free functions and static methods don't look the same or having to be uber familiar with the source of the library to know which modules contain multiple classes and which contain none at all. In another language, your scheme might work fine, and this issue would not crop up, but this is D. If Walter had, despite his good intentions, implemented D so that it was more confusing to use than C++, its very unlikely that we'd discussing this at all. So it alarms me that Tango is promoted as THEE alternative library when the way it works and the way it is inflexibly conglomerated is so unlike the language itself. I know about wrapping and aliasing the imports and all that sort of thing, but I think you will agree that goes against one of the key principles that sits at the foundations of "the D mentality". That is, that the easiest way to do something should be the right way to do it, (or perhaps just conversely, that the hard way should be the wrong way.) It doesn't matter how politely you ask, the consumers are not always going to jump through hoops to make their code readable, and in the end all your suggested solution does is move the problem to another location, and in some cases actually hide it completely. On the occasions when I have used Tango, I feel like I am fighting it, where as Phobos, the Java runtime and maybe 75% of C++ libraries that I have used seem much more intuitive. Some of the libraries that I have found easiest to use, actually really sucked once you looked under the hood, but they had got the packaging right for their respective language. I'm not a professional developer, or even really more than just a passtime programmer, but I do know more than my fair share about marketing. I'm not trying to sell you my opinions, but with current first impression that I get of Tango, and the attidude that comes across (intended or otherwise) when I and others offer constructive feed back, I wonder if you actually want people to use it at all. It's as if you are writing a library simply for the sake of writing a library, of perhaps out of some sort of selfish passion to be a creator, expecting the end user to just use it and be thankful. You have given up all these ours to make the internals reliable and all those other things, don't you want people to use the damn thing? I hope that in all my input here I have at least come across as calm and respectful, but I'm begging to feel that I can only get my point across by deviating from that demeanor. I don't know what anyone else thinks, but each time I read a new anouncement or a developer's reply to a Tango related thread, the first thought that enters my head is "gah, that arogant committee of fools," but I know that you are not fools when it comes to the inner workings of your code, only where the way that you present it is concerned. And no I did not jst call you fools, for even the wisest of people can occasionally do foolish things, just as experts can make descisions that later make them appear to be amateurs. Its for this reason that most of the time I read the posts and not who has posted them, and when the topic is not Tango, why I am not surprised if I later find out where the smarter comments and suggestions come from. Metaphorically speaking, if Tango were a member of your preffered sex, they would probably be rather attractive, but I think it would be dressed in a flour sack, but pouting like it was Versace's finest, Ditch either the sack or the attitude, a shy smile and/or jeans and a tee will get you a lot further. I realise that this has been a rather rambling explanation of the issues as I see them, and that perhaps fatigue has tainted my logic with a little anger, but I only want to help you to realise that the very fastidiousness of the consistency that you have applied to your module naming scheme is the very thing that actually makes it inconsistent. And if you change nothing else, change the attitude with which you arrogantly dismiss the genuine concerns of people who want D as a whole to be a success. A...
Nov 18 2007
parent "Kris" <foo bar.com> writes:
Thanks for your considerable treatment of the subject Alix, but I can't 
agree with you because I haven't yet made /any/ statement about why Tango 
has the style that it does. So, your premise is incorrect to begin with?

Also, you're assigning 'fault' or something to Tango, when in fact Tango has 
no choice in the matter. As to the whole thing about Tango modules importing 
others, that's just how D operates. Tango is actually very careful about 
what it imports: in fact, I've had lengthly and hard debates with people who 
want to mix functionality -- functionality that would cause more imports to 
be needed where they should be discrete instead. I'm /known/ for being 
careful about that, so you're kinda' hitting on the wrong guy here :)

Also, I'm sad to hear you've felt like Tango has been fighting you. That may 
be a stylistic thing also, but I don't know. However, I would strongly 
encourage you to file tickets for such things since that's an important 
concern. Have you done so in the past?

As for the lack of response to feedback: you are so completely wrong. I 
don't even know where to start, but instead I'll suggest that you spend some 
time on IRC, or simply look at the tickets we fix from the userbase. You 
know, maybe you get this idea from the ng? I mean, it seems like the only 
time anyone has anything to say about Tango on the ng is is topics like 
this - none of it particularly constructive, imo. All the action goes on 
over IRC and in dsource. Try it and see?





"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message 
news:fhqnac$60r$1 digitalmars.com...
 Kris wrote:
 "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>

 I will give you credit, Tango is very consistent in its style and much 
 of the code is very elegant, but I believe very strongly that the 
 decision to use mixed case identifiers for BOTH module names AND classes 
 was a mistake.
Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this: # import tango.io.stream.all;
 All the other issues I have with the layout of the library stem from 
 this, but it seems that you are an immovable object, and alas I am not 
 an unstoppable force.
That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Its not as simple as personal preference, my preferences nor anyone elses are the issue here. I'm going to spell this out as carefully as I can even though I am quite tired, and I thought I had doneso several times already. As I understand it, your argument for using CamelCase for your module names is two fold. 1) Importing "tango.Foo" gives one access to the class within "Foo" called "Foo" 2) Using "PenIsland" (where Foo and Bar are real words with real meanings) instead of "penisland" means the meaning can not be mistaken for "penis land". (actual website btw) Now, by far the vast majority of module names that I have encountered outside of Tango are either abstract or a single word, and DO NOT share the name with any of the classes inside. This makes it a convention, and one that I believe has a very good track record for being easy to understand and with good reason. In D, I know I am importing modules, not individual classes, I expect a module that I have imported to have in it some related classes and functions, some of which I might not use and will be pruned by the linker, but that they will all have names that are unique identifiers. In Java, I know that I can import whole packages with .* (in which case I must take care within my own namespace not to shadow in imported class) or I can import an individual class and get just that class. When I first looked at Tango I though... "yay, they guys have given me a way of importing individual classes, albeit via a bit of a messy namespace kludge," but I began to realise that all was not quite as it seamed. Sometimes a Tango import brings along a bunch of other classes that I wasn't expecting, might have been added since I last looked at the library source and suddenly introduce identifiers that might be in my code. Thanks to D being D, my code at least does not compile, I hope! So you see, or I hope you do, that the CamelCase is just the tip of the issue as I see it, and that mixing up modules that are just modles, modules that are just classes and modules that are both, can create confusion and introduce errors. Maybe its not Tango's fault at all, maybe D is wrong about the correlation between namespaces, modules and classes and you are just doing the best you can within the system. I really don't like having to carefully alias module names and classes so that free functions and static methods don't look the same or having to be uber familiar with the source of the library to know which modules contain multiple classes and which contain none at all. In another language, your scheme might work fine, and this issue would not crop up, but this is D. If Walter had, despite his good intentions, implemented D so that it was more confusing to use than C++, its very unlikely that we'd discussing this at all. So it alarms me that Tango is promoted as THEE alternative library when the way it works and the way it is inflexibly conglomerated is so unlike the language itself. I know about wrapping and aliasing the imports and all that sort of thing, but I think you will agree that goes against one of the key principles that sits at the foundations of "the D mentality". That is, that the easiest way to do something should be the right way to do it, (or perhaps just conversely, that the hard way should be the wrong way.) It doesn't matter how politely you ask, the consumers are not always going to jump through hoops to make their code readable, and in the end all your suggested solution does is move the problem to another location, and in some cases actually hide it completely. On the occasions when I have used Tango, I feel like I am fighting it, where as Phobos, the Java runtime and maybe 75% of C++ libraries that I have used seem much more intuitive. Some of the libraries that I have found easiest to use, actually really sucked once you looked under the hood, but they had got the packaging right for their respective language. I'm not a professional developer, or even really more than just a passtime programmer, but I do know more than my fair share about marketing. I'm not trying to sell you my opinions, but with current first impression that I get of Tango, and the attidude that comes across (intended or otherwise) when I and others offer constructive feed back, I wonder if you actually want people to use it at all. It's as if you are writing a library simply for the sake of writing a library, of perhaps out of some sort of selfish passion to be a creator, expecting the end user to just use it and be thankful. You have given up all these ours to make the internals reliable and all those other things, don't you want people to use the damn thing? I hope that in all my input here I have at least come across as calm and respectful, but I'm begging to feel that I can only get my point across by deviating from that demeanor. I don't know what anyone else thinks, but each time I read a new anouncement or a developer's reply to a Tango related thread, the first thought that enters my head is "gah, that arogant committee of fools," but I know that you are not fools when it comes to the inner workings of your code, only where the way that you present it is concerned. And no I did not jst call you fools, for even the wisest of people can occasionally do foolish things, just as experts can make descisions that later make them appear to be amateurs. Its for this reason that most of the time I read the posts and not who has posted them, and when the topic is not Tango, why I am not surprised if I later find out where the smarter comments and suggestions come from. Metaphorically speaking, if Tango were a member of your preffered sex, they would probably be rather attractive, but I think it would be dressed in a flour sack, but pouting like it was Versace's finest, Ditch either the sack or the attitude, a shy smile and/or jeans and a tee will get you a lot further. I realise that this has been a rather rambling explanation of the issues as I see them, and that perhaps fatigue has tainted my logic with a little anger, but I only want to help you to realise that the very fastidiousness of the consistency that you have applied to your module naming scheme is the very thing that actually makes it inconsistent. And if you change nothing else, change the attitude with which you arrogantly dismiss the genuine concerns of people who want D as a whole to be a success. A...
Nov 18 2007
prev sibling parent "Kris" <foo bar.com> writes:
"renoX" <renosky free.fr> wrote in message 
news:fhpacc$jg3$1 digitalmars.com...


 So in this case, why Phobos convention of module naming isn't good enough?
 For me, it is.
I suggest you try to answer sean's questions early on in this thread? That might be helpful?
Nov 18 2007
prev sibling parent reply "Kris" <foo bar.com> writes:
"renoX" <renosky free.fr> wrote

 when contributors add new code in a project, reusing the same style as the 
 other code is a sign of professional/mature programmers (ok, amateurish 
 was too strong sorry)
Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. So what is Tango? Why does it exist? This is my perspective only, so take it for what it is: Tango is designed to be a complete, robust, cohesive, mature and rational library of quality comparable to C# or Java. Better in a number of cases, perhaps currently weaker in others. The goal of Tango has always been to help D get in the door of the commercial sector and, as such, it is surely a blessing for D? I mean, there's a /lot/ of work in there. And, regardless of your stylistic preferences over module names, it is a damn fine example of both solid D code and what this community is capable of when focused. It is a community effort after all. If you consider yourself to be a D enthusiast, then you perhaps ought to be thanking all those Tango folks for all their hard work instead of pissing on the communal kitchen floor :p I mean, there's no kickback for the Tango folks on this. It's not like the Tango folks will somehow retire off it (lol). Instead, there's a lot of altruism involved (you'd perhaps be shocked at the number of man-hours involved in Tango - I think it was calculated as ten man-years recently). Think about it. Yet, here we are bitching about minor stylistic issues instead. It's refreshing to hear an honest opinion from Alix (apparently a Tango detractor), about the coherency, clarity and quality of the code in Tango, because that is actually what /should/ be important. The library stands as much as an example of how to use D as anything else. It's free, it's innovative, and it includes some exemplary code from many of the best minds involved in this community. Look at the list of folks in the Tango contributor page, and you'll see what I mean. Basically, if you don't like Tango because it doesn't jive with your notion of style, that's fine.You really don't have to use it. If you don't like Tango because of some reason that we can remedy, then please hook up on IRC, or write a ticket or whatever. You'll find that the Tango folks are usually incredibly responsive ... even when their spouses would much rather the damn computer was switched off. If you're one of the many, many people who use already Tango, thanks for all the tickets you've been writing :) - Kris
Nov 18 2007
parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
Kris wrote:
 "renoX" <renosky free.fr> wrote
 
 when contributors add new code in a project, reusing the same style as the 
 other code is a sign of professional/mature programmers (ok, amateurish 
 was too strong sorry)
Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
I think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!" Now, the folks who started Boost were no small fry. They weren't garage programmers fresh out of high school with a keyboard and a CRT and a ton of attitude. They were world-class, respected programmers with decades of experience and enough clout and political capital to say: "We're going to do things differently and we're right". But they didn't. They stuck with the established, standard C++ conventions, and that alone lends additional legitimacy to the effort. This is not to say that Tango made the wrong choice, or that camelCase is evil (I go both ways on the issue). However, the conceit that Tango is independent of Phobos, and that Phobos is borrowing from it, so it just has to put up or shut up is a very different reaction and attitude from Boost "lending" libraries to standard C++. One thing you learn very quickly when participating in the Boost community is that these people take C++ very seriously. If your library doesn't take into account every minute detail of the language, you are virtually guaranteed that some expert somewhere in the world is going to point this out and make a big deal about it. At first, it seems petty and overbearing. But after a while, you see that the scrutiny is a trial by fire, and that reviewed libraries themselves gain extra credibility by taking into account the criticisms and feedback of what are truly world-class experts (and sometimes you can't tell the experts from the non-experts, but usually that doesn't matter because the truth has a way of bubbling up rather quickly). What you especially learn is that there are definite best practices in the C++ community, and if you deviate from those, you had better have an excellent reason. Conformity is King. Your code had better *look* like Boost code, regardless of its quality otherwise. Your documentation had better *look* like Boost documentation if you want to be taken seriously. You had better have a full set of regression tests using the Boost.Test framework so your library will show up properly in the full regression results. Miss any of these details, or try to be an "innovator", and you risk having your library rejected. This isn't high school. This is conformity with a purpose. When a Boost reviewer says: "I think you choose a poor name for this function. Please explain why you made that choice or try this suggested name instead", the author does not say: "Hey, jump on my IRC channel and we can discuss it." That would be considered..."unprofessional"...to put it politely. At work, when people have problems with some tools, the tool authors say: "Well, just file a bug report on our forums." Unfortunately, that says: "I can't be bothered to file a bug report on your behalf, even though you spelled out the details in an email." That's not to say that IRC is a bad communications medium; merely that it has a certain barrier to entry (not everyone has an IRC client installed by default, or would know how to use one). At the end of the day, a Boost library author has to *defend* the library under review for it to be accepted. Even though the author is the one contributing free work, it is ultimately the clients who get to decide whether it meets the bar of quality. At no point would a Boost library author get away with saying: "No, you tell *me* why you think it's wrong. My library rocks. Capisce?" Rather, the reality is that authors are more likely to run to the standard and quote chapter and verse to demonstrate that they made the right choice. The onus is on the library writer to show that the library is well-designed. As Alex mentioned, it's about selling. Whether you like your customers or hate them, they are your customers, and will ultimately influence your success, even if they do nothing but elicit your unsavory side. The D community is not the Boost community, and has a long way to go to reach that level of experience (because D is a much younger language, to be sure). But that doesn't mean we can't get a head start and take the language and its users as seriously as if there were a million D programmers in the world, with users in major Fortune 500 companies, and that most of them read the D forums as religiously as c.l.c++.m. Reputations take a very long time to build, but are quite easily destroyed, and often by oneself (ask James Watson about that). Dave
Nov 18 2007
next sibling parent reply "Kris" <foo bar.com> writes:
"David B. Held" <dheld codelogicconsulting.com> wrote in message 
news:fhr0at$g5a$1 digitalmars.com...
 Kris wrote:
 "renoX" <renosky free.fr> wrote

 when contributors add new code in a project, reusing the same style as 
 the other code is a sign of professional/mature programmers (ok, 
 amateurish was too strong sorry)
Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
I think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!"
Appreciate the insights, Dave, and respect your opinion. However, you're assuming Tango was designed to be included in phobos, and that is not the case. You're also ignoring a number of important factors. For example, Tango will likely change toUtf8 -> toString in order to satisfy certain compatability desires. That wouldn't happen with the "put up or shuttup" notion you discuss. Thus, your premise appears based on something non-factual and perhaps does not apply here?
Nov 18 2007
parent Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Kris wrote:
 "David B. Held" <dheld codelogicconsulting.com> wrote in message 
 news:fhr0at$g5a$1 digitalmars.com...
 Kris wrote:
 "renoX" <renosky free.fr> wrote

 when contributors add new code in a project, reusing the same style as 
 the other code is a sign of professional/mature programmers (ok, 
 amateurish was too strong sorry)
Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
I think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!"
Appreciate the insights, Dave, and respect your opinion. However, you're assuming Tango was designed to be included in phobos, and that is not the case. You're also ignoring a number of important factors. For example, Tango will likely change toUtf8 -> toString in order to satisfy certain compatability desires. That wouldn't happen with the "put up or shuttup" notion you discuss. Thus, your premise appears based on something non-factual and perhaps does not apply here?
Well, I went on IRC, through a sleepy haze I think I managed to get my concers somewhere closer to understood. I still think IRC is an appaling medium for debate, things can so get lost in the interrruption of another user joining the channel and too many people talking at once can cause more confussion than CamelCase module names, but for the time being my inner devil's advocate is sated. However... Tango definately still needs to go on a marketing course... A...
Nov 18 2007
prev sibling parent Lutger <lutger.blijdestijn gmail.com> writes:
David B. Held wrote:
...

The Boost libraries are obviously an example of high quality design and 
development process. To be fair, I want to make some remarks about your 
analogy:

The C++ standard library is more than conventions and functionality, it 
is a highly coherent suite of concepts. This is very different from 
Phobos. Boost is compatible with the C++ standard library in a way that 
Tango could never be, even if it was a goal from the beginning which it 
isn't.

About the development process: Kris does have a record - on this 
newsgroup - of caring highly about the D language, and so do other Tango 
developers. I don't see how Tango is under review here, but I can 
confirm that when it is, or when you make tickets, posts, whatever, the 
responses are highly welcoming.
Nov 19 2007
prev sibling parent Sean Kelly <sean f4.ca> writes:
Jason House wrote:
 Sean Kelly Wrote:
 D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change 
 much, if at all.  D 2.0 is obviously still in flux, and Phobos 2.0 has 
 already incorporated some of Tango's changes.  It is uncertain what the 
 final result of the merge will be for D 2.0, but from a code perspective 
 it is more likely that Phobos 2.0 will end up effectively using the 
 Tango runtime than vice-versa.  This is because everyone seems to agree 
 that the Tango runtime is a bit more robust.
I translate that to mean that the merge of Tango and Phobos relies on the Phobos developers to do the work. Is Phobos being actively matured? My previous impression is that Walter was doing both that and compiler internals... with most time dedicated to the latter.
Andrei and Brad Roberts are working on Phobos 2.0 in various capacities. Andrei is focusing on user-level changes, while Brad is looking at the runtime. So Phobos is still being actively matured, though likely not as quickly as Tango.
 Is there a timeline when 2.0 versions of phobos and tango will be compatible? 
How will the pieces be partitioned?  Will tango be released with new dmd
versions?  Will both libraries adopt the same style (naming conventions,
capitalization, etc...)?
All still yet to be decided, I'm afraid. Sean
Nov 16 2007