The nCoda development is focusing on three areas
- Binary releases for use on Linux, Mac or Windows platforms (specific requirements not yet published)
- Binary pre-release (current builds of the development environment)
- Development codebase (Continuous Integration testing )
The nCoda application operates as a web based, client/server model, with the server (a python socket) operating as on localhost. Additional architecture documentation pending development.
We are approaching our MVP (Minimum Viable Product), basic functionality of opening a project, rendering an engraving, changing the score, saving and reopening the project; with simplified install and minimal bugs.
This repository is the development codebase, with development specific components (not required for regular nCoda use).
- Phabricator (project management) https://goldman.ncodamusic.org/
- Git master ssh://firstname.lastname@example.org/source/ncoda.git
- Development mirror (read-only, public fork) https://github.com/ncoda/ncoda
(Phabricator and our git master require account approval, email and ssh key authentication.)
Bootstrapping the Development Environment
Supported platforms: we develop on CentOS 7, test formally on Ubuntu 14.04, and less often on several macOS versions. See manual dependencies below for help on other platforms. We would like to support additional platforms and operating systems, please contact us if you can help.
After you have cloned this repo, bootstrap the development environment as a regular user (not root) with the following steps:
- Install manual dependencies (libffi and openssl, see below).
./ncto see what other commands you can run.
Note that you should not handle the virtualenv yourself since
ncoda handles this automatically.
Note that you must run
init.py with a CPython 2.7 interpreter to bootstrap Ansible---no other
Python interpreters or versions will work.
To use another Python interpreter for development, provide the
lychee_python commandline flag:
$ ./init.py --lychee_python "/usr/bin/pypy"
Activate Lychee's Virtualenv
We use virtualenv to manage our Python dependencies. It can be useful
to activate Lychee's virtualenv when you're working on nCoda. Run the
./nc activate command.
We added some extra goodies to the virtualenv:
npmcommands will use the NodeJS and NPM version installed for nCoda. This is matched to the same version of NodeJS that Electron uses when you start nCoda. The setup program automatically upgrades NodeJS when we upgrade Electron.
ncodacommands are also added to the
PATH, available from any directory without the silly
./bit. You won't be able to use
netcatwhen the virtualenv is activated.
exit to leave the virtualenv.
ncoda program uses Ansible to automate software installation and configuration. Unfortunately,
Ansible itself has some dependencies, and we have not automated their installation yet. Please
install the following software in your usual way:
For macOS computers, maybe
brew install libffi && brew install openssl will work.
For Fedora-like computers, try
yum install libffi-devel openssl-devel.
For Debian-like computers, consider
apt install libffi-dev libssl-dev.
There's no need to guess whether you've installed these correctly: if the
init.py script succeeds
then the dependencies were installed!
When problems arise, we try to automate the solution so nobody will run into them again. Not every problem has been found, and some are not solved properly yet.
./nc initfails and the error message includes the text "password required," this may be a problem with
sudo. We're considering our options to resolve this properly. Currently, you must either add the "NOPASSWD" option to the relevant place in
/etc/sudoers, or make sure the no-password timeout hasn't elapsed yet. (E.g., run a
sudocommand just before
- On macOS, sometimes
init.pyfails while installing "pycrypto" due to a years-old bug in that library. You can resolve this by installing "pycrypto" from source:
- Activate the
- Install "pycrypto" from source.
- Deactivate the virtualenv.
- Continue with
- Activate the
These steps are only required for non-supported platforms.
Using CentOS 6.x or Python 2.6 requires a newer python. Latest python on CentOS 6 requires:
- yum update
- yum groupinstall -y "development tools"
- yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel wget
- mkdir -p /usr/local/dist /usr/local/src
- cd /usr/local/dist
- wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
- cd /usr/local/src
- tar xf ../dist/Python-2.7.14.tar.xz
- cd Python-2.7.14
- ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
- make && make altinstall
- mkdir /usr/local/bin/python2.7-bin
- ln -s /usr/local/bin/python2.7 /usr/local/bin/python2.7-bin/python
Find contact information on our website at https://ncodamusic.org/.