{"id":161,"date":"2016-11-12T18:38:38","date_gmt":"2016-11-12T23:38:38","guid":{"rendered":"https:\/\/www.tootsbook.com\/tootsbook\/?p=161"},"modified":"2016-11-12T18:38:38","modified_gmt":"2016-11-12T23:38:38","slug":"development-testing-and-reliability","status":"publish","type":"post","link":"https:\/\/www.tootsbook.com\/tootsbook\/2016\/11\/development-testing-and-reliability\/","title":{"rendered":"Development, Testing, and Reliability"},"content":{"rendered":"<p>Hi,\u00a0 this post is from Bruce-Robert Fenn Pocock. I&#8217;m the \u201cBenevolent Dictator\u201d of the Violet Volts project, and the author of the game system from Tootsville IV and the new Tootsville V. Today I&#8217;m going to talk a little bit about (a) Why is it taking so long to get back online? and (b) Software testing and some great partnerships that are helping us with that.<\/p>\n<p>Now, the first question on your mind, if you&#8217;re reading this, is \u201cwhat&#8217;s taking so long?\u201d<\/p>\n<p>I&#8217;m going to start off by pointing out that building an entire world \u2014 particularly a shared, persistent, multi-player online world \u2014 is a pretty big job to begin with. Doing it in people&#8217;s spare time and with no budget (well, my husband and I are footing the bill, anyway, and we love y&#8217;all but if we go broke doing this, it all goes away \u2026) is hard. It&#8217;s going to take some time.<\/p>\n<p>We&#8217;re doing it the hardest way possible in order to build in some reliability that most software just does not need to have. For one thing, you may have seen mentioned, we&#8217;re not going to be running this game \u201conly\u201d on a big stack of expensive \u201ccloud\u201d servers like Res Interactive (and most on-line services) have done in the past. As programmers like to point out, \u201cthere is no \u2018cloud\u2019 \u2014 it&#8217;s just someone else&#8217;s computer.\u201d Well, the Gossipnet system we&#8217;re developing for the game is based on the idea of running \u201cyour share\u201d of the game on your computer. You can imagine that in a single-player game, your computer does all the work \u2014 say, in Pac-Man, your one computer handles not only your actions as Pac-Man, but also moves the Ghost Monsters around, as well. In Tootsville V, your own actions will be handled by your own computer.<\/p>\n<p>Making it so that this system works, though, means that your computer has to \u201ctalk\u201d to everyone around you. The biggest problem with that is that your computer is probably not a failure-hardened Internet server with a great network connection and power back-ups. It&#8217;s more likely to be a laptop computer on a WiFi connection where you might, at any moment, close the lid and put it to sleep, or microwave some pizza and disrupt your wireless connection, or try to close an annoying message from your buddy and accidentally quit Firefox and drop out of the game altogether.<\/p>\n<p>So that means we have to \u201charden\u201d the game against any one (or more!) computer dropping out suddenly, and make sure it doesn&#8217;t cause a disruption to other players. It&#8217;s a kinda new way of building things, and it&#8217;s usually done with server machines in datacenters, not a game being played in web browsers, so we&#8217;re inventing new technology as we go along. (I&#8217;m going to speak up and take most of the credit for this, myself, but I do want to particularly give a \u201cshout out\u201d to Hans Sense who&#8217;s helped me think through some of the particularly complicated things.)<\/p>\n<p>What we&#8217;re doing, also, is trying to build things in a way that <em>lasts<\/em>. The goal here is to create a new Tootanga that can keep on going with very little costs. That means we don&#8217;t have to get a lot of donations to keep on running, and even if something happens and my family can&#8217;t keep paying for it, it won&#8217;t be too expensive for a few people&#8217;s donations to keep things going forever. (The expenses are all listed on the Wiki-Wiki, by the way. We are dedicated to being totally transparent about the operation of the game.)<\/p>\n<p><strong>Testing Partnerships<\/strong><\/p>\n<p>As a side effect, we need to ensure that all our software is as reliable as possible. The last thing we need is a software glitch causing problems when it&#8217;s running on hundreds or (we hope!) thousands of web browsers around the world. (We are also making plans for how to \u201cpatch\u201d bugs, as they are discovered, in all those running systems, while you&#8217;re still playing the game, without interrupting you. But, that&#8217;s another story.)<\/p>\n<p>Software tests \u2014 automated tests that the computer can use to verify that the programs are working as-designed \u2014 are the key to that effort. Running these tests is partly the responsibility of the developers. While I make changes to the software, I periodically run some (or all) of these tests to make sure that everything is working as expected.<\/p>\n<p>In order to ensure that these tests run before any changes make it to our players, we also have taken advantage of opportunities offered by both <a href=\"http:\/\/travis-ci.org\/\"><strong>Travis CI<\/strong><\/a>, and <a href=\"http:\/\/circleci.com\/\"><strong>Circle CI<\/strong><\/a>. The CI in their names stands for \u201cContinuous Integration.\u201d They \u201ccontinuously\u201d run our software tests whenever we \u201cintegrate\u201d new changes into our code. The status of those tests is then displayed at <a href=\"http:\/\/tootsville.org\/development\/\">http:\/\/tootsville.org\/development\/<\/a> as a \u201cpass\/fail\u201d status. Since the \u201cintegrated\u201d code is open, you can even \u201cclick through\u201d and review the results. Getting the main component, the \u201c<strong>violet-volts<\/strong>\u201d program that actually creates the game software itself, totally working in the test environments has been a challenge; as I write this, it&#8217;s still failing. That&#8217;s a good thing, though: By <em>knowing<\/em> that these tests are failing, we <em>know<\/em> <em><strong>not<\/strong><\/em> to push that program out to our players.<\/p>\n<p>Running this software across myriad systems means there&#8217;s a lot of \u2014 let&#8217;s call it \u201ctechnological diversity.\u201d Different devices, different operating systems, different screen sizes, different web browsers, all can influence how the game program works on your own computer. Not everyone has the luxury of running Tootsville on a high-definition display on a Fedora\u2122 Linux\u00ae computer with the latest stable release of Firefox\u2122, and that&#8217;s OK. (If they did, though, it would sure make my job easier!)<\/p>\n<p>That&#8217;s where our newest partnership comes into play. Over the next few weeks, I&#8217;ll be rolling out integration with <a href=\"http:\/\/browserstack.com\/\"><strong>BrowserStack<\/strong><\/a>, who have agreed (in exchange for some advertising-like mentions in our programming areas) to give us free, limited access to their library of over 1,000 web browser, device, and operating system combinations.<\/p>\n<p>I&#8217;ve decided that the \u201cadvertising\u201d they want is OK with the \u201cno ads\u201d policy because it will not appear to players, only people who are actively looking \u201cunder the hood.\u201d Their links will appear on our GitHub page, the Developers page, the \u201cabout this program\u201d screen, and places like this blog. The average player will probably never know, or care, about this partnership. What I hope they <em>will<\/em> notice is that we are able to detect possible problems with certain devices or browsers <em>before<\/em> we push out software to our players, which means less bugs reaching the player.<\/p>\n<p><strong>Are We There Yet?<\/strong><\/p>\n<p>It&#8217;s still a long ways to go before we can rest. The next Milestone will be our new Hillside Demo, and I don&#8217;t want anybody&#8217;s expectations to be too high. It&#8217;s not going to look like much. Your Toots won&#8217;t be able to do lots of things, yet. The goal of this milestone will be to make sure that the major pieces of the game are working: that players can log in, talk, move around; that the 3D scene draws properly on your display; that the software doesn&#8217;t crash or misbehave horribly when someone drops out of the game. These are really exciting things for a programmer, and horribly under-whelming things for a player. I can&#8217;t even promise that the Toots characters will be animated or have their patterns and colors on, yet.<\/p>\n<p>Once we reach that point, though, things will start looking a little more interesting to you, as a player. You&#8217;ll be able to see as new features, new items, and so forth are introduced. Changes will build up and we&#8217;ll start checking off the \u201cIssues\u201d on our GitHub project pages one by one.<\/p>\n<p>I <em>hope<\/em> that the Hillside Demo will still happen in 2016, but as you know, the holidays are coming and that always causes unforeseeable delays in \u201chobby\u201d projects like this. So \u2014 no promises. It&#8217;s still possible, though. Hang in there!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi,\u00a0 this post is from Bruce-Robert Fenn Pocock. I&#8217;m the \u201cBenevolent Dictator\u201d of the Violet Volts project, and the author&hellip; <a class=\"read-more\" href=\"https:\/\/www.tootsbook.com\/tootsbook\/2016\/11\/development-testing-and-reliability\/\">Read more <span class=\"screen-reader-text\">Development, Testing, and Reliability<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4],"tags":[48,45,12,47,49,13,68],"class_list":["post-161","post","type-post","status-publish","format-standard","hentry","category-violet-volts","tag-gossipnet","tag-jscl","tag-mesh-networking","tag-programming","tag-software","tag-technology","tag-violet-volts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7ZFAu-2B","jetpack-related-posts":[{"id":182,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2016\/12\/volunteering-highlight-bloggers\/","url_meta":{"origin":161,"position":0},"title":"Volunteering Highlight: Bloggers","author":"CIWTA Team","date":"2 December, 2016","format":false,"excerpt":"Bloggers help keep everyone informed about the changes and updates in Tootsville. Tootsville.org is being built entirely by volunteers. Volunteering Highlight is a bi-weekly column where we explore some of the things that volunteers can do to help with Violet Volts, the project that produces Tootsville. These blogs don't write\u2026","rel":"","context":"In &quot;Violet Volts Project&quot;","block_context":{"text":"Violet Volts Project","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/violet-volts\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tootsbook.com\/tootsbook\/wp-content\/uploads\/2016\/10\/trouble-shooting-icon.jpg?fit=300%2C423&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":137,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2016\/10\/volunteering-highlight-curators\/","url_meta":{"origin":161,"position":1},"title":"Volunteering Highlight: Curators","author":"CIWTA Team","date":"21 October, 2016","format":false,"excerpt":"Curators help us find and incorporate movies, music, and books into the world of Tootsville. Tootsville.org is being built entirely by volunteers. Volunteering Highlight is a weekly column where we explore some of the things that volunteers can do to help with Violet Volts, the project that produces Tootsville. Violet\u2026","rel":"","context":"In &quot;Violet Volts Project&quot;","block_context":{"text":"Violet Volts Project","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/violet-volts\/"},"img":{"alt_text":"trouble-shooting-icon","src":"https:\/\/i0.wp.com\/www.tootsbook.com\/tootsbook\/wp-content\/uploads\/2016\/10\/trouble-shooting-icon.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":234,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2017\/04\/tootsville-wiki-wiki-facelift\/","url_meta":{"origin":161,"position":2},"title":"Tootsville Wiki-Wiki Facelift","author":"CIWTA Team","date":"27 April, 2017","format":false,"excerpt":"The layout (\u201cskin\u201d) of the Tootsville Wiki-Wiki has been upgraded to a more mobile-friendly theme based on a design by \u201cDgraph\u201d (a database software company). Check it out! If you want to return to the old layout, you can change it in your Preferences (under Appearance).","rel":"","context":"In &quot;Violet Volts Project&quot;","block_context":{"text":"Violet Volts Project","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/violet-volts\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tootsbook.com\/tootsbook\/wp-content\/uploads\/2016\/10\/fan-mail-icon.jpg?fit=270%2C234&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":312,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2018\/02\/introducing-the-corporation-for-inter-world-tourism-and-adventuring\/","url_meta":{"origin":161,"position":3},"title":"Introducing: the Corporation for Inter-World Tourism and Adventuring.","author":"CIWTA Team","date":"15 February, 2018","format":false,"excerpt":"Violet Volts project members are happy to say that we're handing over authority of Tootsville to the newly-formed Corporation for Inter-World Tourism and Adventuring. CIWTA is a not-for-profit agency will be curating the further development of Tootsville. Updates to the Wiki-Wiki and web sites will be forthcoming. You can learn\u2026","rel":"","context":"In &quot;CIWTA&quot;","block_context":{"text":"CIWTA","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/ciwta\/"},"img":{"alt_text":"The Corporation for Inter-World Tourism and Adventuring (corporation not for profit)","src":"https:\/\/ciwta.org\/ciwta-logo.svg","width":350,"height":200,"srcset":"https:\/\/ciwta.org\/ciwta-logo.svg 1x, https:\/\/ciwta.org\/ciwta-logo.svg 1.5x, https:\/\/ciwta.org\/ciwta-logo.svg 2x"},"classes":[]},{"id":179,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2016\/11\/integration-test-engineers\/","url_meta":{"origin":161,"position":4},"title":"Volunteering Highlight: Integration Test Engineers","author":"CIWTA Team","date":"18 November, 2016","format":false,"excerpt":"Integration Test Engineers build and observe tests to make sure everything is working as it should. Tootsville.org is being built entirely by volunteers. Volunteering Highlight is a bi-weekly column where we explore some of the things that volunteers can do to help with Violet Volts, the project that produces Tootsville.\u2026","rel":"","context":"In &quot;Violet Volts Project&quot;","block_context":{"text":"Violet Volts Project","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/violet-volts\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tootsbook.com\/tootsbook\/wp-content\/uploads\/2016\/10\/trouble-shooting-icon.jpg?fit=300%2C423&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":232,"url":"https:\/\/www.tootsbook.com\/tootsbook\/2017\/04\/toots-one-service-on-line\/","url_meta":{"origin":161,"position":5},"title":"toots.one service on-line","author":"CIWTA Team","date":"27 April, 2017","format":false,"excerpt":"We've just completed a shakedown of the toots.one service. This is based on the fabs.one service from the Fabulous Adventuring Company, who donates a lot of technology support to Tootsville. toots.one is a short-link service that can be used by the game for sending links in e-mails and things like\u2026","rel":"","context":"In &quot;Violet Volts Project&quot;","block_context":{"text":"Violet Volts Project","link":"https:\/\/www.tootsbook.com\/tootsbook\/category\/violet-volts\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":1,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/posts\/161\/revisions\/162"}],"wp:attachment":[{"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tootsbook.com\/tootsbook\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}