Frequently Asked Questions

What is Primrose?

Primrose is a web development framework for building virtual reality experiences in the web browser. It has been used to make 3D chatrooms, billiards games, live-programming environments, and even music sequencers.

The tools that Primrose provides enable experimentation with the VR form, to try out new ideas in user interface design and figure out what works best in VR. As different types of interactions become common and accepted as best-practice in the VR community, they will be added to Primrose as part of the basic building blocks of development.

To that end, Primrose focuses on a small subset of what could be possible with VR. It provides a physical world in which the user stands and freely moves about to interact with objects directly. While we recognize that VR can potentially present far more diverse experiences than strictly literal interpretations of time and space, we feel that this limitation helps focus the user towards productive goals.


What License does Primrose use?

Primrose is free, open source software (GPLv3) and may readily be used with other FOSS projects.


What is WebVR?

WebVR is a draft standard for presenting content in commonly available web browsers on virtual reality hardware. See WebVR.info for more information.


How do I contribute to Primrose?

To simplify licensing issues, contributions to Primrose require a copyright assignment to Sean T. McBeth, founder and original developer of Primrose. Please include your name and email address in the CONTRIBUTORS.md file with your pull request. This will serve as your copyright assignment.


Why not use Unity/Unreal Engine?

Unity and Unreal Engine are game development engines that are focused on game development concerns. As such, they are primarily centered on the 3D content pipeline and native, desktop applications performance. These concerns do not mesh well with the fast-paced environment of web development.

The tooling and data formats that Unity and Unreal Engine use are largely proprietary, or resistant to integration with other, open-source tools. We feel that web development works best when it is freely available to everyone. Free as in beer. Free as in freedom.

Finally, we believe that the web browser makes for an excellent deployment platform. Everyone has a web browser on their laptops and phones. Targeting the web browser allows us to skip large concerns for how to build cross-platform applications.


Why the name Primrose?

There is a lot that goes in to naming a project. You want the project name to be memorable, concise, easy to pronounce, and not conjure bad feelings in potential user's minds. A bad name makes it hard for people to talk about your project, and you don't want to discourage people form talking about your project.

With that in mind, we tried to imagine ourselves as a member of a development team, sitting in an office somewhere, trying to convince her coworkers to use our software. How does the phrase, "what if we used <Insert Name Here>?" sound in the context of that meeting? A lot of potential names got thrown out just for being too hard to pronounce, too generic-sounding, or not something you'd want to say out loud in a professional setting.

It's kind of hard to have negative connotations about a plant, especially a little one. Also, there is some precedent in software to name projects after plants.

  • Oak was the original name of the Java programming language.
  • IBM has a modeling suite named Rational Rose.
  • There used to be an accounting suite named Peachtree that is now named Sage; from one plant name to another.
  • Mint is used by two different companies:
  • PEAR is a PHP framework.
  • RaspberryPi is a small computer.
  • One of our favorite companies in the world is AdaFruit
  • Oh, and there's a whole company named Apple.

So the name Primrose is largely arbitrary, a combination of making lists of plant names that sounded nice, coupled with web searching for them to figure out if they had already been taken. Primrose basically won out over Marigold, because we finally felt that a logo for a primrose flower would be easier to make than a logo for a marigold flower.

At first, Primrose was just the text editor component of the framework. The framework first existed under the name Psychologist.js, first appearing July 10, 2014 (making it the oldest WebVR framework currently available). But after a while, we realized the Primrose name was a stronger brand, and the text editor didn't make much sense without the overall framework around it, so we merged them together to make a more complete system.


Why did you choose the GPL over the LGPL or MIT for the license?

Using the GPL for JavaScript libraries is a controversial topic. Our general opinion is that the interpreted nature of JavaScript means that it is always a source code release to the user that satisfies the GPL. It does not get compiled to a byte code before going to the client and even minified code can be reversed.

The GPL does not restrict use. Indeed, it's entire purpose is to make restrictions on use impossible. As long as you are in development, not distributing your project to other people, there is nothing to do involving licensing. The GPL's only restrictions apply to distribution.

If you are ready to release your project to the public and still think that terms of the GPL are too restrictive, but that Primrose adds significant value to your project, please contact us directly at NotionTheory to negotiate a new licensing arrangement.