IWETHEY v. 0.3.0 | TODO
1,095 registered users | 0 active users | 0 LpH | Statistics
Login | Create New User
IWETHEY Banner

Welcome to IWETHEY!

New Something nasty that I just realized (oops, I was wrong)
Content left only so people can understand discussion below.

There are quite a few interesting flaws in this design. Here are some of them. First of all why patches and .NET are going to be fscking huge.

  1. Suppose that you have a bug in a library. So you fix it.
  2. Every module that loads the library needs to be relinked, so you recompile.
  3. Everything that links to that also needs relinking.
  4. When you are done, how big is your patch?

There is a possible major portability gotcha when you have digitally signed code that needs to call out to native code, and on different platforms needs to call out differently. That means different versions, that anything which links to is going to only link to one of, which means that anything anywhere that calls out to native code is going to be platform specific...?

OK, we will assume they are not that obvious about it. But still we have a nasty portability trap like this:

  1. You write a module that calls out to native code.
  2. It gets used by a bunch of people.
  3. You want it to become cross-platform. So you make whatever modifications you need to be able to link to native code on multiple platforms.
  4. Now everyone who uses your code needs to recompile so that they link to the portable version of your code.
  5. Everyone who links to them has to do likewise.
  6. Does anyone believe that will happen routinely on a large number of platforms? (Particularly minority platforms like Linux or FreeBSD? Particularly when key components have been written by people who are enough sold on the Microsoft bandwagon to have lept into .NET early?)

You know, for a platform that barely runs in 512 MB of RAM, at a time when Microsoft has not really tackled how they are going to do the big 32 to 64 bit conversion, it might not be a smart idea to shoot themselves in the foot like this. And if they intend to get into foot-shooting, it might not be a good idea to join in this endeavour...

And this is what Miguel thinks is the greatest thing to hit programming since sliced bread???

Cheers,
Ben
Expand Edited by ben_tilly Feb. 15, 2002, 08:15:35 AM EST
New Not sure you are right about the linking part.
If I read it right, they are still using dynamic linking. So, if a module's Interfaces (input and output parameters) have not changed, the module that needs fixing can simply be replaced. So while it is technically a new version of the module, it can be accepted as a revised version of the original.

Your hairball scenario takes hold when these interfaces do change. Then, the changed module becomes a significantly different version of the module. The modules that need to call the new version must also be re-issued in new versions, etc. The caller modules that don't need the change could remain untouched and continue to call the old version of the module. Some of the memory savings that the DLL scheme has would evaporate, but it would still work.

In the case that a given module requires interface changes in a module that it calls, both the caller and the called module modules would need to be re-issued in a new versions. Depending on the nature of the problem, this may also develop into a hairball scenario. But, it need not necessarily.

It boils down to being damned sure you've got the interfaces right the first time.
Alex

"Of course, you realize this means war." -B. Bunny
New Getting interfaces right
It boils down to being damned sure you've got the interfaces right the first time.

And Microsoft has such a good record of doing that... oh, but forgive me, they also have such a great record of actually publishing their interfaces... Theoretically, OLE/COM modules have built-in versioning, too, but that doesn't stop them from crackling all over every time Microsoft does a system update.
Most of the work of government does not need to be done. - Attributed to Ronald Reagan, under whose administration the government expanded, of course.
New When you're innovating at internet speed,...
publishing interfaces would only confuse the developers.

Where is that sign, again? :)

Alex

"Of course, you realize this means war." -B. Bunny
New I know the sign, and I endorse it :=)
Where each demon is slain, more hate is raised, yet hate unchecked also multiplies. - L. E. Modesitt, from his Recluse series
New D'oh
I had misread [link|http://arstechnica.com/paedia/n/net/net-2.html|page 2]. I had thought that they just used a hash to sign the file so that any change to the file broke linking. They don't. Instead they cryptographically sign the hash value. Only with access to the private key can you produce a new file which will link with the old.

So they can make reasonable patches.

It does raise questions about key management though.

Cheers,
Ben
     Good link on .NET - (ben_tilly) - (27)
         Just confirms it-who couldn't figure as much 1 or 2 yrs ago? -NT - (CRConrad)
         Stack-based security - (admin)
         A different .NET link, makes me sick - (bluke) - (3)
             Some get to be sharks... - (ben_tilly)
             Blink blink - (wharris2)
             Dunno if he really believes it, but he has a reason to gush - (CRConrad)
         .NET Visual Studio - (tuberculosis) - (1)
             ...has at least one security-related compiler bug already - (CRConrad)
         Sounds about like I expected - (tonytib) - (8)
             Something nasty that I just realized (oops, I was wrong) - (ben_tilly) - (5)
                 Not sure you are right about the linking part. - (a6l6e6x) - (4)
                     Getting interfaces right - (wharris2) - (2)
                         When you're innovating at internet speed,... - (a6l6e6x) - (1)
                             I know the sign, and I endorse it :=) -NT - (wharris2)
                     D'oh - (ben_tilly)
             Re: Side note for Ben - (a6l6e6x) - (1)
                 You have to understand the context - (tonytib)
         I would miss dynamic typing. - (static) - (9)
             Take your pick - (ben_tilly) - (8)
                 Please, sir... - (static) - (7)
                     Very simple - (ben_tilly) - (6)
                         Versions peresnt during packaging? - (Arkadiy) - (3)
                             No - (ben_tilly) - (2)
                                 To do library versioning dynamically... - (neelk) - (1)
                                     Huh, interesting - (ben_tilly)
                         Yes, it makes sense now. - (static)
                         Specify prefered libraries up front - (tablizer)

Let Us Now Braise Famous Men, those who in their salad days.. imagined that they were of the Caesar variety.
207 ms