Thank you Vladimir for quick and detailed explanation.
Great to know that it can be published to public!!
And the future plan to open information about Tofino is also exciting.
Looking forward to living in a world where anyone can learn about Programmable Ethernet ASIC just like learning about Intel 64 CPU with SDM (Software Developer Manuals).
On 2020/05/30 3:58, Vladimir Gurevich wrote:
Thank you so much for reaching out!
The short answer is that you do not need to be a FASTER member to openly publish your code. You are also allowed to publish it in a *public *repo if you want to.
Having said that, I would personally be very excited to see you joining FASTER. The advantage of doing that is that it allows you to openly collaborate with the other researchers, since (let's face it), one still needs to get the SDE and the actual hardware to work with these programs and SDE is not public yet. The other advantage of joining FASTER is the ability to get access to Barefoot documentation and Tofino-specific support.
Below are some excerpts from a short FAQ that I prepared for the FASTER members that can you might also find useful:
Q: What is being allowed?
A: You can**openlypublish your data plane code written for Tofino in both P414 and P416/TNA as well as the accompanying control plane code, written using Barefoot APIs such as BfRt, BF Runtime and the “older” style PD (and PD-Fixed) APIs.
*Q: *Why is this important? Couldn’t I do it before?
A: All the interfaces mentioned above were proprietary and covered by the respective agreements. Thus, you were not legally allowed to openly share your code – it would be a violation of the agreements you signed because it would disclose our confidential information without our consent. While Intel still retains full proprietary ownership rights and control over these interfaces, Intel is now granting you permission to publish your code that uses these interfaces.
Q: How can I know exactly what’s open and what is not?
A: To assist the community further, Intel plans to openly publish these interfaces under the Creative Commons CC BY-ND (Attribution, No Derivatives) license. In the interim, however, you can consider this notice as permission to publish your code that uses these interfaces.
Q: What can I publish?
A: You canopenly publish your own code written for Tofino, e.g. by putting it on Github, attaching to a publication, etc.
*Q: What **can I not *publish?
A: You are /not/ allowed to publish Intel software, e.g. the P4Studio SDE in source or in binary. You are /not/ allowed to publish the artifacts produced by the P4 compiler and other P4Studio tools, such as Tofino binary file (tofino.bin), context.json and bfrt.json, logs, visualizations, etc. You are also /not/ allowed (yet), to publish Intel’s own interface files: first, there is no practical need to do that and, secondly, Intel will publish them on its own, once they are ready for publication.
Please, note that in the course of your interaction with Barefoot/Intel you probably learned a lot more information than just these interfaces. That information is still governed by the agreements that you have in place.
It also goes without saying that you need to abide by all the agreements you have with your school or employer so that you do not accidentally disclose the information that they consider confidential.
*Q: **What code does this cover? *
A: The only code that is covered by this permission is the code without any comments – the pure code. That is the precise definition of what is allowed. This does not mean that you cannot commentthe code – you absolutely can. You simply need to make sure that in your comments and other documents (such as README files) you do not accidentally disclose protected information, in the same way you need to be careful not to disclose it when you write a paper or present at a conference.
*Q: What are Intel’s longer-term plans and *vision for being more open about Tofino?
A: Intel intends to open Tofino in the long term. As it is the case with general purpose CPUs, we believe that people should be able to learn about the architecture and interfaces, teach about them and write the code openly. This announcement is just the first step. Stay tuned!