X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=HDL_workflow.mdwn;h=6530120fff7b788ee79363e0caaacc8428faa165;hb=55ac96a7c0ae1507717187a488bdc1f42df3e1c5;hp=417245f3f8c877b59369eeb2b7a760f3d22e41e7;hpb=e42f38596abd9568ae54996838c15726cce43ca0;p=libreriscv.git diff --git a/HDL_workflow.mdwn b/HDL_workflow.mdwn index 417245f3f..6530120ff 100644 --- a/HDL_workflow.mdwn +++ b/HDL_workflow.mdwn @@ -1,63 +1,319 @@ # HDL workflow -This section describes the workflow for developing the LibreSoC. 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. +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. +* 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 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 -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. +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. -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. +## ikiwiki -# Hardware - -RAM is the biggest requirement. Minimum 16GB, the more the better (32 or 64GB starts to reach "acceptable" levels. Disk space is not hugely critical: 256GB SSD should be more than adequate. Simulations and FPGA compilations however are where raw processing power is a must. High end Graphics Cards are nonessential. - -What is particularly useful is to have not only hi-res screens (curved is *strongly* recommended if the LCD is over 24in wide, to avoid eyeballs going "prism"), and to have several of them: the more the better. Either a DisplayLink UD160A (or more modern variant) or simply using a second (lower spec hardware) machine is really effective. +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 + +