Slashdot Mirror


Developers As Pawns and One-Night Stands

jcatcw writes "At the Comes vs. Microsoft antitrust case, last Friday's testimony included evidence that James Plamondon, a Microsoft technical evangelist, in a 1996 speech referred to independent software developers as 'pawns' and compared wooing them to trying to win over a one-night stand. Last week's proceedings also included testimony by Ronald Alepin, a former CTO at Fujitsu Software Corp. and currently an adviser to the law firm Morrison Foerster LLP. He said that Lotus 1-2-3 was killed, in part, by Microsoft encouraging Lotus's programmers to use the Windows API even though Microsoft's own developers found it too complicated to use." The plaintiffs have created a site that includes transcripts of testimony presented in the case.

7 of 268 comments (clear)

  1. Re:Woo by jellomizer · · Score: 5, Interesting

    I am guessing you havn't done much Microsoft Development. Did you ever wonder why MS Has features in their programs that you cannot program easily using Microsofts tools. When Office allows the fade in with graphics and colors menus in all their product while your API only allowed the text only popup Menus. MS Does do this. It is not about MS bashing it is about MS not giving us the tools to create modern applications.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  2. Re:Stupid-ass Question by Anonymous Coward · · Score: 5, Informative

    You missed his point, and got caught by the simple, common example.

    Microsoft actually had two layers of API. There was an internal API used by other Microsoft employees, and the public API advertised and documented for other devleopers to use.

    There were several articles in Dr. Dobb's Journal detailing diferences between the APIs, written by people who were trying to tear under the hood in ways Microsoft STILL describes as criminal.

    Some of the public API structures did nothing but rearrange the arguments, call a delay timer, and then call the internal API. Seriously.

    The material described in these articles was part of the first big push about Microsoft abusing it's monopoly position. After all, people were builidng proof that Micorsoft was specifically making it impossible for anyone to write applications that could finction as cleanly, quickly, smoothly as Microsoft's own, or that could even be as small as Microsoft's own. They used the natural OS monopoly to make it impossible to compete fairly in the application market for that OS.

    I wonder why Microsoft calls the efforts to uncover the API differences criminal?

    And for those who want to call this blatant Microsoft bashing, go check Dr. Dobb's Journals from the early Windows 3.1 era for yourself. I don't have to make this up. The facts do more bashing than anything I could make up.

  3. Re: Removes it??? by baadger · · Score: 5, Funny

    So if working with Microsoft is a one night stand, isn't doing Open Source like doing 500 guy gangbang?

  4. One-night stand? by AutopsyReport · · Score: 5, Funny

    I have high standards, you insensitive clod!

    You must be a daemon in the sack.
    You must be agile.
    No time for debugging your problems.
    I will not use a trojan horse.
    Time slicing with others is not okay.
    Don't ever call my thing a widget.

    --

    For he today that sheds his blood with me shall be my brother.

  5. Re:Woo by CockMonster · · Score: 5, Informative

    Rubbish, check out owner-drawn menus in the MSDN documentation. THere's nothing to prevent you from doing kind of thing yourself. I've done it.

  6. Re:Stupid-ass Question by vdboor · · Score: 5, Informative

    If you're writing an app for Windows, what is the alternative to using the Windows API? How could Microsoft develop Windows applications without using the Windows API? Well consider reading about Windows NT, Secret APIs and the Consequences (Google Cache). There is a private hidden API under the Win32 API calls. For example, NtCreateProcess is the internal function used by the CreateProcess function. The Win32 API only exposes a small subset of the available API functions in Windows. From the article:

    (..) when Microsoft released Internet Information Server (IIS), it significantly outperformed Netscape Server on the NT Platform. Microsoft insisted that its developers had not had any additional acceess to information than had Netscape developers. Yet after careful review, Netscape developers were able to utilize previously undisclosed information about NT in their own products. Future releases of Netscape Server were competitive with IIS in subsequent testing. If you write programs using a documented API, the programs run slower. The second quote illustrates that Microsoft uses the hidden APIs to make their applications the best in any particular market:

    Microsoft can write application code that can run optimally on an operating system, has advance knowledge about future releases, knows which programming method to choose over another, and can tweak the OS code prior to final relase to advantage3 its own applications. If you perform the costly task of reverse-engineering the hidden APIs in order to compete with Microsoft, they change those hidden APIs to favor their products.

    If the product becomes popular or makes money, Microsoft can make a faster competing product using the real system calls, or they can change the real NT system calls out from under your product at the next release of NT. In either case, Microsoft can cause their competing product to inherit your market.
    --
    The best way to accelerate a windows server is by 9.81 m/s2 ;-)
  7. Re:Undocumented APIs by Oddscurity · · Score: 5, Interesting
    Cue depends.exe to do just that, indeed. Some relatively well-known examples of using undocumented APIs are by Sysinternals, who were recently acquired by Microsoft:
    Fundelete accomplishes this through the use of an undocumented API, ObOpenObjectByPointer
    ...
    The final step Fundelete performs is to convert the binary representation of the SID into a textual representation. Another undocumented API, RtlConvertSidToUnicodeString, performs this.
    ...
    Tokenmon relies on several undocumented SRM functions to obtain a logon ID from a thread's primary and impersonation tokens, and GetSecurityUserInfo, an undocumented function exported by the KSecDD (Kernel Security-support driver) that retrieves a logon session user's name, domain name, and logon server given a logon ID. Another interesting implementation detail is that several of the native API functions that Tokenmon hooks are not exported by ntoskrnl.exe for use by drivers. Thus, the Tokenmon GUI must reach into NTDLL.DLL, extract their system call numbers, and pass them to the driver.

    This courtesy of the people who unearthed the Sony Rootkit, which goes to show it takes someone with knowledge of deeply intertwingled cruft to find it?

    But more importantly: if ISVs behave in this way with limited knowledge of undocumented functions, how do you think Microsoft uses them?
    --
    Indeed!