[[https://wiki.ubuntu.com/Novacut|Novacut Wiki Home]] > '''Getting Involved''' == Is Novacut the right project for you? == If a rigorous design process excites you, and if the idea of profoundly helping storytellers gets you a little misty eyed, you'll find Novacut a deeply rewarding project to work on. However, we want you to have fair warning that all Novacut design decisions are made on behalf of our [[https://wiki.ubuntu.com/Novacut/EditorUX#A_narrow_focus|target users]]. So it's important to understand that unless you happen to be a professional storyteller currently producing direct-to-fan web series, shorts, or movies, you're not the target user, and so design decisions cannot be made on your behalf (although chances are you'll still love using Novacut). Novacut is ''not'' a scratch-your-own-itch project. We must work hard to sympathize with our target users to design the best tool for them. Novacut is also not a democracy, and you have to be okay with that: * The target user we're designing for is not up for debate * We design for our target users via a constant dialog with our target users * Scientific measurement will drive UI decisions (so we truly save our target users time) * Novacut has a [[https://wiki.ubuntu.com/JasonGerardDerose|Benevolent Dictator]] who has final say on all design decisions (he makes sure we're truly listening to our target users) Lastly, everyone in the Novacut community must abide by the [[http://www.ubuntu.com/community/conduct|Ubuntu Code of Conduct]]. We want a friendly and productive community where a diverse range of people feel comfortable and welcomed. Be nice, or be gone! == Still Interested? == Great! Probably the best place to start is by reading our published UX designs: * [[https://wiki.ubuntu.com/AyatanaDmediaLovefest|Pro file import workflow UX design]] * [[https://wiki.ubuntu.com/Novacut/EditorUX|Novacut editor UX design]] You'll notice a theme: the best thing we can do for our target users is save them time, and we're very calculating about looking for places where rest of the industry dropped the ball. If you want to jump into UX research and design, the [[http://vimeo.com/groups/novacutartistdiaries|Novacut Artist Diaries]] group on Vimeo is the place to start. If you want to jump into some coding and design, the best place to start is the [[https://launchpad.net/novacut-prototypes|novacut-prototypes]] project (needed skills: HTML5, !JavaScript, CSS). If you're a Python hacker, look at [[https://launchpad.net/filestore|filestore]] and [[https://launchpad.net/dmedia|dmedia]]. The [[https://launchpad.net/novacut|novacut]] project itself is just getting underway, and is a good place for Python programmers to get in on the ground floor. The render server will be Python and will be very simple. The render server takes the graph-based description of the edit (as stored in CouchDB) and creates the appropriate [[http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gnonlin/html/|GnonLin]] composition. If you're new to [[http://couchdb.apache.org/|CouchDB]], playing around with [[https://launchpad.net/microfiber|microfiber]] is a great way to learn the [[http://www.couchbase.org/sites/default/files/uploads/all/documentation/couchbase-api.html|CouchDB API]]. If you're interested in the CouchDB side of things, you'll also want to learn about [[https://launchpad.net/desktopcouch|desktopcouch]] (what inspired us to use CouchDB, what made Novacut feasible). Although note that dmedia and Novacut push desktopcouch a bit beyond its original intent, so we have to use it in [[https://wiki.ubuntu.com/DesktopCouchWishList|a rather non-standard way]]. == Jump into Development == '''Our development process is open to all!''' Ubuntu is our primary development platform, so things will be easiest if you're running Ubuntu. As we need some newish PyGI and G-I stuff, you'll need to run Ubuntu 11.10 "Oneiric", or the development version, Ubuntu "Precise", which will be released as 12.04 LTS in April 2012. The first thing to do is add the [[https://launchpad.net/~novacut/+archive/daily|Novacut Daily Builds PPA]]. This is the easiest way to make sure you have all the needed dependencies installed for development. These 3 commands will add the PPA and install all the components we're currently doing daily builds for: {{{ sudo apt-add-repository ppa:novacut/daily sudo apt-get update sudo apt-get install novacut }}} Next, you'll want to grab some code. We use [[http://bazaar.canonical.com/en/|Bazaar]] for version control and host everything on [[https://launchpad.net/|Launchpad]]. So you'll need to install ``bzr``: {{{ sudo apt-get install bzr }}} Bazaar is quite flexible, but this is the way Jason likes to setup his work area. Jason puts all his projects in a `~/bzr/` directory in his home directory, but use whatever you prefer: {{{ mkdir bzr cd bzr/ }}} Now say you want to work on [[https://launchpad.net/filestore|filestore]], first create a shared repository and checkout the filestore trunk: {{{ bzr init-repo filestore cd filestore/ bzr checkout lp:filestore trunk }}} It's handy to have trunk available for reference, but you want to do some coding, right? Well, next you should create a public branch on Launchpad, and create a local checkout of your branch as well: {{{ bzr branch lp:filestore lp:~jderose/filestore/my-first-steps bzr checkout lp:~jderose/filestore/my-first-steps }}} After you do this, you should see your branch [[https://code.launchpad.net/filestore|here on Launchpad]], just as official as any other branch. See, you don't even need permission from us! A good first step is to run the unit tests, just to make sure you have all the needed dependencies and make sure everything is okey-dokey. Run the tests like this: {{{ cd my-first-steps/ ./setup.py test }}} After you make the changes you want, make a commit like this: {{{ bzr commit -m "Now with more better" }}} The change you make might be done over several fine-grained commits. (Pro tip: commit often, commit early!) When you think your change is ready, [[https://code.launchpad.net/filestore|find your branch here on launchpad]], click on it, and then click on '''Propose for merging'''. You'll end up with a merge proposal [[https://code.launchpad.net/~jderose/filestore/my-first-steps/+merge/70396|something like this]].