This document explains the requirements for the Download application for the ArsDigita Community System. The Download application provides a system to offer users the capability to obtain files from the web server. These files can be of any format, and different versions of each file can be easily maintained by the site administrator.
A publisher of reports or software would like to be able to ask "Who has downloaded any version of Bloatware 2000?" or to say "Spam everyone who downloaded Bloatware 2000 v2.3 and tell them to upgrade to the new exciting 3.0 version". Similarly, a publisher might wish to charge for downloading or limit downloading to registered members of a group.
The Download Application offers these capabilities to the site administrator. It also offers users of the site a simple mechanism via which to obtain software or reports. Users can by default access the most recent version(s) of each file but can optionally search through older versions.
The Download application consists of:
Danny Developer is interested in working at the hot new open source software company, Bloatsoft. As part of preparing for the interview, she decides to download their most recent release to better learn what technologies Bloatsoft uses, how well their software is documented, etc. The Download application offers her a choice of either the most recently released full version or the beta release of the next version. She downloads both to her local machine, and by examining them is better able to determine the technical directions that Bloatsoft is presently emphasizing. Armed with this knowledge, she gets a job offer, but from examining their software knows that their software engineering practices aren't up to industry standard, so she uses the job offer to negotiate a raise with her current employer.
Paul Publisher is an analyst who maintains an industry report that is regularly updated. He wants to be able to offer his regular paid subscribers access to all versions of his report; offer others the most recent report for a small fee (and collect their email addresses); and offer back reports for free as a teaser to the general public. The Download system allows him to specify a group of registered users (his subscribers) who have unlimited access to all reports; the ability to charge others for a copy of the most recent report; and the option to make old versions of his report publicly accessible for no fee at all. Using the Download application also makes it easy for Paul to collect the email addresses of everyone who accesses his reports. Paul eventually sells his database of user data to a large conglomerate and retires to PI island.
Erica Executive manages the online training arm of a large company. As part of spinning her business unit out into a seperate company, her managers need to know how many web users have accessed the various free and paid versions of the company's training courses. Her managers would also like to better understand their customer base, and so ask Erica what the courses are being used for. Erica is easily able to obtain this information by using the reporting facility in the Download application, which informs her not only who has accessed which course, but why they chose to download the course. She can examine this data by general course, specific version of each course, date, and user. Armed with this information, she negotiates additional stock options as well as a Ferrari 360 Modean as a company car.
Many existing sites implement similar functionality with a FTP (File Transfer Protocol) server. FTP provides a convenient mechanism for transfering files, but provides none of the versioning, descriptive, adminstrative, or reporting features present in the Download application.
10.10.10 Downloads have display names (e.g. "Bloatware 2000")
10.10.20 Downloads have group and scoping permissions association with them
10.10.30 Downloads have a filesystem directory in which their files reside
10.10.40 Downloads have a description of the contents of their files
10.10.50 Downloads store their create date and user
10.20.10 Each version is associated with a Download
10.20.20 Each version has its down release date
10.20.30 Each version has a custom filename as served to a user
10.20.40 Each version has a description of that version
10.20.50 Each version has a status (including promote, offer if asked, and removed)
10.20.60 Each version stores the date and user that created it
10.30.10 Each rule is associated with either a version of a download or all versions of a download
10.30.20 Each rule specifies visibility (who is allowed to see it)
10.30.30 Each rule specifies availability (who is allowed to download it)
10.30.40 A rule may optionally include a price and currency
10.40.10 A log entry references a particular version of a download
10.40.20 A log entry references the user_id of the downloading user
10.40.30 A log entry stores the date of and ip address from which the download took place
10.40.40 A log entry remembers the reason the user specified for why they downloaded the version
20.10.10 Administrator should be able to view a list of all downloads
20.10.20 Administrator should be able to add a new download, specifying information about that download
20.10.30 Administrator should be able to view information about the download
20.10.40 Administrator should be able to edit information about the download
20.10.50 Administrator should be able to remove a download
20.10.60 Administrator should be able to add a new version of a file to a download
20.10.70 Administrator should be able to remove a version of a file from a download
20.10.80 Administrator should be able to see all versions of a file in a download
20.10.90 Administrator should be able to add rules regarding either entire download or individual files in download
20.10.100 Administrator should be able to view reports regarding who has downloaded which versions of what files for what reasons
20.10.110 Administrator should be able to SPAM all users who have downloaded any version of a specific version of a downloadable
20.20.10 User should be able to view a list of available downloads
20.20.20 User should have access to information about each download
20.20.30 User should be able to easily identify the most recent version of each download
20.20.40 User should be able to view older (but still available) versions of each download
20.20.50 User should have access to descriptive information about each version of a download
20.20.60 User should be able to specify why they want to download a particular file
20.20.70 User should be able to download the version of a file of their choice
The Download application is one of the oldest modules in the ACS, having been originally created years ago by Philip Greenspun.
| Document Revision # | Action Taken, Notes | When? | By Whom? |
|---|---|---|---|
| 0.1 | Creation | 2000-10-12 | Alan Dickens |