Contributing to the Keep Dreaming Project

Thanks for helping out! This will be a general guide on how to contribute to the project, enjoy!

Checkout the overview for more information about the project and the how to join section below, to well join.

How Can I Help?

The project has a pretty big scope so I'm sure you'll find something you can help with! I'll outline what some of those areas are below.

Checkout the roadmap and tasks on Phabricator for more specific ideas.

Planning and collaboration for the project occurs on Discord and Phabricator, that's the best way to contact us. Feel free to bring up any ideas you have for the project!

GitHub is used solely as a repository mirror, issues and contributions should be done using Phabricator. Exceptions will be noted.

Hardware

Design

I plan on doing all the hardware design work myself, but I'm open to any input or ideas. There are some areas I might need help in:

  • Testing development boards
  • Creating tests to make sure they work as intended

Dreamcast Variants

Right now I only have a handful of NA and JP VA1 Dreamcasts to examine and test with, I'd like to get my hands on more variants. Randomly buying Dreamcasts on eBay trying to find specific versions doesn't work very well.

Software

There are quite a number of different software projects however many of them are in the planning stages.

When the development boards are done we'll need help in essentially all facets of developing software for them.

Relevant Knowledge

GD-ROM ODE, Network Adapter, Wireless Controller, Logic Analyzer
  • C
  • C++
  • SystemVerilog
  • Quartus
Sigrok Protocol Decoders
  • Python

Contributing to any of the opensource projects that the Keep Dreaming Project relies upon is great too, which you can checkout below in the tools section!

Information

Dreamcast Information

  • Collecting and organizing information about the Dreamcast
  • Contributing any research that you've done
  • Adding model, assembly, and part information to InvenTree
  • Taking and gathering pictures

Documentation

Writing up documentation on the various facets of the Keep Dreaming Project itself.

  • Hardware Documentation
    • Design, Operation, and Assembly
  • Software Documentation
    • Operation, Compilation Instructions

Guides

How to actually contribute and use the services or any of the other stuff under the Keep Dreaming Project umbrella.

  • Phabricator and arcanist
    • How to contribute code
    • How to report issues
    • How to request a feature or enhancement
    • How to use Phabricator and arcanist
  • BookStack
    • How to use BookStack
    • Style Guide?
  • InvenTree
    • How to use InvenTree
    • How to add models, parts, and assemblies
    • Explanation of templates and variants and how parts tie together

Templates

Creating templates for BookStack and tasks on Phabricator.

Tools

Thankfully most of the major stuff is taken care of but there's still a lot to improve.

InvenTree

I've been working on adding permission, registration, and authentication systems to InvenTree to make it usable for our use case. Right now it's pretty hacked together and needs a lot of work.

Relevant Knowledge
  • Python
  • Django
  • Docker
  • HTML
  • CSS
  • JavaScript

tikatree

Currently adding features and cleaning things up, but it works as intended for the most part

Relevant Knowledge
  • Python

Webhook Bot

This works but is really poorly implemented, it either needs to be cleaned up or redone.

Relevant Knowledge
  • Python
  • Docker
  • Rust?
  • Go?

VSCode

I need to migrate QMSV from being a Sublime-Text plugin to a VSCode extension. There is also a relatively new Phabricator extension that I plan on contributing to in order to make using arcanist easier.

Relevant Knowledge
  • Typescript
  • Python
  • SystemVerilog
  • Quartus

Patreon

Anything helps!

Contributing to Patreon helps in a couple of ways

  • Helps with hardware costs (parts, PCBs, etc...)
  • Lets me spend more time on the project
  • Helps cover server costs

Currently the server costs are really low. But as the project grows the tiny VPS I'm paying for won't be enough.

Joining The Project

You can create an account for BookStack and Phabricator, alternatively you can login using a GitHub account.

By default you will only have viewing permissions, you'll have to contact me in order to start contributing. Even though I can restore things I'd still like to avoid griefers.

You can contact me at any of these places (e-mail or Discord work best):

In your message include:

  • What username you used to sign up
  • And at least one of the options below
    • How and why you want to contribute
    • Send me a link to a project or post that shows you know something about the Dreamcast/Programming/Electronics

It doesn't need to be lengthy or very good. Once I review it I can give you the appropriate permissions so you can start contributing!

Otherwise everyone is welcome on the Discord server and you can chat with us there.

InvenTree is still under construction and is currently closed to contributions.

Code of Conduct

You can e-mail me at conduct@kairohm.dev or contact me on Discord if you have any concerns.

Licenses

Hardware

All of my hardware designs are licensed under the CERN OHL v1.2 or later.

Software

Licenses will vary per project, typically either the MIT or a GPL variant.

HDL

Currently there isn't a good opensource license for HDL, many other projects use the MIT or GPL license although they aren't designed for it. I would like to use the CERN OHL v2 but it is still a draft.

Text, Images, Etc

Anything not covered by the previous licences will use the CC-BY-SA-4.0 license, exceptions will be noted.