CS Student Capstone (Bachelor's Senior project) for Whonix

Sounds awesome!

Whonix consists of a lot components and endless possibilities of enhancing Whonix. I am sure we can find something.

One high priority item currently missing is an automated test suite. Not necessarily the same one that Tails is using. Just something that assists the development of Whonix through automated testing.

There are various Whonix build versions. For example some users started with

When the users upgrade, does some functionality break? When a release Whonix build was released, does something break?

For example recently to harden security we followed recommendation to enable hidepid. This resulted in pkexec based applications being broken such as for example synaptic, gparted, zulucrypt. This wasn’t noticed by any manual tester. And then also when that bug was finally reported, it wasn’t even easy to pinpoint the cause since so many things changed since then.

Therefore Whonix development is currently slowed down by time spent on manual testing as well as finding the causes for bugs.

An automated test suite would do things such as start Tor Browser, visit a clearnet website, visit an onion website; start XChat, connect to an IRC server; mount an encrypted USB disk with zulucrypt CLI, mount an encrypted USB disk with zulucrypt GUI and so forth.

I don’t know how difficult that would be. Didn’t look into it yet.


Fixing bugs is another possibility.

Bugs of that sort could be rather difficult to fix?


Maybe easier. A rewrite of sdwdate. The current code as historically grown isn’t the cleanest and there’s no unit testing at all. The code flow isn’t trivial to understand currently. Use of python classes might be overkill.

sdwdate/sdwdate at master · Kicksecure/sdwdate · GitHub

Since it’s already written it may not be too difficult to cleanly rewrite and create unit tests?

Unit testing sclockadj (part of sdwdate) might be a bit more tricky. Needs comparison of host clock with VM clock to check if VM clock was changed into the right direction as expected.


Tedious and simpler - also a lot to learn:
Creating a wiki page with Whonix source code documentation.
Similar to this but for other topics too.
Whonix source code consists of around 2800 source files.
(A lot are repetitive or not interesting files such as COPYRIGHT, changelog files etc.)
I’ve documented what Whonix does in part only in: Whonix Networking Implementation - Developer Documentation - Feedback Wanted!

Other non-networking related source files could use these source comments too:

#### meta start
#### project Whonix
#### category networking
#### non_qubes_whonix_only yes
#### gateway_only yes
#### description
## network interfaces configuration eth0 (external network interface) and eth1 (internal network interface)
##
## static network configuration
##
## eth0
#address 10.0.2.15
#netmask 255.255.255.0
#gateway 10.0.2.2
##
## eth1
#address 10.152.152.10
#netmask 255.255.192.0
#### meta end

(Could use a different code documentation framework if that is useful.)


Let me know what you think. These are just some initial ideas. If these tasks are too hard/easy/unsuitable I can figure out something else.

5 Likes