What does 'sdparta' stand for in a Firefox webRTC session description?
Asked Answered
N

3

25

When generating offer and answer objects during webRTC signaling in Firefox, Mozilla added a pun about Session Description Protocols by returning answers and offers that say "THIS_IS_SDPARTA."

Aside from being funny, does the 'arta' portion of 'SDParta' have any meaning?


Below are two SDPs. One was made in Chrome and the other in Firefox, each using the same web app, STUN server, and signaling server.

A webRTC answer object generated by Chrome:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=-```numbers omitted``` 2 IN IP4 123.4.5.6\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:CYLs\r\na=ice-pwd:```pwd omitted```\r\na=ice-options:trickle\r\na=fingerprint:sha-256 ```sha-256 omitted```\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"
}

A webRTC answer object generated by Firefox:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=mozilla...THIS_IS_SDPARTA-61.0.2```numbers omitted``` 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 ```sha-256 omitted``` \r\na=group:BUNDLE sdparta_0\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=sendrecv\r\na=ice-pwd:```pwd omitted```\r\na=ice-ufrag:8e051271\r\na=mid:sdparta_0\r\na=sctpmap:5000 webrtc-datachannel 256\r\na=setup:active\r\na=max-message-size:1073741823\r\n"
}

'THIS_IS_SDPARTA' is referencing the movie 300 and the subsequent meme, THIS IS SPARTA.

According to RFC 4566 outlining Session Description Protcol, the origin value is assigned by 'o=value' in the SDP string:

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

I am assuming 'THIS_IS_SDPARTA is being treated as an informal prefix to the session id according to protocol.

I can not find any use of 'ARTA' as an acronym that has any relationship to SDP or webRTC. As a word, 'Arta' could be a person's name, or a place in Greece, Djibouti, or Albania. I cannot find any correlation between ancient Sparta and Arta aside from both being Greek. Wikipedia's disambiguation page on 'Arta.'

Searching stack overflow for 'this_is_sdparta' or 'sdparta' returns code snippets of users troubleshooting their SDPs and signaling, nobody has asked a question with sdparta in their title SO search for 'sdparta', nor have any answers directly discussed 'sdparta' or 'this_is_sdparta' that I could find.

I found two examples of developers specifically talking about 'this_is_sdparta'. One is a tweet from Iñaki Baz Castillo without technical explanation:

Sense of humor in Firefox Nightly #WebRTC:

v=0 o=mozilla...THIS_IS_SDPARTA-37.0a1 44108 0 IN IP4 0.0.0.0 a=group:BUNDLE sdparta_0 sdparta_1

The other is an article, where I could not easily find the author's name and who is mostly just enjoying the humor. Here is a screenshot: THIS IS SDPARTA

note: This is a repost of a question I deleted as it included personal network connection details. Sorry for the confusion.

Aside from being funny, does the 'arta' portion of 'SDParta' have any meaning?

Novanovaculite answered 30/9, 2018 at 19:44 Comment(0)
F
62

Back in 2014 five Mozilla developers (including myself) locked them self in an AirBnB for one week to add multi stream support to Firefox. On Monday evening we concluded that it would be impossible to achieve this with the current code base, which at the time contained a full blown SIP stack from Cisco. On Tuesday morning we started ripping out all the code we never wanted to use again and started to replaced it with code written from scratch, but suitable for the more advanced uses cases of WebRTC.

You can imagine that by the end of the week all of us where pretty fed up with the arcane Session Description Protocol. So when Adam opened the bug Byron started to look into the SDP grammar and where it would allow us to put the Firefox version number. That's when we realized that this would be the ideal place to add some fun.

So TL;DR: just a typical Easter egg, where developers wanted to have some fun. Nothing more.

Farahfarand answered 1/10, 2018 at 2:34 Comment(7)
Sounds like quite a week. Thanks for sharing the details! I did not expect two folks from the team to both answer.Novanovaculite
Easter eggs are nice but using it in a protocol is not serious. For example, I wanted to see why the WebRTC connection fails after one minute and was asked to check about:webrtc and saw THIS_IS_SDPARTA. It is weird to see jokes like that when we are trying to find why something fails.Abominable
In one word: AwesomeBowles
@Abominable I disagree. In all seriousness, reading rfc's all day long can be stressful. Without little things to keep you happy, how can we remained balanced in our lives?Rochelrochell
As a game developer, all I ever wanted was UDP support in the browser. Anything can be built upon that. Why so complicated! I can build my own custom NAT traversal, video codecs, HTTP alternative, or whatever on top of UDP without being restricted by what higher level protocols allow me to do. Their standards and timelines are good for corporate interoperability but stifle creativity and technical advancement in other areas.Wild
@Wild if all you need is UDP what do you need a browser for? You could ship your own runtime by getting UDP sockets from the operating system.Farahfarand
@NilsOhlmeier It's true what you say, but the browser is the quickest and easiest way distribute games these days. Plus it's cross platform so has the widest target audience of any tool at present. And you can push out instant updates.Wild
K
31

To expand on Nils' answer, I don't recall whose idea it was among the five of us, but I think it might have been Martin. The first place it appeared in the code is here in some ASCII art in the rewritten code.

We knew that this rewrite was extreme and risky, but our patience with the current state of the code had finally run out, and the mood in the room was reminiscent of Leeroy Jenkins. So a little bit of silly humor crept into the code.


         ,-----.                  ,--.  ,--.
        '  .--./ ,--,--.,--.,--.,-'  '-.`--' ,---. ,--,--,
        |  |    ' ,-.  ||  ||  |'-.  .-',--.| .-. ||      `
        '  '--'\\ '-'  |'  ''  '  |  |  |  |' '-' '|  ||  |
         `-----' `--`--' `----'   `--'  `--' `---' `--''--'

                        :+o+-
                      -dNNNNNd.
                      yNNNNNNNs
                      :mNNNNNm-
                       `/sso/``-://-
                        .:+sydNNNNNNms:                      `://`
                 `-/+shmNNNNNNNNNNNNNNNms-                  :mNNNm/
           `-/oydmNNNNNNNNNNNNNNNNNNNNNNNNdo-              +NNNNNN+
       .shmNNNNNNNNNNNmdyo/:dNNNNNNNNNNNNNNNNdo.         `sNNNNNm+
       hNNNNNNNNmhs+:-`   .dNNNNNNNNNNNNNNNNNNNNh+-`    `hNNNNNm:
       -yddyo/:.         -dNNNNm::ymNNNNNNNNNNNNNNNmdy+/dNNNNNd.
                        :mNNNNd.   `/ymNNNNNNNNNNNNNNNNNNNNNNh`
                       +NNNNNh`       `+hNNNNNNNNNNNNNNNNNNNs
                      sNNNNNy`           .yNNNNNm`-/oymNNNm+
                    `yNNNNNo              oNNNNNm`     `-.
                   .dNNNNm/               oNNNNNm`
                   oNNNNm:                +NNNNNm`
                   `+yho.                 +NNNNNm`
                                          +NNNNNNs.
                                          `yNNNNNNmy-
                                            -smNNNNNNh:
                                              .smNNNNNNh/
                                                `omNNNNNNd:
                                                  `+dNNNNNd
                             ````......````          /hmdy-
            `.:/+osyhddmNNMMMMMMMMMMMMMMMMMMMMNNmddhyso+/:.`
     `-+shmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmhs+-`
  -smMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds-
 hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh
 yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs
  .ohNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+.
      ./oydmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmhyo:.
             `.:/+osyyhddmmNNMMMMMMMMMMMMMMNNmmddhyyso+/:.`

            ,--------.,--.     ,--.           ,--.
            '--.  .--'|  ,---. `--' ,---.     |  | ,---.
               |  |   |  .-.  |,--.(  .-'     |  |(  .-'
               |  |   |  | |  ||  |.-'  `)    |  |.-'  `)
               `--'   `--' `--'`--'`----'     `--'`----'
                                                                ,--.
       ,---.  ,------.  ,------.                  ,--.          |  |
      '   .-' |  .-.  \ |  .--. ' ,--,--.,--.--.,-'  '-. ,--,--.|  |
      `.  `-. |  |  \  :|  '--' |' ,-.  ||  .--''-.  .-'' ,-.  ||  |
      .-'    ||  '--'  /|  | --' \ '-'  ||  |     |  |  \ '-'  |`--'
      `-----' `-------' `--'      `--`--'`--'     `--'   `--`--'.--.
                                                                '__'
Kablesh answered 1/10, 2018 at 13:42 Comment(1)
Thanks for replying! Lots of great answers and details to this question. I appreciate the actual team weighing in. Very cool.Novanovaculite
O
7

Interesting investigation. The user agent has been added for debugging purposes as can be inferred from the associated bug:

Adam Roach: It would be helpful for debugging if we reported the current Firefox version in our SDP.

and then Byron Campen added a changeset with the user agent and the mozilla...THIS_IS_SDPARTA-<user-agent> line. So, there's most certainly nothing more to it.

Oshea answered 30/9, 2018 at 22:39 Comment(1)
Thanks for digging up the bugs and changes. This is a great answer since it provides sources.Novanovaculite

© 2022 - 2024 — McMap. All rights reserved.