Return of the Great Spaghetti Monster: Learnings from a Twelve-Year Adventure in Web Software Development

  • Antero Taivalsaari
  • Tommi MikkonenEmail author
Conference paper
Part of the Lecture Notes in Business Information Processing book series (LNBIP, volume 322)


The widespread adoption of the World Wide Web has fundamentally changed the landscape of software development. Only ten years ago, very few developers would write software for the Web, let alone consider using JavaScript or other web technologies for writing any serious software applications. In this paper, we reflect upon a twelve-year adventure in web development that began with the development of the Lively Kernel system at Sun Microsystems Labs in 2006. Back then, we also published some papers that identified important challenges in web-based software development based on established software engineering principles. We will revisit our earlier findings and compare the state of the art in web development today to our earlier learnings, followed by some reflections and suggestions for the road forward.


Web programming Web applications Web engineering Software engineering HTML5 JavaScript The Internet of Things IoT Programmable World 


  1. 1.
    Mikkonen, T., Taivalsaari, A.: Web Applications - Spaghetti Code for the 21st Century. In: Proceedings of the International Conference on Software Engineering Research, Management and Applications (SERA 2008, Prague, Czech Republic, 20–22 August 2008), pp. 319–328. IEEE Computer Society (2008)Google Scholar
  2. 2.
    Taivalsaari, A., Mikkonen, T., Ingalls, D., Palacz, K.: Web Browser as an application platform. In: 34th Euromicro Conference on Software Engineering and Advanced Applications (SEAA 2008, Parma, Italy, 3–5 September 2008), pp. 293–302. IEEE Computer Society (2008)Google Scholar
  3. 3.
    Casteleyn, S., Garrigós, I., Mazón, J.N.: Ten years of rich internet applications: a systematic mapping study, and beyond. ACM Trans. Web 8(3), 18:1–18:46 (2014)CrossRefGoogle Scholar
  4. 4.
    Turner, M., Budgen, D., Brereton, P.: Turning software into a service. Computer 36(10), 38–44 (2003)CrossRefGoogle Scholar
  5. 5.
    Petsas, T., Papadogiannakis, A., Polychronakis, M., Markatos, E.P., Karagiannis, T.: Rise of the planet of the apps: a systematic study of the mobile app ecosystem. In: Proceedings of the 2013 Internet Measurement Conference, pp. 277–290. ACM (2013)Google Scholar
  6. 6.
    VisionMobile: Cloud and Desktop Developer Landscape (2016). Accessed 5 Mar 2016
  7. 7.
    Taivalsaari, A., Mikkonen, T., Ingalls, D., Palacz, K.: Web Browser as an Application Platform: The Lively Kernel Experience. Technical report, TR-2008-175, Sun Microsystems Laboratories (2008)Google Scholar
  8. 8.
    Ingalls, D., Felgentreff, T., Hirschfeld, R., Krahn, R., Lincke, J., Röder, M., Taivalsaari, A., Mikkonen, T.: A world of active objects for work and play: the first ten years of lively. In: Proceedings of SPLASH 2016 Onward! Track (Amsterdam, The Netherlands, 30 October–4 November 2016), pp. 238–249 (2016)Google Scholar
  9. 9.
    Mikkonen, T., Taivalsaari, A.: Web Applications: Spaghetti Code for the 21st Century. Technical report TR-2007-166, Sun Microsystems Labs, June 2007Google Scholar
  10. 10.
    Taivalsaari, A., Mikkonen, T.: The web as a software platform: ten years later. In: WEBIST 2017, Porto, Portugal (2017)Google Scholar
  11. 11.
    Mikkonen, T., Taivalsaari, A.: The Mashware challenge: bridging the gap between web development and software engineering. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research, pp. 245–250. ACM (2010)Google Scholar
  12. 12.
    Dijkstra, E.W.: Letters to the editor: go to statement considered harmful. Commun. ACM 11(3), 147–148 (1968)CrossRefGoogle Scholar
  13. 13.
    Dijkstra, E.W.: Programming: from craft to scientific discipline. In: International Computing Symposium, pp. 23–30 (1977)Google Scholar
  14. 14.
    Hoare, C.: Programming: sorcery or science? IEEE Softw. 1(2), 5 (1984)CrossRefGoogle Scholar
  15. 15.
    Corbato, F.: Sensitive Issues in the Design of Multi-Use Systems. Technical report, DTIC Document (1968)Google Scholar
  16. 16.
    Parnas, D.L.: Information Distribution Aspects of Design Methodology (1971)Google Scholar
  17. 17.
    Dahl, O.J., Dijkstra, E.W., Hoare, C.A.R.: Structured Programming. Academic Press Ltd., London (1972)zbMATHGoogle Scholar
  18. 18.
    Parnas, D.L.: A technique for software module specification with examples. Commun. ACM 15(5), 330–336 (1972)CrossRefGoogle Scholar
  19. 19.
    Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  20. 20.
    Parnas, D.L.: On the design and development of program families. IEEE Trans. Softw. Eng. 1, 1–9 (1976)CrossRefGoogle Scholar
  21. 21.
    Parnas, D.L.: Designing software for ease of extension and contraction. In: Proceedings of the 3rd International Conference on Software Engineering, pp. 264–277. IEEE Press (1978)Google Scholar
  22. 22.
    Parnas, D.L., Clements, P.C., Weiss, D.M.: Enhancing reusability with information hiding. Tutorial Softw. Reusability, 83–90 (1983)Google Scholar
  23. 23.
    Parnas, D.L., Clements, P.C.: A rational design process: how and why to fake it. IEEE Trans. Softw. Eng. 2, 251–257 (1986)CrossRefGoogle Scholar
  24. 24.
    Morris Jr., J.H.: Protection in programming languages. Commun. ACM 16(1), 15–21 (1973)CrossRefGoogle Scholar
  25. 25.
    Morris Jr., J.H.: Types are not sets. In: Proceedings of the 1st Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 120–124. ACM (1973)Google Scholar
  26. 26.
    Liskov, B., Zilles, S.: Programming with abstract data types. In: ACM SIGPLAN Notices, vol. 9, pp. 50–59. ACM (1974)CrossRefGoogle Scholar
  27. 27.
    Liskov, B., Zilles, S.: Specification techniques for data abstractions. In: ACM SIGPLAN Notices, vol. 10, pp. 72–87. ACM (1975)CrossRefGoogle Scholar
  28. 28.
    Guttag, J.: Abstract data types and the development of data structures. Commun. ACM 20(6), 396–404 (1977)CrossRefGoogle Scholar
  29. 29.
    Zilles, S.N.: Procedural encapsulation: a linguistic protection technique. In: ACM SIGPLAN Notices, vol. 8, pp. 142–146. ACM (1973)CrossRefGoogle Scholar
  30. 30.
    Corbató, F.J.: On building systems that will fail. In: ACM Turing Award Lectures 1990. ACM (2007)Google Scholar
  31. 31.
    MacLennan, B.J.: Principles of Programming Languages: Design, Evaluation, and Implementation. Oxford University Press, New York (1999)zbMATHGoogle Scholar
  32. 32.
    Naur, P., Randell, B.: Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 October 1968, Brussels, Scientific Affairs Division, NATO (1969)Google Scholar
  33. 33.
    McIlroy, M.D., Buxton, J., Naur, P., Randell, B.: Mass-produced software components. In: Proceedings of the 1st International Conference on Software Engineering, Garmisch Pattenkirchen, Germany, pp. 88–98 (1968)Google Scholar
  34. 34.
    Bouzid, A., Rennyson, D.: The Art of SaaS: A Primer on the Fundamentals of Building and Running a Successful SaaS Business. Xlibris (2015)Google Scholar
  35. 35.
    ECMAInternational: ECMAScript 2015 Language Specification, Standard ECMA-262, 6th Edn., June 2015. Accessed 22 Feb 2017
  36. 36.
    ECMAInternational: ECMAScript 2016 Language Specification, Standard ECMA-262, 7th Edn., June 2016. Accessed 22 Feb 2017
  37. 37.
    Lautamäki, J., Nieminen, A., Koskinen, J., Aho, T., Mikkonen, T., Englund, M.: CoRED: browser-based collaborative real-time editor for Java web applications. In: Proceedings of the ACM 2012 Conference on Computer Supported Cooperative Work, pp. 1307–1316. ACM (2012)Google Scholar
  38. 38.
    Lupfer, N., Kerne, A., Webb, A.M., Linder, R.: Patterns of free-form curation: visual thinking with web content. In: Proceedings of the 2016 ACM on Multimedia Conference (MM 2016, Amsterdam, The Netherlands, 15–19 October 2016), pp. 12–21 (2016)Google Scholar
  39. 39.
    Wagner, J.L.: Web Performance in Action: Building Fast Web Pages. Manning (2016)Google Scholar
  40. 40.
    Leppänen, M., Mäkinen, S., Pagels, M., Eloranta, V.P., Itkonen, J., Mäntylä, M.V., Männistö, T.: The highways and country roads to continuous deployment. IEEE Softw. 32(2), 64–72 (2015)CrossRefGoogle Scholar
  41. 41.
    Debois, P.: DevOps: a software revolution in the making. J. Inf. Technol. Manag. 24(8), 3–39 (2011)Google Scholar
  42. 42.
    Olsson, H.H., Alahyari, H., Bosch, J.: Climbing the “Stairway to Heaven” - a multiple-case study exploring barriers in the transition from agile development towards continuous deployment of software. In: 2012 38th EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA), pp. 392–399. IEEE (2012)Google Scholar
  43. 43.
    Fitzgerald, B., Stol, K.J.: Continuous software engineering: a roadmap and agenda. J. Syst. Softw. 123, 176–189 (2017)CrossRefGoogle Scholar
  44. 44.
    Taivalsaari, A., Mikkonen, T., Pautasso, C., Systä, K.: Comparing the built-in application architecture models in the web browser. In: 2017 IEEE International Conference on Software Architecture (ICSA), pp. 51–54. IEEE (2017)Google Scholar
  45. 45.
    Garrett, J.J.: Ajax: A New Approach to Web Applications, 18 February 2005.
  46. 46.
    Crane, D., McCarthy, P.: What Are Comet and Reverse Ajax? Springer (2009)Google Scholar
  47. 47.
    Hickson, I.: Server-Sent Events. W3C Recommendation 03 February 2015 (2015).
  48. 48.
    Pimentel, V., Nickerson, B.G.: Communicating and displaying real-time data with websocket. IEEE Int. Comput. 16(4), 45–53 (2012)CrossRefGoogle Scholar
  49. 49.
    Bergkvist, A., Burnett, D.C., Jennings, C., Narayanan, A.: WebRTC 1.0: Real-time Communication Between Browsers. Working draft, W3C (2012)Google Scholar
  50. 50.
    W3C: W3C Schools - HTML Web Workers Example.
  51. 51.
    Darken, R.: Breaking the mosaic mold. IEEE Int. Comput. 2(3), 97 (1998)CrossRefGoogle Scholar
  52. 52.
    Mesbah, A., Van Deursen, A.: Migrating multi-page web applications to single-page Ajax interfaces. In: 11th European Conference on Software Maintenance and Reengineering CSMR 2007, pp. 181–190. IEEE (2007)Google Scholar
  53. 53.
    Mikowski, M.S., Powell, J.C.: Single Page Web Applications: JavaScript End-to-End. Manning, Shelter Island (2013)Google Scholar
  54. 54.
    Jadhav, M.A., Sawant, B.R., Deshmukh, A.: Single page application using AngularJS. Int. J. Comput. Sci. Inf. Technol. 6(3), 2876–2879 (2015)Google Scholar
  55. 55.
    Poulson, L.D.: Developers shift to dynamic programming languages. IEEE Comput. 40(2), 12–15 (2007)CrossRefGoogle Scholar
  56. 56.
    Mikkonen, T., Taivalsaari, A.: Creating a mobile web application platform: the lively kernel experiences. In: Proceedings of the 24th ACM Symposium on Applied Computing (SAC 2009), Proceedings, vol. 3, pp. 177–184 (2009)Google Scholar
  57. 57.
    Charland, A., Leroux, B.: Mobile application development: web vs. native. Commun. ACM 54(5), 49–53 (2011)CrossRefGoogle Scholar
  58. 58.
    Joorabchi, M.E., Mesbah, A., Kruchten, P.: Real challenges in mobile app development. In: ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, pp. 15–24. IEEE (2013)Google Scholar
  59. 59.
    Dalmasso, I., Datta, S.K., Bonnet, C., Nikaein, N.: Survey, comparison and evaluation of cross platform mobile application development tools. In: 2013 9th International Wireless Communications and Mobile Computing Conference (IWCMC), pp. 323–328. IEEE (2013)Google Scholar
  60. 60.
    Wargo, J.M.: Apache Cordova 4 Programming. Pearson Education (2015)Google Scholar
  61. 61.
    Moroney, L.: Microsoft Silverlight 4 Step by Step. Microsoft Press, Redmond (2010)Google Scholar
  62. 62.
    Taivalsaari, A., Mikkonen, T.: The web as an application platform: the saga continues. In: 37th Euromicro Conference on Software Engineering and Advanced Applications (SEAA 2011, Oulu, Finland, 30 August–2 September 2011), pp. 170–174. IEEE Computer Society (2011)Google Scholar
  63. 63.
    Hartmann, B., Doorley, S., Klemmer, S.R.: Hacking, mashing, gluing: understanding opportunistic design. IEEE Pervasive Comput. 7(3), 46–54 (2008)CrossRefGoogle Scholar
  64. 64.
    Taivalsaari, A., Mikkonen, T.: Mashups and modularity: towards secure and reusable web applications. In: 2008 23rd IEEE/ACM International Conference on Automated Software Engineering-Workshops, ASE Workshops 2008, pp. 25–33. IEEE (2008)Google Scholar
  65. 65.
    Salminen, A., Mikkonen, T.: Mashups: software ecosystems for the web era. In: IWSECO@ICSOB (International Conference on Software Business), pp. 18–32 (2012)Google Scholar
  66. 66.
    Salminen, A., Mikkonen, T., Nyrhinen, F., Taivalsaari, A.: Developing client-side mashups: experiences, guidelines and the road ahead. In: Proceedings of 14th International Academic MindTrek Conference: Envisioning Future Media Environments, pp. 161–168. ACM (2010)Google Scholar
  67. 67.
    Wasik, B.: In the Programmable World, All Our Objects Will Act as One. Wired, p. 462, May 2013Google Scholar
  68. 68.
    Taivalsaari, A., Mikkonen, T.: Roadmap to the programmable world: software challenges in the IoT era. IEEE Softw. 34(1), 72–80 (2017)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Nokia TechnologiesTampereFinland
  2. 2.University of HelsinkiHelsinkiFinland

Personalised recommendations