What is Primrose?
- Primrose is a web development framework for building virtual reality experiences in the web browser.
- Primrose is a rapid application development tool for prototyping VR user interfaces.
- Primrose is a 3D chatroom.
- Primrose is a live-programming environment.
- Primrose is a collection of best-practices for building VR applications.
- Primrose is a collaborative editing tool.
- Primrose is a tool for building collaborative tools.
- Primrose is a system for networking real-world devices together and presenting them in one virtual environment.
- Primrose is love.
Primrose is all of these things.
What is not Primrose?
Primrose is not a fully-featured game development framework. The purpose of Primrose is to explore productivity applications. VR is very taxing on graphics resources, which can leave the business-need of the application starved. Thus, graphics fidelity in Primrose is kept simple so as to ensure compatibility with older devices.
But what do you do with it?
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:
- A personal finance tool that got bought out by Intuit, and
- A distribution of Linux (that we run here at NotionTheory) based on Ubuntu.
- 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.
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.