How creating a Steering Group became the game-changer for Universal Viewer, propelling this long-running project into a whole new phase.

Interview with Edward Silverton, maintainer of the Universal Viewer project.

What’s the origin of the Universal Viewer?

In 2012 I was contracted by Digirati to work on the “Wellcome Player” for the Wellcome Library in London, a unified viewer for all of their digital catalogue items (high-res deep-zoomable images, audio/video, PDFs), which allowed people to download content, embed it, share it, and read associated metadata.

It became clear that open-sourcing the Wellcome Player could have many benefits, like receiving pull requests with improvements and boosting public engagement, which is what the project and the Wellcome Library are all about. So we did.

Open sourcing the software was another way of boosting public engagement, which is what the project itself was all about.

Shortly after, the British Library, across the road from the Wellcome Library, got in touch. They wanted something similar, but needed it to use a new (at the time) web standard called IIIF (the International Image Interoperability Framework), which allows the GLAM sector (Galleries, Libraries, Archives, and Museums) to share their content in an interoperable way.

Within 6 weeks we had a functioning “Universal Viewer”, which was also open sourced in the spirit of giving back to the community. The project has now been going for around 7 years and has been widely adopted by other libraries and museums.

What’s your backstory?

I had a small company in Brighton that worked primarily in Adobe Flash. Over the course of several years we developed a powerful open source codebase that became something similar to Unity, with its own visual editor.

But Steve Jobs’ Thoughts on Flash post was ultimately a death knell, which was a bummer. We’d built up all this value in a proprietary, non-standard system, which was dead almost overnight. I decided then to work with open source and open standards, and really pursued IIIF as a focus.

We’d built up all this value in a proprietary, non-standard system, which was dead almost overnight. I decided then to work with open source and open standards.

In the present day, I work at Mnemoscene, which I co-founded with my partner Sophie Dixon, focused on creating immersive experiences. VR right now is a bit similar to the Flash situation back then, with so much invested in a closed platform, Unity. We use Unity and like it a lot, but also use WebVR wherever applicable, specifically Mozilla’s amazing A-Frame. We’re currently working on extending the Universal Viewer’s 3D capabilities for Morphosource, to include object annotation and volumetric visualisation using A-Frame. Initial experiments have been extremely promising.

Our philosophy is to make everything as interoperable and reusable as we can.

IIIF is all about data interoperability, but we also have opportunities to make interoperable software components. We’re investigating how to use the Web Components spec to componentise the Universal Viewer, specifically using stenciljs. This is cool because it frees us to use these components with any frontend framework. If you’ve got one development team using Angular and another using React, they can both use the same components. It’s another way to break down silos. Our philosophy is to make everything as interoperable and reusable as we can.

Why did you start fundraising for UV?

There were a lot of necessary tasks requiring developer time that were not getting funded, and a lot of that fell on me. I had to keep up with GitHub issues and answer people’s questions on Slack. It was becoming a burden. As a small company we can’t always afford to travel to all the big IIIF conferences and things like that, which started to become a drag on the project.

There were a lot of necessary tasks that were not getting funded, and a lot of that fell on me.

My time was all booked out with paid project work, which I need to make a living. We tried to get bug fixes into the backlog of funded projects here and there, but each project has a very strict agenda and they have funding for precisely that. We were finding that certain parts were atrophying.

We needed a way to make the project sustainable and keep our users happy. As a typical open source project, we don’t have a paid licensing model, but we knew we needed to raise money to catch issues falling between the cracks.

What’s made your Open Collective successful?

I set up the UV Open Collective a while back and got a few backers, but it didn’t really take off until we created the Steering Group. If you become a sponsor at $100 a month or more, you get a Steering Group seat and can help decide how the funds are spent.

It didn’t really take off until we created the Steering Group. If you become a sponsor at $100 a month or more, you get a seat.

I started putting feelers out with key stakeholders, and the response was overwhelmingly positive. Then it was a case of securing the first commitment. It reminds me a bit of that video of a music festival where a guy is doing a weird dance. Then one guy comes over and joins him, and pretty soon everyone is joining in. You need to find that second guy to join your weird dance. In our case, that was the National Library of Wales. They became our first institutional sponsor, and that made it OK for other libraries to get on board.

You need to find that second guy to join your weird dance. In our case, that was the National Library of Wales.

There can be a rivalry between institutions, but Open Collective is neutral turf. It’s all about the project, not particular sponsors. People want to cooperate, and Open Collective provides a space to do that more effectively.

The Steering Group is really working for us. We have a monthly call where we look at pull requests and the issue backlog, do administrative stuff, and work on the roadmap. It’s made decision-making more equitable, and there’s a renewed sense of excitement about the project’s future. I intentionally did not become chair in order to decentralise power, and our current chair, Sara Weale at the NLW, is doing a fantastic job.

Our users have a vested interest in this project being sustainable, and I have to make my own livelihood sustainable, too.

We’re now agreeing on quarterly goals and devising “community sprints” — the first of which we recently completed successfully, to fix pain points around the tree menu, a complex part of the application that had a lot of bugs and unaddressed edge cases.

Sustainability is central to everything. Our users have a vested interest in this project being sustainable, and I have to make my own livelihood sustainable, too. I’ve now got a good balance between admin and bug fixing, paid for through Open Collective, and exciting paid projects from institutions. It’s very nice to work on new stuff while also knowing that the project is looked after.

What’s next for the Universal Viewer?

So far, it’s only me invoicing the Open Collective. I’m trying to figure out how to expand that beyond myself. I’d love to get more sponsors on board and use that funding to attract more maintainers. We held our first conference last year and it went very well. Perhaps future conferences can be subsidised by the Open Collective, to enable things like getting a designer to create the promo materials.

I’m trying to figure out how to expand the project beyond myself.

I’ve considered paid issue bounties, but those relationships can be fleeting. I suspect I’d spend as much time reviewing a bounty pull request as just doing it myself. But maybe I could budget that in, and over time a person would need less and less review time. As it goes on and complexity increases, it gets harder to onboard new people .You’ve got to take cultivating the connections you make seriously, or you could end up with a bunch of funding but no capacity to keep up with growth of the project.

Documentation is another big one. Project budgets rarely want to pay for documentation, only features. That’s a bit of advice I have for open source maintainers: take documentation seriously. If you can get Open Collective funding going early on and channel it into documentation, you can avoid the big gap we have now.

That’s something the Steering Group is looking into. Our ideal would be to migrate different components to be completely standalone, with their own tests, that are documented and can be reused and integrated. But it’s going to take some time to get there.

Maybe there’s someone out there who would enjoy working on this project with us. Our community is growing. The door is open.


If you’re interested in supporting Universal Viewer, contribute to the Collective or the codebase, or get in touch.