pinout-xyz / pinout-2024

1 stars 1 forks source link

ROADMAP #1

Open Gadgetoid opened 5 months ago

Gadgetoid commented 5 months ago

Pinout 2024

The scope of this project is simple: rewrite Pinout from the ground up, while trying to avoid all the pitfalls I fell into while organically growing the original site.

I aim to achieve this by:

Scope

This project will include

This project will not include

Chip & Board Definitions

A "board" is understood to mean a single-board computer, such as the Raspberry Pi 5.

Board definitions now live in https://github.com/pinout-xyz/pinout-2024/tree/main/boards and aim to paint a complete picture of the technical specifications of each board respectively. A board is a collection of chip signals routed to a header. At time of writing they also include some data about the type and orientation of headers in an effort to aid visual presentation. Whether they should be concerned with this is debatable!

Chip definitions live at https://github.com/pinout-xyz/pinout-2024/tree/main/chips and aim to document the signals available on a chip, independent of any board-specific implementation.

Board and Chip definitions are validated against the JSON Schema documented and stored in https://github.com/pinout-xyz/pinout-2024/tree/main/schema. This validation happens via GitHub CI Workflows but you can run it locally:

*make a virtual env you maverick*
pip install -r requirements-dev.txt
make pytest

Add-on Definitions

An "add-on" is considered to be a HAT or pHAT or Mini HAT or any add-on that uses one of the documented headers in some fashion. Traditionally Pinout would only document boards that used the 40-pin header, but this requirement has been relaxed on a case-by-case basis. We may consider removing these, since they do not adhere to the central premise of the website (pinout documentation, not marketing...)

Website(s)

The intention of this project is to generate one or more websites from the board definition files.

Whether or not that will happen in this repository is debatable. It might serve us better to collect board and add-on definitions here, and leave visual presentation to other projects. This would help keep concerns rigorously separated.

See https://github.com/pinout-xyz/pinout-2024/issues/2 for progress on the website visual design.

How You Can Help

References

lurch commented 5 months ago

An open invitation for Raspberry Pi compatible boards to contribute their json definitions and be represented (somehow?) in the site

Non-Pi compatible boards. I don't really know how to reconcile our add-ons (as in HATs and pHATs and mini HATs) database with no-compatible boards.

Could you clarify what you mean by a "Raspberry Pi compatible board" and a "Non-Pi compatible board" ? :confused:

Will this new repo also include add-on boards (i.e. HAT / pHAT / HAT+) or is this repo just concerned with the "main boards" ?

You may be interested to hear that a big comparison table recently got added to https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#introduction :slightly_smiling_face:


I just had a quick look at https://github.com/pinout-xyz/pinout-2024/blob/main/schema/__init__.py (and the files in https://github.com/pinout-xyz/pinout-2024/tree/main/boards )

lurch commented 5 months ago

P.S. Is "pinout-2024" just a temporary name? Or will this repo "look old" nest year? :older_man:

P.P.S. Can I assume that you won't be including WiringPi numbers? :rofl:

Gadgetoid commented 5 months ago

Itā€™s a temporary name, Iā€™ll probably rename and archive pinout.xyz when it comes time to swap over.

Unsure about WiringPi- the project is still crawling along. They wonā€™t be included in the board definitions in any case, it would be the static HTML manglers responsibility to handle thoseā€¦ somehowā€¦

The splitting up suggestion is interesting. I, too, found the order of pins to beā€¦ confusing. Having a full document of chip signals and then mapping those to headers would also allow chip sharing between boards- IE: CM4 vs Pi4.

Such complete underlying Pinout documentation is a little ambitious for me alone (Iā€™m not known for my focus and precision) but I could probably add the signals weā€™re using so far and hope they get fleshed out.

Splitting out could make ā€œcanonicalā€ more of a presentation layer thing too. Itā€™s just the ā€œdefaultā€ (except itā€™s not really a default) mode which is presented on the Pinout diagram presently. Canonical was the best alternative to default I could think up šŸ¤£

But we probably need another json that sits between the board/chip data and supplements it for presentationā€¦ friendly names, icons, etc.

Alternating - the pins alternate from left to right of the header Around - Pico style, maybe ā€œclockwiseā€ ā€œcounter-clockwiseā€ are better terms? Do any headers do ccw? On a single row header, or multiple row header these terms are meaningless - maybe itā€™s better just to be explicit about coordinates in your ā€œheaderā€ definition filesā€¦

Gadgetoid commented 5 months ago

Okay I have split boards into "chips" and "boards", though I still have "canonical_mode" for now šŸ˜†

It's a lot cleaner and more rational, and a lot more expressive, though it's an extra level of indirection when generating visualisations from the data- the point of the data is not to make visualisation easy, it's to make it correct.

lurch commented 5 months ago

You seem to have missed the comments I placed above the horizontal-divider :wink: (I was attempting to separate general-project comments from schema-specific comments)

Gadgetoid commented 5 months ago

Oh sorry, standard ADHD "only read the last part of any wall of text" problems :laughing:

Could you clarify what you mean by a "Raspberry Pi compatible board" and a "Non-Pi compatible board" ? šŸ˜•

I guess the more apt term is "clone." Let's go with "clone." If it's like- to pick a totally random example- the BeagleY-AI and intends to be pin-compatible then I don't super mind hosting documentation for it. It's useful for me to have some of these boards on-hand so I don't footgun myself into another non-standard GPIO mess.

Will this new repo also include add-on boards (i.e. HAT / pHAT / HAT+) or is this repo just concerned with the "main boards" ?

Yes. Migrating add-ons over is essential before the new site can replace the old. It needs to be 1:1 feature compatible, basically. But better, better where it can be better.

You may be interested to hear that a big comparison table recently got added to https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#introduction šŸ™‚

I find Pi's documentation borderline unusable because everything is on one long, long, long page and my brain just checks right out. But actually, yes, the table up top is very useful!