Jump to: navigation, search
No photo
James Montalvo

About me

I'm a MediaWiki user, administrator and developer. Darenwelsh and I introduced Semantic MediaWiki at NASA's Johnson Space Center to solve massive knowledge management problems within the EVA community, and we're currently trying to expand that to other organizations within Flight Operations.

My work

My day job is at NASA training astronauts to perform EVAs (spacewalks), writing procedures for those EVAs, and helping astronauts execute the EVAs as an EVA flight controller in MCC.

Contact me

My extensions and other MediaWiki development[edit]

Software I've created:

WatchAnalytics -- SemanticMeetingMinutes -- Wiretap -- CopyWatchers -- ParserFunctionHelper -- Wikify -- Sharepoint-to-MediaWiki

Extensions I've taken over as maintainer:

Talkright -- Header Footer -- NumerAlpha

Extensions I've made substantial additions to:

Approved Revs (see my fork on Github, hoping to get it merged into WMF Gerrit at some point, but 3+ years and counting)

Software in development:


An overview of my MediaWiki career[edit]


In late 2011 one of my coworkers, Darenwelsh, attempted to convince me that it was a good idea to organize the vast quantities of EVA knowledge using a wiki. I was not convinced, thinking it a more structured database method would be more effective, but I setup an installation of MediaWiki for him to experiment with. In an attempt to meet him halfway in the wiki-vs-structured-database debate, I installed the External Data extension and created a very simple CRUD interface to populate our structured data.


The EVA Wiki took off as an unsanctioned but incredibly useful source of knowledge. By the end of the year it has a relatively large user base and many regular contributors, despite not being an approved project. To get to this point we created a product with so much useful content that was so easily accessible that people couldn't help but use it. Once we had that critical mass of content, other people found it so useful that it bothered them when they didn't find the information they were looking for on the wiki. This encouraged those people to contribute. Often it started with them coming to us with statements like "hey the ABC page doesn't have any info about XYZ...can you add it?" We'd respond to this: "no, but you can".

The visibility of our wiki spread by word-of-mouth. Since we weren't an officially approved source of information we didn't want to publicly announce our existence. Instead we told people about it, told them it wasn't official, but that if editors were doing their jobs they should be citing official sources. In time, management learned about the wiki, and many other problems came up. Initially it seemed like we might get shut down, but then out of nowhere the opinion shifted and instead management wanted the wiki as the primary knowledge management tool.


With our wiki as an approved project we had to get it put on an approved server. The bureaucracy involved with that took the first half of 2013. See NASA Embarks on Epic Delay (The Onion). There were also technical issues to accompany the political. I became a MediaWiki developer at this point by necessity, as we upgraded from MW 1.17 to 1.20 (then 1.21), and several of the extensions we relied upon required modification. Additionally, I created the CopyWatchers extension to allow our Meeting Notes form (which uses Semantic Forms) to automatically add watchers from pages related to the meeting minutes.

As transition to the new server was completed the concept of spreading the good word of MediaWiki to other organizations became a reality. One of the major issues involved with that is easily converting existing documentation into MW syntax. The first thing I'm working on there is a direct conversion of Sharepoint Wiki into MediaWiki. This should be complete soon. It currently works, but is an awful kludge. After it is complete I'll likely make it work on Microsoft Word as well (it probably already does), and make it crawl websites other than Sharepoint and scrape content.

After we transitioned to the new server, new usages of the wiki were requested. One was to use it to manage our lesson plans. These documents required more control than plain MediaWiki, so we started looking at the Approved Revs and Flagged Revs extensions. Unfortunately neither completely satisfied our needs. As such, I overhauled the permissions structure of Approved Revs, making it possible to specify exactly who can approve certain pages. At this writing these changes have not been rolled into the version of Approved Revs available on, but can be attained from my github.


In June I attended the Enterprise Wiki Summit at ConocoPhillips in Houston along with my colleagues User:Darenwelsh and User:ScottJWray. This conference opened our eyes to how many organizations are using MediaWiki, and how these organizations should be working together rather than operating in silos and recreating a lot of the same work. This conference led us to create, which we started using as a way to demonstrate enterprise usage of MediaWiki. In December we co-hosted another Houston meetup with Chevron, which attempted to further the goal of collaborating across organizations.

In July we noticed on our wiki that many people were not reviewing changes to pages they were watching. We visualized the state of all watchers of our wiki to show how the "crowdsourced accountability model" was not working for us. To address the issues I created Extension:WatchAnalytics starting in August. Major developments started in late October.

In October 2014 User:Darenwelsh and I attended SMWCon Fall 2014 in Vienna, Austria. We presented the History of the EVA Wiki, our method of recording meeting minutes in MediaWiki, and our improvements to Extension:Approved Revs.

In late 2014 my colleagues User:Darenwelsh, User:Ssjohnston, User:ScottJWray and Costa Mavridis started working on proposals to get funding from within NASA to work on a number of MediaWiki-related projects. None in 2014 were successful, but some were considered strong proposals which we will be continuing to pursue in the future. One project was called Wiki Conversations.


  • Many more improvements to WatchAnalytics
  • Attended SMWCon Spring 2015 in St. Louis (presented WatchAnalytics and did a tutorial on creating a basic parser function)
  • Attended Wikimedia Hackathon 2015 in Lyon, France
  • Hosted a knowledge management event at NASA JSC on June 9th and discussed WatchAnalytics (see video)
  • Became maintainer for Extension:NumerAlpha on Gerrit
  • Presented about EVA Wiki at SGT Tech Day
  • Began meza as a collection of instructions for setting up a MediaWiki installation, which quickly morphed into a set of shell scripts


Created Extension:PageImporter to make it easier to have extensions have defined versions of pages which can easily be imported into wikis. Also created Extension:ParserFunctionHelper to simplify creating basic parser functions.

Started using meza in production at NASA/JSC. Later in the year meza's monolithic set of shell scripts were converted into separate modules, which could be installed individually on separate servers. This allowed setting up database servers (master and replica) separate from application server.


In early 2017 meza being based upon Ansible. This simplified the both modularized aspect and deploying to multiple servers. By Spring 2017 it was possible to deploy multiple separate load balancers, application servers, database servers, memcached servers, Elasticsearch servers, and Parsoid servers using only meza's simple commands.

Attended EMWCon in McLean, VA and gave a brief presentation on how wikis are used at NASA/JSC. At this conference it became apparent that several groups were all independently working on projects similar to meza. There was some agreement to begin working together. Later in the year some members did start contributing.

Late in 2017, NASA/JSC wikis began merging several large wikis into one large wiki. This process was not completed in 2017. It involved many people manually preparing pages, templates, etc, in order to resolve conflicts. Personally I worked on creating a special page to help people identify the conflicts that needed to be dealt with, and building a script to merge the wikis once the conflicts were resolved.


Attended the Wikimedia Foundation Developer Summit in San Francisco.