Here is a time line for the development of VPython, an extension to the Python programming language that makes it unusually easy to generate navigable real-time 3D animations (vpython.org).

1997: While at Carnegie Mellon, after writing a volume on introductory electricity and magnetism, Ruth Chabay and I teach introductory “modern mechanics” for the first time, including having the students program computational models, using the cT language I had created, something a bit like a good Basic, with (2D) graphics built-in, but running in a windowing environment on Unix workstations, Macintosh, and Windows (cT overview). cT was based on the TUTOR language of the PLATO computer-based education system.

1998: We have a remarkable student in our mechanics class, David Scherer. While in high school he led a team of his friends to create a 3D game that later won a national prize. He’s intrigued that cT has allowed students to write computational models that work on all platforms, but he glimpses a more powerful approach that would support 3D.

2000: We abandon cT, and in the spring Scherer creates VPython, with Ruth and me deeply involved in design and testing. Many powerful programmers have no interest in or patience for novice programmers, but Scherer saw it as an interesting challenge how to make programmatic 3D animations accessible to novices. His answer is to make real-time navigable 3D animations a side effect of computations, lifting a huge task from the shoulders of the novice. Of course this is also a huge benefit to sophisticated programmers as well. The original version of VPython is now called “Classic” VPython. It requires installing Python, the “visual” module, and an improved program editor based on the IDLE editor that comes with Python. In the fall of 2000 we start having students use VPython to do computational modeling in our course.

2002-2006: Jonathan Brandmeyer, an engineering students at NCSU, makes major contributions to VPython 3. He introduces the use of the C++ Boost libraries to glue the core of VPython, implemented in threaded C++ code, to those components written in Python, and builds autoconfigurable installers for Linux. In the 16 year history of VPython only three people made major contributions to the complex C++ code, Scherer, Brandmeyer, and me.

2008: Scherer, having sold his first software company and thinking about what to do next, and I work on VPython 5. Jonathan Brandmeyer provided support in VPython 4beta for opacity, local lighting, and textures, and made some important architectural changes, but had to stop work on the project before it was completed. Further development led to API changes that were incompatible with the VPython 4beta release, so there was no version 4.

2011: Kadir Haldenbilen, a retired IBM engineer in Turkey, and I collaborate to create the 3D text object and the extrusion object for VPython 5.

2011: Ruth and I learn about WebGL from very knowledgeable computer colleagues in Santa Fe. WebGL is a 3D library built into modern browsers. I poke at it and see that it is quite difficult to use, like its big sister OpenGL used by Classic VPython, but I realize that the VPython API provides a model for making WebGL accessible to novices. I mock up a demo and show it to Scherer, who at the time was CEO of his second major software company. He’s intrigued and in a couple of months puts together the glowscript.org site (it’s a Google App Engine application), solves the problems of operator overloading (to permit adding vectors A and B as A+B) and synchronous code (such as perpetual loops), neither of which is native to JavaScript. He does all this as a project where he can see progress, as relief from his work at FoundationDB where the extreme difficulty of solving once and for all the problems of distributed databases has been getting him frustrated. After setting up GlowScript he leaves, and since then I’ve been developing GlowScript. GlowScript programs are written in JavaScript, as are the GlowScript libraries.

2013: Release of VPython 6, based on wxPython, which was initiated by me in June 2012 to address the serious problem that the Carbon programming framework for the Mac will no longer be supported. Major contributions to the release were made by Steve Spicklemire, a physics professor at the University of Indianapolis.

Late 2014: Thanks to learning from Salvatore di Dio, a programmer in France, about the RapydScript Python-to-JavaScript transpiler, I’m able to make it possible for GlowScript users to write their programs using the VPython API, somewhat modified due to the very different environment (browser, GPU). It is also around this time that John Coady, a programmer in Vancouver, implements the Classic VPython API in pure Python, in the IPython environment, in which your Python program runs on a local server and sends data to your browser, where his JavaScript program acts on the data to display the 3D animation in a Jupyter notebook cell (the Jupyter notebook in the browser is similar to a Mathematica or Sage notebook). He uses the GlowScript libraries to render the 3D images. The advantage of this Jupyter implementation in comparison with GlowScript VPython is that you’re writing real Python, not the necessarily imperfect RapydScript representation of Python, and you have access to the large universe of Python modules, which are not accessible from within a JavaScript-based browser.

Fall 2015: Some institutions using our textbook, including Georgia Tech, report switching from Classic VPython to GlowScript VPython, and note with surprise how much more enthusiastic students are about using VPython now that they don’t have to install anything. In contrast, Classic VPython requires the installation of Python, the installation of the visual module, and, on the Mac, installation of an update to Tcl. This can be daunting and can fail for non-obvious reaons. The use of GlowScript VPython rises rapidly; here is a graph of usage vs. time.

January 2016: Coady, Ruth and I, and several well-known physics education colleagues (all of them users of our textbook and of VPython) publish a document on the further evolution of VPython, in which we announce abandonment of the 16-year-old Classic VPython in favor of the GlowScript and Juptyer versions. Here is that document, detailing our reasons.

January-September 2016: In collaboration with Coady, Ruth and I modify and complete Jupyter VPython to use the GlowScript VPython API instead of the Classic API that Coady had started with, because it is much better suited to the distributed nature of the Jupyter environment. Steve Spicklemeire and Matthew Craig, a physics professor at Minnesota State University Moorhead, contribute mechanisms for creating pip and conda installers. Here are demo programs running in Jupyter notebooks.

July 2016: 3D text object implemented in GlowScript, with major contributions from Kadir Haldenbilen. I complete the GlowScript implementation of the extrusion object. Neither object has yet been enabled in Jupyter VPython.