[L2Ork-dev] Purr Data/GSoC dev time
Jonathan Wilkes
jon.w.wilkes at gmail.com
Wed May 22 22:43:54 EDT 2019
Hi list,
In preparation for the upcoming GSoC projects, I wanted to give a
quick overview of what it should feel like to develop Purr Data. When
we've applied for GSoC we've always framed the dev process in terms of
a realtime system. That is, try as hard as possible to _only_ do work
that can be finished in a predictable time frame. We obviously fall
short of that goal but it's a worthwhile starting point nonetheless,
esp. for GSoC projects which have a specific start/end date.
Rather than talk about tooling and dev environments, I just want to
show some metrics for how long it takes me to make and test a change
to the code.
For this demonstration I'm simply changing a few lines in
purr-data/pd/src/x_gui.c, and assuming I've already compiled and
installed Purr Data and am in whatever dev environment I'm using.
Note: I'm on a Arm Chromebook running Debian buster:
time to navigate to "key_new" function in x_gui.c - 2 seconds
time to change two lines of code - 5 seconds
time to recompile (i.e., "make") - 3 seconds
time to update my installed pd-l2ork binary (i.e., "sudo cp
../bin/pd-l2ork /usr/bin/pd-l2ork") - 2 sec
time to test changes by running pd-l2ork - 20 sec.
Finally, I'm using a trick to iterate over changes made to the GUI
files. Look at the top of purr-data/pd/src/s_inter.c for the macro
"GUIDIR". You can define it to point at your local repo nw dir like
"/home/user/purr-data/pd/nw", recompile and update the installed
binary. Then you can make changes in the repo directory
purr-data/pd/nw and just restart Purr Data to see the changes take
effect.
You may have some scripts or a fancy dev environment to do a lot of
this work for you. Just make sure you aren't taking an order of
magnitude longer to do any of the tasks I described above.
And of course if anyone has any improvements to make to any of this
(like that macro in s_inter.c) let me know.
Best,
Jonathan
More information about the L2Ork-dev
mailing list