I'm the lead developer of NDN Forwarding Daemon (NFD).
In this article, I want to share how my development machine is setup.
Everything in Virtual Machines
I do all NFD development work in virtual machines.
There are many benefits in using VMs: I can have a clean operating system, I can test out different OS versions if necessary, and I can work on a different change on another VM when "my code's compiling".
My VM was setup using Vagrant, using the following Vagrantfile:
My laptop comes with Windows, like most other laptops in the market.
But as a computer science student, I need to use Linux from time to time.
The laptop manufacturer advised me not to install Linux directly on this laptop.
Although this would not void my warranty, they would not provide technical support or supply device drivers if I install Linux.
Therefore, I turned into VirtualBox, a hypervisor that allows me to run Linux in a virtual machine, alongside the Windows installation.
I'm also a heavy user of Dropbox, a file hosting service that can synchronize my documents among all my device.
I have Dropbox clients installed everywhere, including the Windows of this laptop, and the Linux virtual machine.
When I edit a file, the Dropbox client uploads this file to the cloud, and then the Dropbox clients on all other devices download the file from the cloud.
One day, there's a congestion on my apartment's WiFi hotspot, and I notice that the Dropbox synchronization between Windows and the Linux virtual machine is having significant delay: every update travels a long way to the cloud, and then comes back.
I also realize that, in my setup, the entire Dropbox contents are duplicated twice: it has one copy in Windows, and another copy in Linux virtual machine.
Although having multiple copies is usually a good thing because you have more redundancy, having multiple copies on the same hard drive is not useful.
Can I eliminate the synchronization delay and the redundant copy?
VirtualBox Shared Folder
VirtualBox has a nifty feature, shared folders, which allows files of the host system to be accessed within a guest system.
In my setup, I could use this feature to access the Dropbox on Windows within the Linux virtual machine.