Hacker News new | ask | show | jobs
by kaoD 3471 days ago
I've spent a few minutes digging around the repo and I still don't know what this does or how it works. There doesn't seem to be an obvious library "entry point" from where to start understanding the system. Where are the docs? I could only find a paper. There is no way people are going to use your framework if you didn't document it!

There are no doc comments, which is pretty unusual for a Rust project. Please use Rust's excellent documentation generator. It takes a few seconds to document an item as you're coding it, and it really pays off if you want to attract new users or contributors. Even if you didn't document it, rustdoc is still useful to see the project structure. Generate static documentation!

There is a /tests/ folder but they're not very useful to understand what it is or what I can do with it, and they have no comments either.

Remember: it is your responsibility as an engineer to document your project. I'm guilty of documenting scarcely as much as anyone else, but I couldn't find a single comment which didn't consist of old code commented out.

EDIT: I don't want to sound dismissive or anything. It's just a pity not being able to use an interesting framework due to lack of documentation.

3 comments

I also have been finding this difficult to understand. It doesn't help that the Wikipedia article for NFV reads like vendor marketing copy:

> NFV has proven a popular standard even in its infancy. Its immediate applications are numerous, such as virtualization of mobile base stations, platform as a service (PaaS), content delivery networks (CDN), fixed access and home environments. The potential benefits of NFV is anticipated to be significant.

Sounds like it can do everything! By comparison, the paper is apparently more self-reflective and says:

> despite[] promised advances, there has been little progress towards large-scale NF deployments

Skimming the paper and comparing it to MapReduce, it seems to provide a MR-like programming model tailored to packet processing. In section 3.1 they describe programming control flow abstractions: group by, shuffle, merge. These should be familiar to users of distributed compute frameworks like Hadoop. NFV seems to be about implementing this style of compute while processing packets at network line rate.

Thanks for the slides!

I agree the lack of documentation is not really encouraging to test. My guess (I am not related to the project) is that it's pretty experimental work for now, and authors may have focused more on optimizing for performance than on stabilizing things / documenting. But better guidance would help reach more users and get more feedback.

For my part I like the concept of using Rust features to provide packet isolation without having too much performance downgrade. Also, this is the first time I hear of Rust running on top of DPDK.

Hi, author here. While I am sorry that the code is not as well documented as it should be, I think your comment that you could not find a single comment might be a bit overblown. The heart of the project is in the framework directory, where things are documented, for example https://github.com/NetSys/NetBricks/blob/master/framework/sr.... Also if you look at build.sh there is a documentation build that would have given you documentation.