Here a Wikifunctions contributor is creating a simple function that converts Celsius to Fahrenheit. A function like this is very valuable to Wikifunctions which serves a two-sided market — developers who want to write open source code and the public on the internet who frequently ask the internet basic questions such as, “How cold is 15 degrees F in Celsius?”
The Wikimedia Foundation is a non-profit whose mission is to allow every human being to share in the sum of all knowledge, freely. Wikifunctions, a special project funded by grants at the Foundation, aims to democratize access to writing functions. Over the course of a year, and alongside project lead Denny Vrandečić and the Abstract Wikipedia team, I designed and developed the core user experience for how a user creates, implements, and tests functions in any language on Wikifunctions.
I designed this interface with the intention of simplifying how a function is defined. There is no source code to write or programming language the user needs to know.
Since our product vision was to center non-developers in the user experience so that more people could participate in Wikifunctions, I set our main design principle to be simplicity. If I could distill an otherwise complex interaction into a simple user experience and interface, the more accessible Wikifunctions would be. Accessibility is a core value of mine so I enjoyed the challenge of designing a non-technical interface for a technical operation. My objective was for the interface to be friendly, understandable, and intuitive to someone with very little to no background in programming.
I simplified the function writing process into three steps: define the function, write the implementation, and test the function. As you can see above, once the user has finished defining the function, they hit publish and they are finished with their contribution. I decided to make the more difficult step of writing the implementation as a separate step, so that the work could be divided and distributed among non-technical and technical people.
To begin the project, my design co-lead and I created a questionnaire to guide our project lead in defining the product vision.
We worked closely with the project lead (a.k.a. DV) to first understand what Wikifunctions was, was not, who it was for, and why it mattered. This helped us surface the underlying assumptions about the product we were about to design. Once we understood these assumptions, we were able to formulate hypotheses and test them.
Designing the core Wikifunctions user experience for non-programmers will enable this demographic to try the product and potentially make small contributions. If, through a series of guided steps, they are able understand the product value, they will want to participate in the platform. We believe that by designing Wikifunctions to be more accessible and inclusive to non-programmers from the beginning, it will organically grow in this market. We will know we’ve been successful when: