
Windows Is Bloated, Thanks to Adobe’s Extensible Metadata Platform - Integer
https://www.thurrott.com/windows/109962/windows-bloated-thanks-adobes-extensible-metadata-platform
======
tomcam
You would be surprised at how much cruft in Windows over the years has been
directly due to Adobe. I had many bug triage sessions where Windows developers
at Microsoft had to work around Adobe problems to keep Windows users happy. I
always thought it was unfair and was quite impressed by Microsoft at their
willingness to handle this so quietly.

~~~
frik
File metadata is not cruft. It's a very good thing. Vista's/Win7 Explorer.exe
with its metadata columns is GREAT.

Even better was Windows (Live) Photo Gallery. Sadly it's dead since Feb 2017,
you can't even install it anymore, as only a now broken WebInstaller exists.
Photo Gallery was hand down 1000 times better than
Picasa/Lightroom/Photos/iPhotos for just browsing photos and videos. And it
alo supported tags with hierarchy (eg "City/New York/Manhattan").

[https://en.wikipedia.org/wiki/Windows_Photo_Gallery](https://en.wikipedia.org/wiki/Windows_Photo_Gallery)

Sadly WinFS failed, metadata is nowadays often misunderstood and persived by
companies contra productive in the age of cloud service strategies. Flickr is
probably the only well known photo service tht keeps metadata. Facebook made
it popular to strip metadata and keep annotations internally (as vendor
lockin) - now common also with other services.

I hope there will be a kind of come back of metadata. People need more
education to understand the concept, that's all.

~~~
i336_
> _Even better was Windows (Live) Photo Gallery. Sadly it 's dead since Feb
> 2017, you can't even install it anymore, as only a now broken WebInstaller
> exists._

This sounds like a challenge. You're on.

\- Do some scratching around; discover sites hosting "wlsetup-all.exe"

\- Point the Web Archive at download.live.com

\- After some trial and error with broken pages find
[http://web.archive.org/web/20161130174327/https://support.mi...](http://web.archive.org/web/20161130174327/https://support.microsoft.com/en-
us/help/18614/windows-essentials)

\- Follow the "Download options" link

\- Eventually land on
[http://web.archive.org/web/20161226002912/https://support.mi...](http://web.archive.org/web/20161226002912/https://support.microsoft.com/en-
us/help/17779/download-windows-essentials), and disable JavaScript so the page
doesn't kill itself (remember on Chrome you just click the (i) to the left of
the URL)

\- Ah, a "Download Now" link!

    
    
      $ curl -vv http://go.microsoft.com/fwlink/?LinkID=255475
      Location: http://g.live.com/1rewlive5-web/en/wlsetup-web.exe
    
      $ curl -vv http://g.live.com/1rewlive5-web/en/wlsetup-web.exe
      Location: http://wl.dlservice.microsoft.com/download/C/1/B/C1BA42D6-6A50-4A4A-90E5-FA9347E9360C/en/wlsetup-web.exe
    

Hmm...

    
    
      (note s/web/all/g)
      $ curl -vv http://g.live.com/1rewlive5-all/en/wlsetup-all.exe
      Location: http://wl.dlservice.microsoft.com/download/C/1/B/C1BA42D6-6A50-4A4A-90E5-FA9347E9360C/en/wlsetup-all.exe
    

Can I...?...

    
    
      $ curl -vv http://wl.dlservice.microsoft.com/download/C/1/B/C1BA42D6-6A50-4A4A-90E5-FA9347E9360C/en/wlsetup-all.exe
      < HTTP/1.1 404 Not Found
      (...)
      <div id="header"><h1>Server Error</h1></div>
      (...)
      <h2>404 - File or directory not found.</h2>
      <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
    

Hmmm.

\- Try and load wl.dlservice.microsoft.com/robots.txt in the Web Archive

\- Get redirected to Microsoft homepage!!

\- Lookup wl.dlservice.microsoft.com/* in Web Archive

\- "805 URLs have been captured for this domain."

\- Search for "c1ba..." \- get hits!

[http://web.archive.org/web/20170416220642/http://wl.dlservic...](http://web.archive.org/web/20170416220642/http://wl.dlservice.microsoft.com/download/C/1/B/C1BA42D6-6A50-4A4A-90E5-FA9347E9360C/en/wlsetup-
all.exe)

137329840 bytes.

There are other sites that have copies of the file, but a) this one is from
the Web Archive and b) I've verified using a mixture of WA and still-live
Microsoft redirects that this is the latest-ever release.

~~~
frik
Thanks!

I previously copy&pasted the folder to another PC, and manually patched the
registry and copied some dlls to get it working.

~~~
i336_
Oh, nice. No problem ^^

------
mih
In one of the comments on the page, a reader ran the analysis [1] on a windows
installation and reports the bloat size.

 _Total bytes wasted: 5341278_

[1]
[https://gist.githubusercontent.com/riverar/f4a56b91580af1bd3...](https://gist.githubusercontent.com/riverar/f4a56b91580af1bd3cf4dfacc3733bc3/raw/8f35e3def3173ded72c5715e5af37e830b2a639f/results.txt)

~~~
blibble
amusingly that's about 50% of the size of the webpage itself (2.4mb)

~~~
delinka
Surely you mean twice the size of the web page.

~~~
blibble
er, yes!

------
II2II
By the sounds of it, this bloat is minor. (Keep in mind, the author is
pointing out the two most extreme examples.)

Bloat arises from a lot of different places, a lot of which cannot
realistically be controlled without drastically affecting user expectations,
system performance, and how software is developed.

Consider graphics. If you are quadrupling the color depth, you are quadrupling
the amount of memory required for graphics resources. Even more fun, if you
are doubling the resolution you are quadrupling the amount of memory required
for graphics resources. Going back to the olden days would only be an option
if they are willing to compromise on the quality of the graphics.

At the other end of the spectrum are developers. Should they really be
choosing things like the type of an integer to reduce the size of code and
data? Old software was often limited due to such considerations. In some cases
software used bizarre tricks to reduce bloat, such as cramming data into the
unused bits of an address. (Apparently that was common on 68000 based personal
computers.)

Don't get me wrong, there is a lot of unnecessarily bloated software. Yet I
suspect that the vast majority of that bloat exists for very good reasons.

~~~
vidarh
> (Apparently that was common on 68000 based personal computers.)

I wouldn't say it was very common, but there are some notable examples, such
as Amiga BASIC which was incidentally written by Microsoft. As a result it
needed a patch to run on machines with the bigger M68k CPUs (which had 32
address lines vs. 24 address lines on the 68000), but it was so awful it died
a swift death in any case.

~~~
AstralStorm
Not quite because it was awful, but because Amiga REXX was so much better.

~~~
vidarh
AREXX ports were fantastic, but the language is awful. But Amiga BASIC was no
longer shipped wit the OS as of 2.x anyway, so unless you got a copy elsewhere
there was no choice. But Amiga BASIC had falled out of favour long before
that.

------
Esau
It's not just Windows that is bloated; so is macOS, Android, and iOS. The
wastefulness annoys me and I don't want to hear its okay because we have tons
of disk space and RAM - it is still wasteful.

I understand why they kitchen-sink operating systems - its mainly so they can
crow about new features when releasing new versions of the OS. But I wish they
would offer alternate installs for those of us who are proficient.

~~~
flukus
On android I'm still severely limited by disk space and RAM, the waste is very
noticeable. It still is on PC for most users too, cheap SSD's are still quite
small, there are a lot of new laptops sold with 64GB SSD's and 2GB RAM. Good
luck running anything in node.

------
0x0
It's not the first time Windows has shipped with shameful metadata. For
example, a .wav file shipped with Windows XP appears to be authored with a
pirated version of SoundForge:
[https://web.archive.org/web/20060721090521/http://techrepubl...](https://web.archive.org/web/20060721090521/http://techrepublic.com.com/5208-11183-0.html?forumID=89&threadID=173539&messageID=1765547)

~~~
douche
Eh, that sort of thing happens all the time. We have customers that are
national banks of foreign countries that are running on unactivated or cracked
Windows servers.

I would bet that case was a contractor who was using their own equipment.
Similar things have bit us in the ass with freelancers that have ripped off
stock images and presented them as their own.

~~~
0x0
Yeah, but you'd expect the golden master .iso of a major Windows release to be
examined in greater detail and not sloppily add bloat like that. It's in great
contrast to earlier releases like Windows 95 where blinking dots were removed
from the task bar to save a few kilobytes of demand paged memory.
[https://blogs.msdn.microsoft.com/oldnewthing/20031010-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20031010-00/?p=42203)

~~~
rangibaby
The difference is Win95 had a floppy disk version sold to consumers. 13 disks
specially formatted to store an extra 200kb each.

[https://blogs.msdn.microsoft.com/oldnewthing/20050819-10/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20050819-10/?p=34513)

------
asveikau
It's great investigative work into Windows binaries, and I hope it gets
addressed for the sake of people's disk space, but I think the tone is too
harsh and overstated.

Example: He cites effects on startup time - but has he considered the
existence of virtual memory? When explorer.exe loads and maps the bloat into
address space, it doesn't need it in RAM until the first page fault accessing
it which likely will not even happen.

~~~
withinrafael
Most binaries in Windows are signed. This requires the loader to load each PE
section, hash, do some number crunching, and compare the result -- which
results in the entire file being loaded into memory before execution. This
involves (potentially random?) disk I/O, which can be surprisingly slow on
certain platforms (e.g. Xbox One, HoloLens, anything IoT, anything with eMMC).

~~~
asveikau
Fair point. Another reason code signing is stupid.

------
msimpson
Given this bloat resides in the metadata of PNG assets exported from
Photoshop, couldn't this affect any operating system?

How many applications on Mac OS utilize PNG assets which were exported from
Photoshop without any further optimization?

~~~
0x0
When you add a .png file to an xcode iOS project, it will add a build step to
pngcrush the asset automatically.
[https://developer.apple.com/library/content/qa/qa1681/_index...](https://developer.apple.com/library/content/qa/qa1681/_index.html)

~~~
msimpson
Interesting. I did not know that. Would the same hold true outside iOS
targets?

~~~
saagarjha
macOS supports true vector assets, so I'm guessing it reduces the need for
such measures. But coming back to your question: I'm not sure, but both iOS
and macOS use the same asset filetype, so I'd assume so.

------
blibble
I wonder how many hundreds of kilobytes that adds up to in a 20gb windows
install

~~~
ashark
What's the story on that footprint, anyway? We went from (from memory)
~250-350MB Win98 to ~700-800MB XP to ~10-15GB(!?!?!) Win7, and just up from
there. Plus the default settings seemed to starting going _really_ crazy with
swapspace/caching around the time of Win7. Another 10+GB if you didn't tell it
to knock that crap off. Why the sudden, giant shift? They didn't add 10-15x
the features, that's for sure.

~~~
jug
WinSxS (Windows Side By Side) assemblies were introduced to avoid dll hell by
allowing Windows to store multiple versions of installed dll's. So even a
minor security patch may leave the former version around because other apps
may use/expect it. I think that might add some bloat over time? Also Windows
Update installer caches. A ton of Windows updates actually leave their
installers around in case you want to uninstall them. That can add up! I've
seen it easily get to 1-2 GB.

------
squarefoot
I can't comment on this issue, but if you want to get an idea of how a company
can take over an excellent software and ruin it making it beefier and slower,
just take a look at the wonderful snappy gem that was Cool Edit Pro and what
it became after being morphed into Adobe Audition.

~~~
Intermernet
I still have an installer and valid license for the last version of Cool Edit
Pro. So glad I hung on to it!

------
JayXon
shameless plug: you can throw a windows pe file (exe, dll, etc.) at leanify
and it will remove all the garbage in pngs in that pe file (even those
embedded pngs in high res ico file in pe file), and it will also optimize png
compression with zopfli. But don't use it on windows system files because
modifying those pe files will definitely break the digital signature.

~~~
withinrafael
Author here -- Very neat, saves writing another tool!

------
sp332
Is it feasible to remove this junk yourself, or will the system freak out
about hacked binaries? Would it also complain if I just applied to the PNG
files?

~~~
INTPenis
I'm a Linux specialist and a stranger to Windows but logically any
modification of binaries should result in security issues.

And in a perfect world the external PNG content would also be verified.

~~~
21
All Windows binaries are signed. Changing the embedded PNG will void the
signature. Not sure what Windows will do if explorer.exe has a bad signature.

There is also a Windows system integrity checker service which disallows
changes to protected Windows files, and repairs them automatically (using a
cached copy).

~~~
kuschku
Well, then you modify that, too.

It’s your computer, you installed the software, you have a license, therefore
you own that copy, and can modify it however you wish. (EU Copyright
Directive, especially Article 6 and following).

Now, the question is, why does Windows not allow me to add signatures that
should be considered acceptable by default, why can I not modify my own OS
installation?

~~~
21
Can you modify Android or iOS system files or add your key? Rooting is not
really an answer, because in that case you can also root Windows.

I was under the impression that you can only legally modify files for fair use
or compatibility purposes, not just because you want so.

~~~
kuschku
Yes, and no.

On Android, I can change which keys the bootloader accepts for signing, and
add my own.

From then on, the system will allow me to normally push updates, etc.

Apparently, on Windows, even as Root/Admin, I can not do so.

Additionally, that is correct in the US, but in the EU, having a license is
equivalent to owning the copy, and having all relevant ownership rights, such
as the right to modify, right to rent out, right to resell your copy, etc.

If you can buy a car, add a different FM radio, and resell it, so you can buy
a Windows copy, modify the start button to show a penguin eating an apple, and
resell it.

~~~
21
You can do whatever you want on Windows if you know your way. You can disable
the system integrity checker if you are admin.

You are wrong regarding the right to modify software. It seems to say pretty
clearly that you are only allowed to modify software only to make it work as
intended:

Exclusive rights of the rights-holder: the translation, adaptation,
arrangement and any other alteration of the program;

Limitations of those exclusive rights: A lawful acquirer of a program may
reproduce, translate, adapt, arrange or alter the program, when it is
necessary in order to use the program in accordance with its intended purpose.

[http://eur-lex.europa.eu/legal-content/EN/TXT/?uri=URISERV%3...](http://eur-
lex.europa.eu/legal-content/EN/TXT/?uri=URISERV%3Ami0016)

~~~
kuschku
> You are wrong regarding the right to modify software. It seems to say pretty
> clearly that you are only allowed to modify software only to make it work as
> intended:

That’s your interpretation of the law, the ECJ has ruled otherwise.

~~~
21
Please link to said ruling. The one I could find was related to the right to
sell an unmodified backup copy.

------
wtbob
Egad that XML is horrible! Whoever thought that could possibly be a sane
format?

And to repeat it over and over — it's like a boot stomping on disk space,
forever.

~~~
flukus
Adobe doesn't really get xml at all. A couple of times I've had to make
software produce InDesign templates
([https://spin.atomicobject.com/2017/04/25/dynamic-indesign-
te...](https://spin.atomicobject.com/2017/04/25/dynamic-indesign-templates-
xml-data/)), you have to do string templating because real xml serializers
aren't compatible with the "sortof xml" that adobe uses.

~~~
davidwtbuxton
I did a big project involving InDesign and the XML import a few years ago (CS4
times). Once I learnt to be very careful when editing the templates, it was
pretty satisfying.

I remember that certain XML tags had to use the exact namespace defined in the
Adobe spec, but other than that it all seemed pretty XML compliant.

I was using Python / ElementTree, and had to override the namespaces to make
sure the exact name was being used. Or something.

[https://docs.python.org/2/library/xml.etree.elementtree.html...](https://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.register_namespace)

What other problems did you encounter regarding XML compatibility?

~~~
flukus
It's honestly too many years ago now to remember, I just remember trying a
couple of perfectly reasonable things (maybe attributes, maybe multiple sub
lists, I'm not sure) and having it break. But I think it only broke when you
created a new template, not when you were using an existing one with new data,
or something along those lines. You could make a change and not realize it
broke things for a week.

It was incredibly temperamental too. I got the initial bare bones demo working
and showed the powers that be, but after that a spent a week trying to do it
again and it wouldn't work. I one stage me and a colleague went through a
tutorial on it in sync and the same steps would work on one computer but not
the other.

Had we got it working well we might have even saved this particular company
(mostly a graphic design one), they were in the advanced stages of circling
the drain. It's frustrating when you see the potential of huge productivity
improvements but their just out of reach.

------
21
I remember an article saying that making a trivial change to Windows requires
5 minutes to change the code and 2 weeks to deal with the aftermath
(testing/...)

I wonder how easy it actually is to remove this XMP metadata, considering that
it could potentially break some application which loads a PNG directly from
explorer.exe with a broken PNG parser or something.

------
fiatjaf
Ok, how can a Windows user defend himself from that?

~~~
Analemma_
You can't. This metadata is in the system binaries, which are
cryptographically signed and can't be changed. Hopefully the article spurs
Microsoft to fix it though.

------
zeveb
Wow, that's a bloated format. Here it is as XML:

    
    
        <?xpacket begin="?" id="W5M0MpCehiHzreSzNTczkc9d"?>
        <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.4-c002 1.000000, 0000/00/00-00:00:00        ">
           <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
              <rdf:Description rdf:about=""
                    xmlns:xmp="http://ns.adobe.com/xap/1.0/">
                 <xmp:CreatorTool>Picasa</xmp:CreatorTool>
              </rdf:Description>
              <rdf:Description rdf:about=""
                    xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/"
                    xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
                    xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#">
                 <mwg-rs:Regions rdf:parseType="Resource">
                    <mwg-rs:AppliedToDimensions rdf:parseType="Resource">
                       <stDim:w>912</stDim:w>
                       <stDim:h>687</stDim:h>
                       <stDim:unit>pixel</stDim:unit>
                    </mwg-rs:AppliedToDimensions>
                    <mwg-rs:RegionList>
                       <rdf:Bag>
                          <rdf:li rdf:parseType="Resource">
                             <mwg-rs:Type></mwg-rs:Type>
                             <mwg-rs:Area rdf:parseType="Resource">
                                <stArea:x>0.680921052631579</stArea:x>
                                <stArea:y>0.3537117903930131</stArea:y>
                                <stArea:h>0.4264919941775837</stArea:h>
                                <stArea:w>0.32127192982456143</stArea:w>
                                <stArea:unit>normalized</stArea:unit>
                             </mwg-rs:Area>
                          </rdf:li>
                       </rdf:Bag>
                    </mwg-rs:RegionList>
                 </mwg-rs:Regions>
              </rdf:Description>
              <rdf:Description rdf:about=""
                    xmlns:exif="http://ns.adobe.com/exif/1.0/">
                 <exif:PixelXDimension>912</exif:PixelXDimension>
                 <exif:PixelYDimension>687</exif:PixelYDimension>
                 <exif:ExifVersion>0220</exif:ExifVersion>
              </rdf:Description>
           </rdf:RDF>
        </x:xmpmeta>
        
        <!-- whitespace padding -->
        
        <?xpacket end="w"?>
    

And here it is as SXML
([https://en.wikipedia.org/wiki/SXML](https://en.wikipedia.org/wiki/SXML)):

    
    
        (*TOP* (*PI* |xpacket| "begin=\"?\" id=\"W5M0MpCehiHzreSzNTczkc9d\"")
         (|adobe:ns:meta/:xmpmeta|
          (@ (@ (*NAMESPACES* (|adobe:ns:meta/| "adobe:ns:meta/" . |x|)))
           (|adobe:ns:meta/:xmptk|
            "Adobe XMP Core 5.4-c002 1.000000, 0000/00/00-00:00:00        "))
          "
           "
          (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:RDF|
           (@
            (@
             (*NAMESPACES*
              (|http://www.w3.org/1999/02/22-rdf-syntax-ns#|
               "http://www.w3.org/1999/02/22-rdf-syntax-ns#" . |rdf|))))
           "
              "
           (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:Description|
            (@
             (@
              (*NAMESPACES*
               (|http://ns.adobe.com/xap/1.0/| "http://ns.adobe.com/xap/1.0/"
                . |xmp|)))
             (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:about| ""))
            "
                 "
            (|http://ns.adobe.com/xap/1.0/:CreatorTool| "Picasa") "
              ")
           "
              "
           (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:Description|
            (@
             (@
              (*NAMESPACES*
               (|http://ns.adobe.com/xmp/sType/Area#|
                "http://ns.adobe.com/xmp/sType/Area#" . |stArea|)
               (|http://ns.adobe.com/xap/1.0/sType/Dimensions#|
                "http://ns.adobe.com/xap/1.0/sType/Dimensions#" . |stDim|)
               (|http://www.metadataworkinggroup.com/schemas/regions/|
                "http://www.metadataworkinggroup.com/schemas/regions/" . |mwg-rs|)))
             (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:about| ""))
            "
                 "
            (|http://www.metadataworkinggroup.com/schemas/regions/:Regions|
             (@ (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:parseType| "Resource")) "
                    "
             (|http://www.metadataworkinggroup.com/schemas/regions/:AppliedToDimensions|
              (@ (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:parseType| "Resource")) "
                       "
              (|http://ns.adobe.com/xap/1.0/sType/Dimensions#:w| "912") "
                       "
              (|http://ns.adobe.com/xap/1.0/sType/Dimensions#:h| "687") "
                       "
              (|http://ns.adobe.com/xap/1.0/sType/Dimensions#:unit| "pixel") "
                    ")
             "
                    "
             (|http://www.metadataworkinggroup.com/schemas/regions/:RegionList| "
                       "
              (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:Bag| "
                          "
               (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:li|
                (@
                 (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:parseType| "Resource"))
                "
                             "
                (|http://www.metadataworkinggroup.com/schemas/regions/:Type|) "
                             "
                (|http://www.metadataworkinggroup.com/schemas/regions/:Area|
                 (@
                  (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:parseType| "Resource"))
                 "
                                "
                 (|http://ns.adobe.com/xmp/sType/Area#:x| "0.680921052631579") "
                                "
                 (|http://ns.adobe.com/xmp/sType/Area#:y| "0.3537117903930131") "
                                "
                 (|http://ns.adobe.com/xmp/sType/Area#:h| "0.4264919941775837") "
                                "
                 (|http://ns.adobe.com/xmp/sType/Area#:w| "0.32127192982456143") "
                                "
                 (|http://ns.adobe.com/xmp/sType/Area#:unit| "normalized") "
                             ")
                "
                          ")
               "
                       ")
              "
                    ")
             "
                 ")
            "
              ")
           "
              "
           (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:Description|
            (@
             (@
              (*NAMESPACES*
               (|http://ns.adobe.com/exif/1.0/| "http://ns.adobe.com/exif/1.0/"
                . |exif|)))
             (|http://www.w3.org/1999/02/22-rdf-syntax-ns#:about| ""))
            "
                 "
            (|http://ns.adobe.com/exif/1.0/:PixelXDimension| "912") "
                 "
            (|http://ns.adobe.com/exif/1.0/:PixelYDimension| "687") "
                 "
            (|http://ns.adobe.com/exif/1.0/:ExifVersion| "0220") "
              ")
           "
           ")
          "
        ")
         (*COMMENT* " whitespace padding ") (*PI* |xpacket| "end=\"w\""))
    

The only terrible thing about the SXML is the preserved-whitespace from the
XML (which of course wouldn't exist in pure SXML); otherwise it's much nicer
and contains exactly as much information.

~~~
plaguuuuuu
Not the only one. Whoever decided that namespaces should have
"[http://"](http://") needs to be fired out of a bloody cannon.

~~~
DaiPlusPlus
The URI<->URL equivalence that justifies "[http://](http://) namespaces" was a
neat trick insofar as it means you can use the URL of the XML schema
definition file (.xsd) as the URI of the namespace in a document that contains
it - thus allowing XML readers to automatically perform schema validation when
encountering a new schema.

...but given how well DNS-based package names in Java have worked out (i.e.
poorly) I'm surprised they went in that direction.

On the bright side - URIs (and so, XML namespaces) don't need to use the
[http://](http://) scheme - they could easily switch to urn:
[http://stackoverflow.com/questions/4116282/when-to-use-a-
urn...](http://stackoverflow.com/questions/4116282/when-to-use-a-urn-for-
xmlns)

------
thinknot
Next time, run `optipng -o9 -strip all` on all your png files!

------
pavement
Which is funny, because all of the things I hate about Microsoft and Windows
have absolutely nothing to do with whether or not they provide bloated
binaries, containing PNG images that are bundled with extra XML tags and
descriptors.

Gee whiz! What a world!

