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

Well FWIW the task is pretty large, and I don’t think my “expertise” would hinder your learning. I am a backend dev really dabbling on the systems side of things learning also.

I spun up a cucumber repo and have CI working, but now I am trying to use vagrant && libvirt to build the whonix VM for testing. It is a bit challenging. I plan to take another stab tonight.

Once I get a working, testable whonix environment, I am going to focus on kernel testing. Point being, I think it’s pretty easy to work together without stepping on toes. But you are welcome to keep the repo seperate and work on your end. I simply wanted to offer the collaboration aspect since I am already working on it.

IDK how much looking you all have done on the tails source code, but between vagrant, sikuli, libvirt, CI/CD, cucumber, test cases, dogtail, etc…there is no shortage of things to be learned or work to be done. Collaboration and empathy are going to be more important in your tech career than a few python specs IMO. I am happy for as much or as little pleases your professor :slight_smile:

Learning is never time wasted. It is really awesome you are taking this on. For me I think behave seems like it could be a good way to write a suite. I have never used it before.

The feature test BDD layout is great, and IMO the tooling is secondary. I will say that I think it is important to work with the language you are most comfortable in when solving a new problem. I am a big fan of new problem, old technology. Or old problem (like a restful api), new technology. But I am always wary of new problem/new techology.

3 Likes

I don’t see any issues. @Mycobee is working has a separate test suite in developing in a dedicated forum thread automated test suite - #7 by Mycobee. The approach is a different one. CI, building Whonix images in CI, then booting these and do kernel testing. While the test suite students are working on is focused on GUI applications. There’s no overlap.

2 Likes

Sounds good, my professor also just gave the go ahead for us to work together in general so hey. He just said to document what we do, which should be pretty straightforward, and mostly automatic since we’re doing all our work (including demo wiki pages) on the repo.

Thanks for the good wishes too, I will admit this is a big first for us. I have some project planning experience but this is a particular kind of challenge.

But I am always wary of new problem/new technology.

That’s a good way to look at it, and thanks for the good wishes. I’d love to find a way to integrate both languages.

I heard ya’ll were interested in getting involved with more students too. Most colleges seem to be teaching python as the language they’re most familiar with by graduation. I think it’s the new standard now as the entry-level language that everyone has to get good at (replacing java, seemingly).

It’s something to consider when making and picking projects.

I spun up a cucumber repo and have CI working, but now I am trying to use vagrant && libvirt to build the whonix VM for testing. It is a bit challenging. I plan to take another stab tonight.

So, I have a bit of experience using Libvirt (with QEMU+KVM) on my Arch machine. So if you want any general pointers I might be able to save you a little time. The cool bit I was looking at with Libvirt is how it can simplify making things cross-compatible with different virtualization software . The GUI tool is pretty nice too if you just want something that works, I heard that ya’ll were interested in working with more students, so ease-of-use is always nice.

I will say libvirt broke a lot on my Arch system, but I think that was just an Arch problem.

One bit I just realized: Patrick and I were discussing the inside-vm and outside-vm components, with potential communication between the two. I’m hesitant to expand the scope currently, but it seems like you’re already developing some of what could be an outside-vm component? I suppose that is the start of a larger conversation as to the path forward.

1 Like

I wrote the wrong date “completed by 4/29” We’ll actually finish it around 4/14, about a month.

Just clearing up the bad info. I edited the post already.

1 Like

I am guessing you mean Ruby and Python? Why? Is there something you can achieve with one that you feel you cant with the other? I’d argue that using a language for the sake of using a language isnt the best use of mental overhead, unless there is a very specific need. Unless I am misinterpreting and you are talking about bringing both our work together in the end, which I dont think will be too difficult with CI.

Concerning my libvirt problems, my challenge was making it play nice with Vagrant. I got unstuck last night after fighting some dependencies and a firmware bug. Currently working on a vagrant file to smooth out the build process.

As for inside/outside, I assume you are talking about nested virtualization (a debian vm running specs against a libvirt whonix vm?), which I plan to do eventually. First goal is get a single VM spun up with CI, then it should be easier to implement whatever nesting is necessary.

No idea yet how that will all look. For me, when it comes to software, it’s easy to get lost in the how and lose sight of the what. Maybe once I have travis, vagrant, and debian vm all working together I will have a better idea of what to do, or maybe not LOL :lab_coat:

1 Like

I’d argue that using a language for the sake of using a language isnt the best use of mental overhead, unless there is a very specific need.

I see what you’re saying, I think it’s just we can’t learn a new language and meet our deadlines at this point. Not ideal, but it is the way it is now.

Unless I am misinterpreting and you are talking about bringing both our work together in the end, which I dont think will be too difficult with CI.

I’m definitely interesting in bringing it together in the end. I think we just need to communicate to that regard.

As for inside/outside, I assume you are talking about nested virtualization (a debian vm running specs against a libvirt whonix vm?), which I plan to do eventually. First goal is get a single VM spun up with CI, then it should be easier to implement whatever nesting is necessary.

I’m specifically referring to what Patrick and I were discussing earlier, so not nested in this case. The idea is that some types of tests would have to be run on the host against the guest(s), and other tests would need to be run in the guest on it’s own components. We decided above to develop the “guest testing itself” software, with recognition that there would need to be another piece of software which ran on the host.

Even if our software systems end up having no feature overlap, from a user-standpoint it’d be a little silly if they ended up being totally different in the way one worked with them. As in, we should implement Gherkin in the same manner so that people don’t have to read two different sets of documentation to learn how to write a test case ( and so that we can share documentation rather than writing two completely different sets of wiki pages ).

On a related note, would you like to get in some kind of chat with the group of us? It might be desirable than just communicating it all out here.

1 Like

I would love a group chat. For a team I contract with I use slack, so I could do a channel there. It’s proprietary software which I am not the biggest fan of, but on the other hand I am required to use it by both of my employers, so it’s convenient. I also use signal in my personal coms, mostly cell.

I am open to other methods of communication, and working here as well. That is why I initially suggested helping us build an agile project board, bc it could help organize the flow.

1 Like

For team chat, Whonix isn’t on slack. The most popular Whonix chat turned out to be telegram. Followed by Matrix.

Link to Whonix telegram also in Whonix wiki footer.

1024px-Telegram 2019 Logo.svg.png Whonix ™ Telegram Chat

If the public chat is too busy, we could create another chat group for automated tests there. (Available mobile and desktop clients).

phabricator any good for that?

https://phabricator.whonix.org/

I wouldn’t worry too much about this. Any coordination might take away time / add complication.
Perhaps writing new tests later on, deciding on which test suite to use, might depend on personal taste and/or goals. Also I wouldn’t want to block the student project due new developments that happen after the initial student project discussion. That’s also because student time schedule of only around 1 month seems rather tight.

Experience has shown that most contributors are interested in shiny new features and before this day nobody ever started actually working on tests. Writing tests / test suites is unfortunately not a very hot topic for contributions. Therefore I am not too worried about too many people having a hard time deciding which test suite to contribute to and really happy to see progress in this important area being made! :slight_smile:

I wouldn’t worry too much about this. Any coordination might take away time / add complication.

Therefore I am not too worried about too many people having a hard time deciding which test suite to contribute to and really happy to see progress in this important area being made!

Alright, thanks for the directing. That makes things simpler.

phabricator

Yeah it seems like it has the features: Phabricator/Project management - MediaWiki
I’m personally experienced with Trello, but it’s not that great. It’s simple I guess, does what it needs to.


I am open to other methods of communication, and working here as well. That is why I initially suggested helping us build an agile project board, bc it could help organize the flow.

@Mycobee Right, and since we can freely work together in any capacity, we’re good to go. So, I’m okay with whatever, I’m sure my group members won’t mind too much either. The stuff Patrick suggested works, maybe make our own group on Telegram so we can have a good chat history?

As for the project board, lead the way? Haha.

1 Like

Looks like Phabricator can work fine @Patrick , I am just getting that and telegram setup now. I was planning to create issues with Github projects, but I am fine to keep it all centralized on Phabricator.

Would you mind making a project for WATS on Phabricator please? Where I am allowed to create issues? I don’t have permissions at the moment. Name is mycobee on Phabricator

Also @fahr3n, I am on telegram now in the group room, if you want to start a group message for strictly the testing collaboration. Name is bee on there too.

I put updates on my side of things in my thread btw:

1 Like

done: WATS

Fixed.

Created a public group (I guess don’t need private group):

Add @Mycobee and @fahr3n already.

Any update?