Forgot your password?
typodupeerror
The Internet It's funny.  Laugh.

Tim Berners-Lee Is Sorry About the Slashes 620

Posted by Soulskill
from the as-long-as-he's-proud-of-the-dots dept.
Stony Stevenson writes "A light has been shone on one of the great mysteries of the internet. What is the point of the two forward slashes that sit directly in front of the 'www' in every internet website address? The answer, according to Tim Berners-Lee, who had an important role in the creation of the web, is that there isn't one. Berners-Lee revisited that design decision during a recent talk with Paul Mohr of the NY Times when Mohr asked if he would do any differently, given the chance. 'Look at all the paper and trees, he said, that could have been saved if people had not had to write or type out those slashes on paper over the years — not to mention the human labor and time spent typing those two keystrokes countless millions of times in browser address boxes.'"
This discussion has been archived. No new comments can be posted.

Tim Berners-Lee Is Sorry About the Slashes

Comments Filter:
  • Re:yes (Score:3, Informative)

    by Norsefire (1494323) * on Wednesday October 14, 2009 @09:19AM (#29743563) Journal
    There are a number of https websites I have used/use that (for whatever reason) don't automatically redirect if you simply type the web-address. Hence you have to manually type "https://..." to get the secure site.
  • Re:No problemo.. (Score:4, Informative)

    by Norsefire (1494323) * on Wednesday October 14, 2009 @09:20AM (#29743575) Journal

    No one types them anyways. All of the browsers automatically throw the default http syntax in.

    Except web-developers you insensitive clod!

  • Re:Slashdot (Score:5, Informative)

    by sopssa (1498795) * <sopssa@email.com> on Wednesday October 14, 2009 @09:29AM (#29743663) Journal

    On an interesting sidenote, if you type in url /. in Opera it goes to slashdot.

  • gopher, wais (Score:3, Informative)

    by Anonymous Coward on Wednesday October 14, 2009 @09:36AM (#29743763)

    At the time there was also gopher and WAIS- both of which were supported by mosaic. The protocol was necessary to differentiate.

  • by Anonymous Coward on Wednesday October 14, 2009 @09:47AM (#29743893)

    It is explained by TBL at http://www.w3.org/People/Berners-Lee/FAQ.html#etc

    "I wanted the syntax of the URI to separate the bit which the web browser has to know about (www.example.com) from the rest (the opaque string which is blindly requested by the client from the server). Within the rest of the URI, slashes (/) were the clear choice to separate parts of a hierarchical system, and I wanted to be able to make a link without having to know the name of the service (www.example.com) which was publishing the data. The relative URI syntax is just unix pathname syntax reused without apology. Anyone who had used unix would find it quite obvious. Then I needed an extension to add the service name (hostname). In fact this was similar to the problem the Apollo domain system had had when they created a network file system. They had extended the filename syntax to allow //computername/file/path/as/usual. So I just copied Apollo. Apollo was a brand of unix workstation."

  • by dylan_- (1661) on Wednesday October 14, 2009 @09:55AM (#29744011) Homepage

    I remember stating that originally, an indication of which network protocol to use was meant to go between the slashes.

    I don't think so, since the double slashes only apply to Internet schemes anyway. RFC1738 says:

    //<user>:<password>@<host>:<port>/<url-path>

          Some or all of the parts "<user>:<password>@", ":<password>",
          ":<port>", and "/<url-path>" may be excluded. The scheme specific
          data start with a double slash "//" to indicate that it complies with
          the common Internet scheme syntax.

    But if you find another reference, please let me know.

  • Re:gopher, wais (Score:3, Informative)

    by mmkkbb (816035) on Wednesday October 14, 2009 @10:02AM (#29744093) Homepage Journal

    And mailto: and ftp:// [ftp] and news: etc. etc.

  • by atomicstrawberry (955148) on Wednesday October 14, 2009 @10:10AM (#29744203)

    The structure of a URL is:

    protocol://domain/path

    When you use the 'file' protocol, there is no domain, there is only a path. Thus the domain part of the URL is omitted and you get a triple-slash.

  • by Anonymous Coward on Wednesday October 14, 2009 @10:45AM (#29744723)

    Back in the '80s, the double slashes were invented to indicate that the following token was a machine name and not a local directory or local mount-point. The first time I met the double slashes was on an Apollo workstation, which ran Domain, one of the first OSes where you could access remote files and local files without special software--it was built into the OS. At the time, on UNIX, you had to use commands like FTP, or RCP. On Domain, you could also make a soft symlink on your local computer that pointed to another server, so you could move directories around the network and the local programs didn't need to change. (I would not be surprised if the double slashes came from DEC VMS, but I don't know.)

    Compare syntaxes:
    cp //machine1/dir/dir/filename //machine2/dir/dir -- copy a file from machine1 to machine 2
    cp /dir/dir/filename //machine2/dir/dir -- copy a file from the current machine to machine 2

    In RCP the syntax was rather more cumbersome:
    rcp user@machine1:/dir/dir/filename /dir/dir/filename -- copy a file from machine1 to my local machine
    In RCP, the assumption is that a path name is a "remote" path if it contains the character ':'.

    Windows NT and Novell Netware both used double slashes to denote machine names, although Novell's implementation wasn't originally transparent to application programs. Because of the history of PC-DOS, they used backslashes instead of forward slashes.

  • by TypoNAM (695420) on Wednesday October 14, 2009 @10:48AM (#29744763)

    The structure of a URL is:

    protocol://domain/path

    When you use the 'file' protocol, there is no domain, there is only a path. Thus the domain part of the URL is omitted and you get a triple-slash.

    Wrong. Please read RFC1738 again. It specifically states:

    3.10 FILES

    ...

    A file URL takes the form:
    file://<host>/<path>

    ...

    As a special case, <host> can be the string "localhost" or the empty
    string
    ; this is interpreted as `the machine from which the URL is
    being interpreted'.

  • Wrong (Score:3, Informative)

    by brian0918 (638904) <brian0918@@@gmail...com> on Wednesday October 14, 2009 @10:49AM (#29744797)
    Uhh.... no. Ring finger for W, middle finger for E, index finger for B. I can do it almost instantaneously.
  • Re:yeah and (Score:5, Informative)

    by natehoy (1608657) on Wednesday October 14, 2009 @10:52AM (#29744833) Journal

    I use the term "forwardslash" fairly frequently, because a good number of times when I say "slash" people ask "which one?" While "slash" and "backslash" are technically correct, "forwardslash" is a descriptive synonym for "slash". Yes, it adds unnecessary syllables, but it's not nearly as bad as the myriad (and sometimes very ambiguous) names for "*" (asterisk, star, splat, bang, etc) and "#" (number, pound, hash, octothorp, etc).

    I do not use "full colon" except when I've had too much curry and am waiting in line at a restroom asking the person in the stall to please hurry up lest they exit the stall into a sudden Superfund Site.

  • by Hurricane78 (562437) <.gro.todhsals. .ta. .deteled.> on Wednesday October 14, 2009 @11:09AM (#29745075)

    Just like one slash at the beginning is for the root directory in an absolute path, two slashes are for the root of the network.

    The only question is, why it's
    [protocol]://[sub].[domain].[tld]/[path]...
    instead of
    [protocol]://[tld]/[domain]/[sub]/[path]...

    But I guess that way you can separate what's a different server and what is not.

    Only the file protocol has it wrong, because it's not the root of the network, when you write:
    file:///[path]
    It should be:
    file:/[path]

    But hey, nothing stops you from using your own syntax when you write software like a browser.

    In fact, I'd love to see the net just becoming another part of the path of the "everything is a file" file system of UNIX machines.

  • by dharte (762124) on Wednesday October 14, 2009 @12:00PM (#29745833) Homepage
    The BBC have put together a list of 10 other uses for a /: http://news.bbc.co.uk/1/hi/magazine/8306515.stm [bbc.co.uk]
  • by c0y (169660) on Wednesday October 14, 2009 @12:01PM (#29745849) Homepage

    How would it allow named virtual hosts? The only thing you have at the network layer is the IP address that the message was sent to, that's why HTTPS virtual hosts is difficult to implement.

    When a client makes an initial HTTPS request, there is a high likelihood that they want to submit confidential information. Therefore the browser and server perform an SSL handshake so that the initial client's first GET/POST/WHATEVER is encrypted.

    Virtual hosting requires looking at the client-supplied host header value in that GET/POST. In order to return the right SSL certificate we need that host header value to determine which site's cert to serve. But we can't get at that host header value until the SSL negotiation has completed. So virtual hosting for HTTPS on a single IP is simply not possible at present due to this catch-22.

    With the idea of SRV records for port values, virtual hosting for HTTPS becomes possible. I simply map each new site's certificate to a new port number. When the client makes a connection, we already know in advance what certificate they are looking for because only one is bound to each specific port.

    Under the current schema, we need a discrete IP address per SSL certificate in order to avoid this problem, but with SRV's, we can use a port number to hold the same mapping, without requiring the client to put in :port (which would work today for virtual HTTPS hosting if we could get everyone in the world to somehow know in advance what port number they want).

    I suppose a variant of this is possible today. Imagine I have a storefront at foo.com. A client enters store and puts stuff in their cart. They never enter my store by typing HTTPS in their browser. My site could hardcode the link to https://www.foo.com:444/ [foo.com] inside the "Checkout" link, and I could have many other SSL hosts all sharing the same IP in that manner. I can understand why web hosts and their clients wouldn't really like this idea. But the SRV method would be elegant enough to be adopted, IMHO.

  • by clone53421 (1310749) on Wednesday October 14, 2009 @12:18PM (#29746111) Journal

    infront

    That is not a word.

    the "www" in every internet website address

    Many website addresses don't begin with "www", including the address of the page you're currently reading.

    The physicist admitted that if he had his time again, he might have made a change, or more specifically, two.

    Well, what's the other one? I'm waiting, don't keep me in suspense here... (Not to mention, correctly speaking he would have done it differently, not have made a change.)

    "Boy, now people on the radio are calling it ‘backslash backslash’," Sir Tim told his audience, even though he knows they are, in fact, forward slashes.

    He does? Whew, glad they cleared that one up.

    Showing them his index finger he added: "People are having to use that finger so much."

    I type the slash key with my pinky finger, not my index finger. I even checked the British keyboard [google.com] to make sure it's not a culture disconnect. The British keyboard seems to have it in the same place as the keyboard I'm familiar with.

    He knows that no one has calculated the number of exasperated groans emitted at the sight of a "syntax error" message generated by the grave omission of a single slash.

    I've never seen such an error message, and both Firefox and IE correctly convert http:/google.com to http://google.com [google.com].

    Nowadays web browsers such as Explorer

    Explorer is Windows' file system manager. The web browser is called Internet Explorer.

    the British scientist who created the world wide web

    Sir Tim Berners-Lee, who wrote the code that transformed a private computer network into the web two decades ago

    The physicist is credited with being the architect of the world wide web, which was to transform the internet into something usable and understandable by more than just computer programmers.

    Shouldn't they say it a third time, in case someone missed it the first two times?

    Today the URLs — better known as web addresses — that Sir Tim created, beginning http://www, are familiar to anyone navigating their way around the internet.

    And here's with the www business again. Stop it, I say.

  • Re:backslashdot (Score:3, Informative)

    by LWATCDR (28044) on Wednesday October 14, 2009 @12:42PM (#29746429) Homepage Journal

    MS-DOS was a copy of CP/M.
    CP/M used / for switches so MS did the same. Maybe CP/M machines didn't have a backslash? I know they sure didn't have a pipe command. Also QD-Dos was designed to run on S100 buss machines and used terminals. Microsoft bought it and made it into PC-Dos and then made it into MS-DOS.

  • by jc42 (318812) on Wednesday October 14, 2009 @03:00PM (#29748301) Homepage Journal

    So, what would you regexp for if all you had was a ":"? Normal text quite often does contain colons....

    Back in the early 1980s, before the folks at CERN gave us the first browser, there was another notation that was implemented by an assortment of networking software. It originated, as far as I can tell, with The Newcastle Connection (from the U of Newcastle-upon-Tyne" in England), one of the first fully-distributed unix file systems. What it did conceptually was to define a conceptual network directory one level above your root directory, named "/../". So to reference a file on machine X.Y.Z, you'd use a path like "/../X.Y.Z/...". The actual server on each machine typically wouldn't export its "/" directory, but rather would do what web servers do, and supply only a server-root directory (which could also be mounted by other machines by the unix mount command). So if you tried to access the file /../X.Y.Z/some/dir/foo.txt, you'd get the file that the remote machine had at /server-root/some/dir/foo.txt, so files outside the /server-root/ directory would be invisible to outsiders.

    This is, of course, merely another syntax for what the WWW calls "http://X.Y.Z/some/dir/foo.txt", but without the protocol field. The TPC implementation made the file readable or writable, depending on what the permission module allowed, via the usual open(), read(), write(), etc. library routines. This meant that all of the software on your machine was automatically able to use accessible files on other machines without any special coding. As with the Web, you just needed the machine name and the file's location relative to the server-root directory.

    The advantage of the Web's "http://" notation, of course, is that it allow the explicit use of different protocols. TNC's "/../" notation doesn't do that; the implementation gives direct access via the usual file-system routines, and hides the comm protocol inside the kernel's file-system code just as is done with local file I/O.

    Note that the "/../" notation isn't any more difficult to match than "http://", and it's a string that's equally unlikely to occur anywhere but in a TNC-style file reference. And note that there's no problem with adding a ":port" to the machine name with either notation.

    I've sometimes wondered why various browsers, especially the mozilla suite, haven't quietly implemented TNC notation and invited users to start using it. You don't need permission from any standards body to do this. It would only take a few lines of new code, wherever the software parses URLs. You'd have to add "/\.\./" as an alternative to "(\w*)://" at the start of the match, and make 'HTTP' the default protocol if omitted. While you're at it, add another * after the //, so omitting the second / will also work. But that's probably too user-friendly for any real web developer to bother implementing. ;-)

    (Actually, I've done this in a few projects that I've worked on. It doesn't break anything, and when people see that notation, they usually really like it and the new conceptual model of the Net that it puts into their mind. The Net becomes just a large, slow bus connecting millions of machines and their disks, joining them into one huge virtual computer. Replacing a big, messy communication protocol with a big, tree-structured file system gives a major reduction in complexity and points to a much easier way to do things.)

  • Re:backslashdot (Score:2, Informative)

    by BuckaBooBob (635108) on Wednesday October 14, 2009 @03:29PM (#29748717)

    http://en.wikipedia.org/wiki/Domain_Name_System [wikipedia.org]

    Whats wrong with DNS server? I think you have fallen along the path of those that call SQL.. (forgive me for this) Sequel...

     

  • Re:DNS (Score:3, Informative)

    by Jesus_666 (702802) on Wednesday October 14, 2009 @06:13PM (#29750691)
    Of course one could also have had a packet layout like this:

    com.example.domain \2
    some
    other
    com.another.domain \1
    www
    org.another \1
    yet \1
    blah


    Essentially, every line ends with one byte (in order to save space) stating how many of the following lines are direct subdomains of this one. The last line would thus identify org.another.yet.blah. Granted, this would be slightly more computationally intensive than the currently used one.

    Come to think of it, if space and computational complexity is that important, one could simply have used the current format - declaring that the order of subdomains in the format is reserved for convenience reasons. It's not like we don't have a few weird file formats that use such reasoning.

If a subordinate asks you a pertinent question, look at him as if he had lost his senses. When he looks down, paraphrase the question back at him.

Working...