# HDL workflow This section describes the workflow and some best practices for developing the Libre-SOC hardware. We use nmigen, yosys and symbiyosys, and this page is intended not just to help you get set up, it is intended to help advise you of some tricks and practices that will help you become effective team contributors. It is particularly important to bear in mind that we are not just "developing code", here: we are creating a "lasting legacy educational resource" for other people to learn from, and for businesses and students alike to be able to use, learn from and augment for their own purposes. It is also important to appreciate and respect that we are funded under NLNet's Privacy and Enhanced Trust Programme . Full transparency, readability, documentation, effective team communication and formal mathematical proofs for all code at all levels is therefore paramount. Therefore, we need not only to be "self-sufficient" (absolutely under no circumstances critically reliant on somebody else's servers **or protocols**) we also need to ensure that everything (including all communication such as the mailing list archives) are recorded, replicable, and accessible in perpetuity. Use of slack or a "forum" either actively prevents or makes that much harder. # Collaboration resources The main message here: **use the right tool for the right job**. * mailing list: general communication and discussion. * irc channel #libre-soc: real(ish)-time communication. * bugtracker: task-orientated, goal-orientated *focussed* discussion. * ikiwiki: document store, information store, and (editable) main website * git repositories: code stores (**not binary or auto-generated output store**) * ftp server (): large (temporary, auto-generated) file store. we will add an IRC channel at some point when there are enough people to warrant having one (and it will be publicly archived) note also the lack of a "forum" in the above list. this is very deliberate. forums are a serious distraction when it comes to technical heavily goal-orientated development. recent internet users may enjoy looking up the "AOL metoo postings" meme. note also the complete lack of "social platforms". if we wanted to tell everybody how much better each of us are than anyone else in the team, how many times we made a commit (look at me, look at me, i'm so clever), and how many times we went to the bathroom, we would have installed a social media based project "management" system. ## Main contact method: mailing list To respect the transparency requirements, conversations need to be public and archived (i.e not skype, not telegram, not discord, and anyone seriously suggesting slack will be thrown to the lions). Therefore we have a mailing list. Everything goes through there. therefore please do google "mailing list etiquette" and at the very minimum look up and understand the following: * This is a technical mailing list with complex topics. Top posting is completely inappropriate. Don't do it unless you have mitigating circumstances, and even then please apologise and explain ("hello sorry using phone at airport flight soon, v. quick reply: ....") * Always trim context but do not cut excessively to the point where people cannot follow the discussion. Especially do not cut the attribution ("On monday xxx wrote") of something that you are actually replying to. * Use inline replies i.e. reply at the point in the relevant part of the conversation, as if you were actually having a conversation. * Follow standard IETF reply formatting, using ">" for cascaded indentation of other people's replies. If using gmail, please: SWITCH OFF RICH TEXT EDITING. * Please for god's sake do not use "my replies are in a different colour". Only old and highly regarded people still using AOL are allowed to get away with that (such as Mitch). * Start a new topic with a relevant subject line. If an existing discussion changes direction, change the subject line to reflect the new topic (or start a new conversation entirely, without using the "reply" button) * DMARC is a pain on the neck. Try to avoid GPG signed messages. sigh. * Don't send massive attachments. Put them online (no, not on facebook or google drive or anywhere else that demands privacy violations) and provide the link. Which should not require any kind of login to access. ask the listadmin if you don't have anywhere suitable: FTP access can be arranged. ### Actionable items from mailing list If discussions result in any actionable items, it is important not to lose track of them. Create a bugreport, find the discussion in the archives , and put the link actually in the bugtracker as one of the comments. At some point in any discussion, the sudden realisation may dawn on one or more people that this is an "actionable" discussion. at that point it may become better to use itself to continue the discussion rather than to keep on dropping copies of links into the bugtracker. The bugtracker sends copies of comments *to* the list however this is 'one-way' (note from lkcl: because this involves running an automated perl script from email, on every email, on the server, that is a high security risk, and i'm not doing it. sorry.) ### Mailing list != editable document store Also, please do not use the mailing list as an "information or document store or poor-man's editor". We have the wiki for that. Edit a page and tell people what you did (summarise rather than drop the entire contents at the list) and include the link to the page. Or, if it is more appropriate, commit a document (or source code) into the relevant git repository then look up the link in the gitweb source tree browser and post that (in the bugtracker or mailing list) See ### gmail "spam"ifying the list see basically it is possible to select any message from the list, create a "filter" (under "More"), and, on the 2nd dialog box, click the "never send this to Spam" option. ## Bugtracker bugzilla. old and highly effective. sign up in the usual way. any problems, ask on the list. Please do not ask for the project to be transferred to github or other proprietary nonfree service "because it's soooo convenient", as the lions are getting wind and gout from overfeeding on that one. ## ikiwiki Runs the main libre-soc.org site (including this page). effective, stunningly light on resources, and uses a git repository not a database. That means it can be edited offline. Usual deal: register an account and you can start editing and contributing straight away. Hint: to create a new page, find a suitable page that would link to it, first, then put the link in of the page you want to create, as if the page already exists. Save that page, and you will find a questionmark next to the new link you created. click that link, and it will fire up a "create new page" editor. Hint again: the wiki is backed by a git repository. Don't go overboard but at the same time do not be afraid that you might "damage" or "lose" pages. Although it would be a minor pain, the pages can always be reverted or edited by the sysadmins to restore things if you get in a tiz. Assistance in creating a much better theme greatly appreciated. e.g. ## git we use git. more on this below. we also use gitolite3 running on a dedicated server. again, it is extremely effective and low resource utilisation. reminder: lions are involved if github is mentioned. gitweb is provided which does a decent job. ## ftp server