[Asterisk-Dev] Client development...

Boudewijn van Ingen bogie at xs4all.nl
Sat Sep 27 16:18:42 MST 2003


At 10:59 AM 27-09-2003 -0600, Brad Waite wrote:
 >"I've had alls I can stands, and I can't stands no more."

Bugs Bunny? Is that you? ;-) ;-)

 >Boudewijn van Ingen wrote:
 >
 >> I'm glad you admit to be an inexperienced software developer. In my own
 >> experience of over twenty years as a professional programmer, I have
 >> learned that the actual programming language you use isn't half as
 >> important as the structural design of the project. And as far as I can
 >> see, whatever little 'design'  there is in the "iaxclient" library is
 >> just about begging for the application of C++, or some other object
 >> oriented programming language (however scary that may sound to you).
 >
 >I'm glad you admit to being an arrogant software developer.

Indeed I do admit to being that. ;-)

 >> And you've just demonstrated that you don't have sufficient knowledge
 >> about that, by assuming that C++ prevents anyone from coding in C (or
 >> any other language for that matter). You are apparently unaware that C++
 >> is a superset of C, and thus can't be a 'limitation' to anyone who codes
 >> in C.
 >
 >And you've just demonstrated that you don't have sufficient tact to work 
with
 >others, by coming here and assuming you can say that everything that's been
 >done
 >so far is junk.  You are apparently unaware that working with other human
 >beings
 >sometimes requires humility, and thus is a limitation to someone (like
 >yourself)
 >who thinks their way *has* to be the right way.

Perhaps I left out some information, that might have made more clear where 
I'm coming from, and what I'm trying to do. That is indeed probably due to 
a lack of 'tact' on my part.

I haven't had much trouble working together with 'other human beings', 
though. I believe I must have been expecting too much in this case. Perhaps 
my initial mail to this list should have been fivehundred lines long.. ;-)

 >> But I didn't come here for an arguement about programming languages. I
 >> have indeed better things to do.
 >
 >Yes - telling yourself how great you are.

Actually I came here asking a question. That first question was answered, 
and I came up with another one (about debugging output in a logfile, with 
asterisk running as a deamon), which hasn't been answered so far.

 >> You're afraid of being "extinguished" by *me*? Poor sod.
 >
 >Humility is always extinguished by hubris.  (At least in this life.)

I did not particularly like to be associated with Microsoft's methods. That 
was uncalled for. Almost as silly as saying that I was 'limiting' myself to 
programming in C++, and the illogical conclusion that that action in itself 
should somehow be a reason not to program in C++.

That response reminded me of Monty Pythons "arguement sketch". I must have 
had the wrong door...

 >> If you can provide me with a copy of the iax-library that plugs in
 >> seemlessly with Borland's development environment (you might also try
 >> Pascal or assembly), you would have solved my problem. As it is, all I
 >> can find are ports that have about 300% overhead, and still leak memory,
 >> as well as GPF'ing all the time...
 >
 >Okay, Mr. "I've got 20 years of programming under my belt", please list 
for us
 >at least 10% of all open- or close-source projects that will plug in
 >seemlessly
 >to another cross-platform dev environment.  Y'know what?  You 
can't.  They are
 >*very* few and far between and you know it.

I know that, indeed. I've seen a lot of sources, both commercial and open 
source. Generally the open source stuff is more compliant to standards, and 
better organized, separating platform dependent matters out into different 
modules, that can be easily adapted. But I rarely encounter software that 
complies with my own standards, apart from what I have produced myself, of 
course. ;-)

 >So to say that IAXlib should plug
 >seemlessly into Borland *when that wasn't one of the design goals* is 
moronic.

No it isn't. If the code would have been compliant to *ANY* kind of 
standard (ANSI, anyone?) I wouldn't have so much trouble using it. It is 
not very hard to do, and very rewarding to impose some kind of coding 
standards on any project. In fact I am sure it is a wise thing to do.

Some such basic rules should be:
  - Always compile with all the available warnings that your compiler can 
provide ON, to make sure you see all the possible problems in your code;
  - Always compile (or have someone do it for you) your code on at least 
two completely different platforms, using two different compilers on 
platforms that provide them, in the above mentioned way, to make sure you 
do not use platform or compiler specific 'hacks';
  - If you might find it necessary to use platform or compiler specific 
'features', then make sure you insulate that part of your code in separate 
modules, in order to facilitate portability;
  - Even if you have to use 'features' that are unavailable on other 
platforms, make sure the rest (as much as possible) of your code compiles 
and links cleanly everywhere, using dummy modules wherever the required 
features are -so far as you know- unavailable, because someone else might 
find an implementation of those features later on...

Such basic coding rules should apply to any software product. No matter 
what programming language. I apply them (and many more) stringently to all 
the code that I sell or publish.

 >You think it should have been one of the design goals?  Be my guest.

Considering the fact that there is apparently no documentation at all about 
the protocols or APIs involved in Asterisk, I am forced to the conclusion 
that indeed there were and are no formal "design goals" at all.

But indeed, I would think that basic coding standards would be the very 
least, for a project like Asterisk. As I indicated above, apparently I was 
expecting too much.

 >You're
 >welcome to your opinion.  But since you didn't get involved in this project
 >until this point, you don't have a right to come here and bash the hard work
 >that's been put in so far.

It was not my intention to do so, anyway. I admit that I have harsh words 
for the way it has been coded. But I'm sure there is a good 'plan' 
somewhere behind it. Too bad that it is being made so difficult for others 
to find out about that plan, and expand on the code.

 >You want to improve IAXlib?  Go right ahead -
 >that's
 >truly part of the OS ideals.

I may or may not do so, now. You see, I've been asked to develop a client 
application for Windows (using  Borland C++ Builder, because my customer 
wants to make the GUI himself) that supports conference calls and transfer 
of a call to another number. And I have limited time to produce such a 
client library.

At the time, it seemed an easy enough proposition. But then I took a look 
at the available sources. Soon enough, I had a copy of "iaxclient_lib.lib" 
compiled. But running it, was another matter. So I tried all kinds of other 
source files to get something running. So far, with no success at all.

I then decided it was perhaps best to write my own iax-lib, based on the 
information I could get about protocol, and the ideas behind it. I started 
out on that task (and I will continue it), but soon found out that with all 
the cryptic information from the sources, it would take me ages to complete 
that to the point where it would be useful for anyone.

Unable to find any more information about it, I asked one question on this 
list, explaining a bit about what I found. With known results: I get flamed 
for not respecting everyones' feelings (which is right), and still no help 
or documentation of any of the features of Asterisk my customer wants to 
promote...

At this moment, I'm looking at two options:

1) Indeed rewrite all of the code for an iax-client library, or

2) debugging some existing code, to the point that it (guaranteed) won't 
GPF on me anymore, and then try to add fetures to that code somehow....

Both of these seem unwelcome ideas to me now, since they will both take too 
much time. I myself do not care much about the time it takes, but everyday 
that passes, diminishes the chances my customer has to convince the telco 
to start using Asterisk...

I'll most likely go for option 2 for the demo, while working on 1 on the 
longer term. An uneccessary waste of time.

 >> Thanks for your lack of help, anyway.You've been a great advertisement
 >> for the mentality of the open source community...
 >
 >No, thank *you* for your lack of humility.  You've been a great 
advertisement
 >for the mentality of the self-important community.

My pleasure. ;-)

I do not have the pretence to know much about Asterisk or its clients, its 
protocols, or anything related to it, though. That is why I asked questions 
on this mailinglist.

I do indeed think I know some things about coding and portability. 
Obviously, no-one has any obligation to listen to anything I say, or even 
to react on my scriblings. But when I get a reaction that mainly ignores 
the technical things I was asking, and in stead seems rather like a 
mindless attack on "C++", that bothers me somewhat.

 >Boudewijn, please not that I did not get into a pissing contest about which
 >language is more appropriate for IAXlib.  In *my* 20+ years of coding, I've
 >found that there's usually more than 1 way to skin a cat, and a whole 
bunch of
 >ways to fillet one.

I agree with you fully. Any C-version of any iaxlib that will compile and 
run properly will do. All my remarks about C++ were merely meant to 
indicate the environment that my customer wants to use to build his gui. I 
haven't been clear enough about that before.

For all I care, you guys might want to code in COBOL or BASIC. But whatever 
you do, keep your code clean. Don't "hack", but "program". And use at least 
a rudimentary form of design or documentation. If you don't, how the hell 
would you expect (like some people do) large telco's to trust your 
spaghetti-code?

I have written software for banks and telco's before. The larger they get, 
the more they want to see actual "proof" about the reliability of your 
product, before they will ever take it into production. And I'm talking 
about mathematical proof that the software cannot go astray. Boeing and 
NASA apply similar, though even harsher standards, for obvious reasons.

Now if -and I gather this is a dream of many on this mailinglist- Asterisk 
is to become a real alternative for large telco's, some real work will have 
to be done on documentation and code-cleaning.

 > My point is that your arrogance is unwelcome.

I'm quite sure it is. I already said I was sorry about that. I'm obviously 
not 'tactful' enough to spare people's feelings, when I report what I see, 
as you indicated earlier.

 >Your
 >thoughts, ideas and though-provoking ideas are most welcome, but please 
render
 >them with kindness.

I am a very kind person, really. But I am also a geek (or a nerd, or 
whatever you like to call people who refrain from almost any form of social 
life in favor of living with a 'nest' of computers). I'm here to talk about 
software quality, not about relationships, nor anyones personal preferences 
in programming languages. If I would feel the need to make even more 
friends, I would not utilize a mailinglist like this one to find them.

Sorry to have to disappoint you. ;-)

Groeten,
Boudewijn. 




More information about the asterisk-dev mailing list