One XML file put this domain into download catalogues
Five XML files answer the question this page exists for. The earliest capture the Internet Archive holds is dated 2009-12-14 and the latest 2011-11-10. Between them they describe four products — a Windows utility suite, a bulk email sender, a vision-therapy program and a children’s song player. Each file runs to roughly 11 KB. Each opens with a MASTER_PAD_VERSION element reading 3.10 or 3.01, and each names the program that wrote it in the next element down: PADGen 3.1.0.41. They are PAD files, and they are the mechanism behind a link profile in nine languages.
PAD is the Portable Application Description: a flat XML document, designed by the Association of Shareware Professionals and introduced in 1998, that describes one product — who publishes it, what it costs, where to download it, and what it does, at five fixed lengths. A vendor hosts one such file at a stable URL. Download catalogues fetch it on a schedule, notice when it changes, and rewrite their listings from it. No editor reads anything. That is the whole design, and it worked.
Tenglnet published its Windows Winset utilities at tlwinset.com from roughly 2005 to 2016. The registration lapsed, the address passed through other owners, and it came to this publication in 2026. Working Set has no connection to Tenglnet, holds no copy of its software, distributes none, and has never run any of it.
§1Writing the software was the cheap part and getting listed was the expensive part
- Fields a catalogue wanted
- 68 by the later spec, retyped per site
- Cost per version bump, per catalogue
- 1 form, every release, forever
- Cost of not being listed
- NOT ESTABLISHED — see §9
The distribution problem predates the web. The ASP’s own historical archive
describes the association’s earlier contribution in one sentence: during the era of
dial-up bulletin board systems it played a significant role in making FILE_ID.DIZ
files a de facto standard for describing software products for catalog vendors, and
later, early internet download sites
. FILE_ID.DIZ was a short
plain-text description shipped inside the archive so that whoever redistributed the
archive would describe it the same way the author did.
The web broke that. A description inside a ZIP file is no help to a website that wants a price, a screenshot, an ordering link and a category, and it goes stale the moment a new build ships. What replaced it was a submission form per catalogue: the same forty or so facts, typed again on every site that would take a listing, and typed again at every release. For a vendor selling a $19 utility, distribution cost hours of retyping and it recurred. That is the problem PAD was built to remove, and removing it is what made a two-person operation with one product look, from the outside, like a company with international reach.
§2A PAD file is 68 fields of nested XML with a regular expression on every one
- Fields in the 3.11 specification
- 68, each with a constraint pattern
- Description slots per file
- 5 — 45, 80, 250, 450 and 2,000 characters
- XML attributes the format uses
- 0 — nested elements only
We fetched the machine-readable specification from a 2010 capture and counted it. PAD 3.11 defines 68 fields. Every one carries five things: an element name, an XPath, a human title, a short description, and a regular expression that decides whether the value is legal. The format uses nested elements and no attributes at all, so the root element XML_DIZ_INFO contains Company_Info, Program_Info, Program_Descriptions, Web_Info and Permissions, and every leaf is a string a parser can lift without knowing anything about software.
The constraints are the interesting part, because they are what let a receiving site drop the values straight into a database column. Company_Name is two to forty characters. Program_Cost_Dollars is numeric with a full stop as the decimal separator. Program_Type must come from a list, of which Shareware is one entry. Primary_Download_URL must be an FTP or HTTP URL ending in exe, zip or another registered extension. Application_Screenshot_URL must end in gif, jpg or png. And the product gets described five times over, in Char_Desc_45, Char_Desc_80, Char_Desc_250, Char_Desc_450 and Char_Desc_2000 — one for a directory row, one for a search result, three for pages of increasing size. The vendor wrote all five. Nobody else ever wrote any of them.
The specification became machine-readable at version 2.01 in May 2004, when the ASP published the spec itself as an XML file listing, per field, the tag name, the XPath, the title, the description, the regular expression and a plain-language rendering of the regular expression. That is a small act with a large consequence: from that release, a catalogue could validate a submitted file without a human forming an opinion about it, and a vendor could check their own file before submitting it. Validation replaced editing.
§3The vendor hosts one file, the catalogues poll it, and nobody reads anything
- Files the vendor hosts
- 1 per product, at a URL that must not change
- Work per catalogue after submission
- 0 — the catalogue re-fetches on its own schedule
- Reported reach at peak
- 40,000+ publishers, 1,000+ catalogues — reported, see this section
The ASP’s own FAQ, captured in April 2010, states the loop in the vendor’s
own interest. It tells authors to put the file on their website, to use an address that
will not change, and not to put a version number in the link, because
some sites are automatically checking your PAD files for changes on a regular
schedule, and when they find a new version of the PAD file, they update their lists
immediately
. The same page explains why the file has to contain a URL pointing back
at itself, in Application_XML_File_URL: without it, a site cannot
poll you, and your listing freezes at whatever it said the day it was created.
The ASP supplied both halves. Authors got a free editor, PADGen — every file this domain published names it in MASTER_PAD_EDITOR — plus a hosted repository to publish the URL into. Webmasters got an SDK of sample extraction code and, remarkably, PADKit: a ready-to-run PHP and MySQL download site, given away by the association. A person who wanted to run a software catalogue in 2006 could take one, point it at the repository, and have a stocked directory without writing a line about a single product. That is worth holding onto when the number of catalogue sites from this period looks surprising.
Those are the numbers everyone cites, and we can check neither. They are published by
the association that designed the format, about the format, with no method, no source and
no date beyond the early 21st century
. The general reference works give a much
lower figure for the same thing — more than 6,000 publishers — and also with
no method. So the two most widely repeated figures for PAD adoption disagree by roughly a
factor of six, the larger comes from an interested party, and we found no independent
count at all. The honest sentence is that PAD was used by a great many small vendors
across a great many catalogue sites, and that the size of “many” is
UNVERIFIED.
§4Nine languages of inbound links count catalogues that polled a file, not readers who liked the software
- Language identifiers PAD 3.11 accepts
- 140, in Program_Language
- Language nodes in its description block
- 1 — English
- Languages declared by this domain’s files
- 1, in all 5 of them
Here is the part that changes how a link profile should be read. The Program_Language field accepts 140 language identifiers, and all nine of the languages this domain’s inbound links are written in — Czech, Slovak, Hungarian, Romanian, Finnish, German, Croatian, Russian and Spanish — are on that list. But that field describes the program’s user interface, not the file. The description block in the 3.11 specification enumerates exactly one language node, English, and there is no second one among the 68 fields. Every one of this domain’s five PAD files declares Program_Language as English and fills the five description slots in English only.
So the multilingual listings were never multilingual copy. A Czech catalogue and a Finnish catalogue polled the same file, received the same English paragraph, and wrapped it in their own furniture — their navigation, their category names, their download button, sometimes a machine translation. The nine languages belong to the receiving sites. Article 1 records the matching detail on the vendor’s own side: the thirty-two-locale menu on the product page was a translate.google.com widget, not thirty-two translations.
The three rows in that figure are the argument in its shortest form. Application_Screenshot_URL in the Windows Winset file reads http://down.tlwinset.com/winset/screenshot.gif, which is exactly the address a German-language catalogue is recorded as linking — a subdomain image URL that no reader would ever have found on their own, because it was never navigable from the site. Primary_Download_URL in the mailer’s file reads http://www.tlwinset.com/mail/tools/AlmsSetup.exe, the path a Russian catalogue is recorded as linking and the path article 3 now serves as HTML. The links did not accumulate around a product. They were emitted by a file, one field at a time.
We publish that about ourselves rather than about the previous owner, because it is the honest account of what this domain’s standing is made of. The inbound links this address carries are, in large part, the mechanical residue of an XML file that a vendor updated and machines copied. They record that a product existed and was catalogued. They record nothing about whether it worked, and a link count from this era that is presented as a measure of quality is being read wrong. Our about page says who publishes here now and why the address was taken on; this section says what the address actually inherited.
§5The archived page at /introduce.htm is the vendor’s own long description with a new opening bolted on
- Review copy on the archived page
- 2,332 characters, 355 words
- Char_Desc_2000 in the PAD file
- 1,376 characters
- Longest identical run between them
- 1,178 characters
If you followed a link to /introduce.htm you are reading this page because that URL now points here. The archived page, captured four times between 2010-05-01 and 2012-12-17, carries three paragraphs of fluent third-person product description in a register that does not match anything else the vendor published: the rest of the site is terse, numbered feature lists in imperfect English, and this is marketing prose with clauses. It reads as third-party catalogue review copy, and that is how our research notes first classified it.
The classification is half right, and the archive settles which half. We compared the
page’s review copy against Char_Desc_2000 in the Windows
Winset PAD file captured 2010-11-10. The two share a single identical run of 1,178
characters, beginning at you can clean up, optimize, speed up, and maintain your PC in
good state
and continuing unbroken through the entire tour of the product’s
panes (web.archive.org/web/20101110025754/http://down.tlwinset.com/winset/pad_file.xml,
capture 2010-11-10). Compared as sequences of characters with Python’s
difflib.SequenceMatcher, the two passages score 0.83. This is not
a resemblance of subject; it is the same text.
Two things follow, and only two. First, the page is not an independent review of the product, whoever typed it: its body is the field a vendor fills in to be republished by strangers, sitting on the vendor’s own website. Second, it is not a straight paste either — the full passage runs to 2,332 characters, exceeding the 2,000-character ceiling the specification puts on that field, and its opening 840 characters have no counterpart in any of the five files. Somebody wrote an introduction around the syndicated paragraph; we cannot establish who, and we say so in §9 rather than guess. The direction of travel is what is documented here. The text that spread was authored once, by or for the vendor, and everything downstream of it is a copy.
§6A catalogue listing is evidence that a file was polled and evidence of nothing else
- Catalogue listings we opened 2026-08-06
- 3 of 5 attempted
- Still carrying the vendor’s own field text
- 2 of the 3
- Editorial judgements the format required
- 0
The text is still out there. On 2026-08-06 we opened three surviving catalogue
listings for this product and could not open two more: one returned HTTP 403 to us and
one no longer resolves in DNS. Of the three that opened,
apponic.com still carries
Char_Desc_450 nearly word for word, down to the phrase
Include a lot of power tools to daily use
— quoted here from the vendor’s
own archived PAD file rather than from the listing
(web.archive.org/web/20101110025754/http://down.tlwinset.com/winset/pad_file.xml,
capture 2010-11-10) — and still prints the publisher name cut
off mid-word at thirty characters — the signature of a field arriving in a database
column rather than a sentence arriving in an article.
en.freedownloadmanager.org still reproduces the module list from
Char_Desc_2000 in order, under a note saying the download link is
gone. updatestar.com has since replaced the description with a
rewrite of its own. Sixteen years after the file was last updated, two of three listings
are still repeating the vendor.
This is why every reference to a download catalogue on this site is marked as evidence of propagation and never as a review, and why we name them without linking them. Such a listing tells you that a URL was submitted or polled. It does not tell you that anybody installed the software, that anybody assessed it, or that the listing was seen by a human being after the importer ran. Treating a wall of catalogue results as reputation is the commonest error in reading software from this period, and the format was built so that a listing could exist without a judgement behind it. We link no downloads either: article 3 sets out why a fifteen-year-old unmaintained installer is a risk with no upside.
One further detail belongs here because it is checkable and because it complicates the tidy version. Every one of this domain’s five PAD files sets ASP_Member to N. The publisher was not a member of the association whose format it used, and did not need to be. Membership was never a gate on the format, which is a point in the format’s favour as an open standard and a warning about reading an association’s name on a file as a credential.
§7The association that designed PAD dissolved, and released the final specification into the public domain a month later
- Association’s operating life
- founded 1987, ceased 2021-12-31
- Numbered releases we counted
- 10 dated on the ASP’s history page, 1.00 to 3.10
- Licence on PAD 4.0 since January 2022
- public domain, per the ASP’s own statement
The association’s historical archive, which is what remains at its address,
states the ending plainly and we quote it rather than paraphrase: the membership voted to
dissolve, the association stopped accepting new members in mid-2020, and formally
ceased operations on December 31, 2021
, after nearly 34 years
. On the same
page: The final release of the PAD specification, v4.0 was released to the public
domain as of January 2022
. Both statements are the ASP’s own, published about
itself, and we could find no independent confirmation of either; on a question of what an
organisation did to its own trade association and its own specification, its own
statement is the primary source available, and the date it was read is 2026-08-06.
The specification history page dates ten numbered releases from 1.00 through 3.10 (June 2009), adding fields as the industry moved — Android and an apk extension in November 2008, iPhone and iPod in March 2009, an XML digital signature in November 2006. It does not date 1.00 itself, so the 1998 introduction is reported rather than pinned; the two later releases, 3.11 in June 2010 and 4.00 in December 2012, are likewise reported by general reference works rather than by a page we could fetch from the ASP. The association’s own name changed under the format’s feet, and the archive caught it mid-move: a page captured on 2010-04-01 reads Association of Shareware Professionals in its masthead while another captured on 2010-05-23 reads Association of Software Professionals, with the trademark line still crediting the older name.
§8Package managers solved the trust problem by taking the file away from the vendor
- Minimal winget manifest
- 10 required keys, including InstallerSha256
- Who hosts the manifest
- the repository, not the vendor
- Integrity fields in PAD 3.11
- 0 — three size fields, no hash
Compare the successor. A Windows Package Manager submission is a YAML manifest that
lives in a community repository on GitHub, not on the publisher’s server;
Microsoft’s documentation states that manifests and the packages they reference
are automatically validated and may also be reviewed manually
. The minimal schema
requires ten keys, one of which is InstallerSha256, a hash of the
file being described. Localisation is a first-class object rather than an absence: a
package carries a default-locale file and any number of additional
PackageLocale files in BCP 47 form, so a French description is a
French description and not a machine translation of an English one wrapped in French
furniture.
Set that against what PAD could not do, with this domain as the worked example. There is no hash in the 3.11 field list — three size fields and no integrity value at all — so a polling catalogue could confirm that a file was 12,056,893 bytes and nothing whatever about what those bytes were. And the identity fields were whatever the vendor typed. In the four files captured through 2010, Country reads India; in the file captured 2011-11-10 the same street line appears under Washington DC and United States of America. Across the five, one building number appears on two differently spelled streets under two postcodes, and the city and state fields carry what look like parts of a neighbourhood and a road name in the wrong slots. We report the inconsistency as an inconsistency, per the standing rule here. The mechanical point is neutral and is the whole argument of this section: whatever those fields said, every catalogue that polled the file republished it, and no step in the process was capable of checking.
That is the trade, and it should be stated in both directions rather than as a moral. What the app stores and the package managers closed was a door that had let anybody through, verification and all. What they closed it on was the two- or three-person operation shipping a $19 utility from a spare room to thirty countries on the strength of one XML file, a free editor and a format that cost nothing to adopt. That was most of this industry. The practice this site examines — unfalsifiable speed claims, meters with no counter behind them, a diagnosis manufactured before the scan — deserves every hard word we give it in the Ledger, and the format that distributed it was a genuinely good piece of engineering built by volunteers and given away. Criticise the practice. The practitioners solved a real problem, in public, with 68 fields and a regular expression each.
§9Standing, and what we could not settle
- Primary sources read
- 13, each dated in §10
- Archive captures fetched by us
- 14, at their capture URLs
- Corrections since publication
- 0 — first publication 2026-08-06
§10Sources and method, with the date each was read
- Primary sources
- 13 — specification, association, vendor files, Microsoft
- Archive entries
- 14, all fetched at their capture URLs
- Sources we could not open
- 3 — 1 DNS failure, 1 HTTP 403, 1 host gone
Method, in one sentence: the format is described from the machine-readable specification and the association’s own pages, fetched from the Internet Archive at the capture URLs given because the live host no longer resolves; this domain’s five PAD files were located through the archive’s index of the domain and read in full; the text comparison in §5 was computed by us over the two archived passages; the successor format is described from Microsoft’s current documentation; and the three catalogue listings in §6 are cited as evidence of propagation, named rather than linked, and never as reviews.
- Association of Shareware Professionals, PAD Specification 3.11, the machine-readable specification — 68 field definitions with XPaths and constraint patterns. pad.asp-software.org/spec/pad_spec.xml, capture 2010-05-24. Fetched 2026-08-06.
- ASP, PAD Specification History — the ten dated releases and their per-field changes. pad.asp-software.org/spec/history.php, capture 2010-05-23. Fetched 2026-08-06.
- ASP, PAD FAQ — the polling instruction, the stable-URL rule and the self-referencing XML URL field. pad.asp-software.org/padfaq.php, capture 2010-04-02. Fetched 2026-08-06.
- ASP, Webmaster Resources — the SDK, the repository and PADKit. pad.asp-software.org/webmasters.php, capture 2010-04-01. Fetched 2026-08-06. Read with pad.asp-software.org/archive.php, capture 2010-05-23, for the association’s name change and trademark line.
- ASP, PAD SDK sample pad_file.xml — a reference file for field shape. pad.asp-software.org/padsdk/php/samples/pad_file.xml, capture 2010-07-03. Fetched 2026-08-06.
- ASP Historical Archive — founding year, FILE_ID.DIZ, the adoption figures, the dissolution date and the PAD 4.0 public-domain statement. asp-software.org. Read 2026-08-06.
- Archived vendor PAD file, Windows Winset, version 4.1.5, dated 2010-11-02 in the file. down.tlwinset.com/winset/pad_file.xml, capture 2010-11-10. Fetched 2026-08-06.
- Archived vendor PAD file, Windows Winset, version 4.0.4. tlwinset.com/pad/pad_file.xml, capture 2010-03-14. Fetched 2026-08-06.
- Archived vendor PAD file, TLN Email Sender, version 4.0 — the file carrying the .exe path as Primary_Download_URL. down.tlwinset.com/mail/pad.xml, capture 2010-08-24. Fetched 2026-08-06.
- Archived vendor PAD file, Amblyopia ABC — PAD 3.01, written by PADGen 3.0.1.38. tlwinset.com/ampad/pad.xml, capture 2009-12-14. Fetched 2026-08-06.
- Archived vendor PAD file, TLN Children Songs — the file carrying the United States address fields. down.tlwinset.com/song/pad.xml, capture 2011-11-10. Fetched 2026-08-06.
- Archived page, tlwinset.com/introduce.htm — the review copy compared in §5. capture 2010-05-01 and capture 2012-12-17. Fetched 2026-08-06. Four captures are indexed, 2010-05-01 to 2012-12-17.
- Microsoft, Create your package manifest, ms.date 2026-03-24 — the YAML schema, the minimal required keys, InstallerSha256 and the per-locale files. learn.microsoft.com/en-us/windows/package-manager/package/manifest. Read 2026-08-06. With WinGet, ms.date 2025-02-13, for the validation and review statement. learn.microsoft.com/en-us/windows/package-manager/. Read 2026-08-06.
- Reported, not pinned: the 1998 introduction date, the 3.11 (June 2010) and 4.00 (December 2012) release dates, the “more than 6,000 software publishers” figure, and the closure of the successor PAD 4.0 platform in April 2024 are taken from the general reference article Portable Application Description on Wikipedia, read 2026-08-06. They are named here as reported because no ASP page we could fetch carries them.
- Cited as evidence of propagation only, named and not linked, never as reviews: surviving catalogue listings at apponic.com, en.freedownloadmanager.org and updatestar.com, opened 2026-08-06.
- Could not open: pad.asp-software.org no longer resolves in DNS (2026-08-06), which is why every specification source above is an archive capture; a listing at software.informer.com returned HTTP 403 to us, as it did during earlier research on 2026-08-05; and the soft32.com product subdomain no longer resolves.
Previous Windows Winset, read as an index of Windows mechanisms — the complete public record of the product these files described, and what each advertised feature would have had to write to.
Next The Mechanism Ledger — every claim this category sells, joined to the operating-system surface it must touch if the claim is true at all, with a verdict and a date on each row.