Hacker News new | ask | show | jobs
by daddylonglegs 1776 days ago
I cannot find any source files for the FPGA code in the repository (no .v .vhd .vhdl files and I can't see anything by looking around manually). The FPGA directory [1] contains some binaries and some documents relating to commercial code from a Swiss firm [2].

I've seen plenty of projects described as open source when the firmware is open source and the hardware is closed but this is the first time I've seen one where the schematics and board layout are open but the firmware is closed. Note that the hardware itself is quite simple, the smart stuff happens in three modules: GNSS receiver, precision clock and FPGA. To me, the contents of the FPGA source code are the only interesting part of this project. Additionally, you won't be able to meaningfully modify or reuse this project without editing the source code.

The hardware module these FPGA binaries seem to be compiled for is described as an AC7100B, the source given for these is a defunct ebay link [3] [4] :-O This project uses two and half grand's worth of atomic clock and the heart of it runs on a module that fell off the back of a lorry!?

[1] https://github.com/opencomputeproject/Time-Appliance-Project... [2] https://www.nettimelogic.com/clock-products.php [3] https://github.com/opencomputeproject/Time-Appliance-Project... [4] https://www.ebay.com/itm/XINLINX-A7-FPGA-Development-board-A...

Edit: I realise this comes across as quite negative. This looks like a neat project, one I would actually use, but only if it were meaningfully open source.

5 comments

It's a particular module for the Xilinx Artix 7 XC7A100T, made by a Shanghai-based integrator. As an individual user, you could buy these on Aliexpress, from eBay resellers, or from Amazon resellers. Facebook presumably has an arrangement with the contract manufacturer that's not going to be possible for an individual developer ordering ones and twos to replicate.

However, to modify the HDL, you'd need a $3,000 license for Xilinx Vivado, which is pretty much a nonstarter for amateurs.

[1]: https://store.digilentinc.com/arty-a7-artix-7-fpga-developme...

Thank you for id'ing the module. I can now see how using this would work for Facebook's needs.

I think the XC7A100T is supported by the free (and limited) edition of Vivado [1]. Of course, the confusion about what you can and can't do with the HDL is in itself a barrier to open source and hobby work. This is true even when the work is theoretically possible and everyone has the best of intentions. <sigh>

[1] https://www.xilinx.com/products/design-tools/vivado/vivado-m...

That is not true. First of all, the reason why we used the Alinx module (which you can buy of ebay as well as Amazon), was to make it easier for the community to manufacture and build. Our internal version of the time card does not include the module! The second piece about the XC7A100T, you do not need any license to do any development as the free version of vivado is more than enough to work with. Give us a bit of time and we will have a fully functional open HDL ready for you to add things. It is very easy to sit down and nag about a project. I want you to understand that I had only one goal in mind when I released this project to public and that was allowing others to have a head start to work on time related project. Of course, I work for Facebook and I try to help my company with new technologies as a researcher, but helping the community and releasing the source code (to whatever I had) is just a core value of how I love to support the community.
you don't need vivado to modify the hdl, you need vivado (or some other proprietary xilinx toolchain) to produce the bitstream which actually deploys to the fpga.
That's a level of nitpicking that I didn't bother with.

Of course the Verilog or VHDL is just plaintext, which you can modify anywhere, but to actually do anything with it you need to compile it into a bitstream.

It does make me wonder if someone could set up a CI server to get around proprietary compilers like Vivado. Point the community resource at your source and get back a binary! Obviously you'd need to strip the license ID...

i didn't mean to nitpick and it's not nitpicky since there are now open toolchains (though not for xilinx) that you support verilog as a frontend

http://www.clifford.at/yosys/ http://www.clifford.at/icestorm/

Valve did something similar for the Vive tracker dev kit. There was a time before the standalone tracker was available https://www.vive.com/us/accessory/vive-tracker/

where if you wanted a tracker that wasn't a full controller you had to build it yourself. This involved a paid workshop in Seattle to get access to the dev kit and learn their tooling. Hardware was open source, but firmware was closed. If you wanted firmware changes you had to pay Synapse consulting fees for them to do it for you, and the updated firmware would then be made available free of charge to anyone else who paid for the workshop.

The Valve situation sounds like they attempted to open source after the fact, which doesn’t work with large hardware projects.

The only way to really open source a hardware project of this magnitude is to set open source as a constraint from the start. If you don’t, you inevitably end up with someone licensing some code somewhere from a vendor that can’t be open sourced. It gets integrated deeply enough that the project can’t exist without that piece and it’s too late to rewrite around it so the open source commitment goes out the window.

If I had to guess, it sounds like Valve tried to work around the situation with the workshop where participants entered into some contract as part of the workshop.

And if I had to guess about the Facebook situation, it was probably decided to open source the project after the fact. I’m guessing they wrote the website copy while someone else went off to try to secure open source permission for all components involved and they never reconciled the two efforts, hence the weird dead eBay links and missing files.

I shouldn't have called it open source, it was source available to customers who paid for the training course and signed a license agreement. Don't think they ever had intention of making it open. I found the model especially strange because of the requirement that any custom changes you asked for would be available to everyone else (your competitors). I guess they didn't actually want the workload of custom changes so this was a way of further disincentivizing it?

https://www.synapse.com/steamvr

> I found the model especially strange because of the requirement that any custom changes you asked for would be available to everyone else (your competitors).

It's the same model as any game-console SDK. If you ask for changes to the SDK, those changes are going into "the SDK", which all customers get access to. Platform providers don't tend to offer work-for-hire for custom forks of their code; instead, what they're offering is to prioritize adding certain features to the shared upstream codebase. In the end, the platform provider wants there to just be one SDK, that solves the superset of all their customers' problems. Anything else is a ridiculously-large maintenance burden.

Just give us a bit of time. We had to use some IPs that due to licensing limitations prohibited us to release the source and we were only allowed to release the bin files. We are replacing them to open source cores and we will have that part of the project available to you too. I hope you understand the situation of the project. I would love to see people adding more features to the FPGA part of it such as IRIG-B output and many other cool things that can be done. Please stay tuned.
I would bet it's just a simple oversight. It happens. Did you file an issue so they're aware of the problem?
Thank you, I will put a query on Github.

However, I think they've used code from NetTimeLogic under a licence [1][2] that precludes distributing the source:

> 3.2 Distribution Rights. LICENSEE may reproduce and distribute the Licensed Materials, solely in binary form that operates in LICENSEE’s system-level hardware products.

This is a perfectly reasonable way of developing a system but it is sadly incompatible with sharing your work as open source.

[1] https://www.nettimelogic.com/licensing.php

Edit [2] IANAL, this is not legal advice etc.

I have no problem with this project either and find it interesting, but I agree with you completely that it looks like someone took a hobby-level experiment with a corporate budget to the prototype stage then realized it had near zero practical application so, "Open source!"