joeycastillo / The-Open-Book

Creative Commons Attribution Share Alike 4.0 International
7.45k stars 232 forks source link

Contribution Guide #8

Closed hazkaz closed 1 year ago

hazkaz commented 4 years ago

Hi @joeycastillo , this is a great effort and idea. It would be nice if you could put up a contribution guide for people like me wanting to work on this project. Thanks.

ech0r commented 4 years ago

I would like to contribute as well. I came across this project on Hacker News.

titimoby commented 4 years ago

How do you think we can help you?

To have more code contribution quickly, do you think a simpler device like only a feather M4 with a e-ink wing directly from adafruit could be a first base to help you?

hazkaz commented 4 years ago

How do we find out what other boards will be compatible with the software? Since the hardware is likely to change in the future, how do we make the code more compatible with other hardware?

joeycastillo commented 4 years ago

Hi y'all, sorry I'm just seeing this, apparently I haven't been getting notifications about comments on the repository. @titimoby, that actually already exists; you can order Rev B or C of the eBook wing and it works with an M4 Feather, it's how I've been doing my development work so far. But I also realize that to make it cost effective, I really need to have the microcontroller and power bits on the board, so I dropped work on software this month to focus on getting that minimum viable hardware into the world.

I hope to have more to share on this front next month; I've just ordered the first round of the new boards and once they're built and I have CircuitPython running on them, that'll be when work on the software can start in earnest. Like, I have a bunch of Arduino sketches that can page through a demo book, but I hope to write the actual book reading software in a higher level language like CircuitPython so it's easier for people to pick up and hack on.

To that end, the big challenge I've been tackling at the moment is text drawing; CircuitPython doesn't have a performant way to display text right now, and I want the book to be able to support every language on earth. To that end I started hacking on a thing I'm calling Babel, that stores glyphs for all languages on a 2MB flash chip. That's the C++ library; started working in that just because it's the most comfortable to me (and gets me testing quickly in Arduino). The port to CircuitPython is where I could use some help at the moment. I'm not super fluent in CircuitPython internals, but I think that writing Babel as a native module is going to be the only way to coax acceptable text drawing performance out of CircuitPython. So yeah, future-compatible eBook software is a little ways out, right now the goal is to just get, y'know, text on the screen using CircuitPython. :)

titimoby commented 4 years ago

Don't be sorry, as I can see, there is quite a lot of people interested and you have many questions ;) I'm sure you need some time to have a proper hardware you are happy with and I will wait.

But in the meantime, I was wondering if existing pieces from Adafruit can be put together to start messing with software: I mean something usable even if it is on a breadboard with plenty of wires.

joeycastillo commented 4 years ago

@titimoby:

I was wondering if existing pieces from Adafruit can be put together to start messing with software: I mean something usable even if it is on a breadboard with plenty of wires.

Actually yes! Mostly. There are a couple of parts you'd need from elsewhere (namely the screen and a spare SPI Flash chip for Babel stuff), but beyond that you can build the equivalent of the wing with:

But if you're comfortable with the soldering, honestly I'd recommend just building the wing; it's fun to hold and makes hacking on it a joy. If there's enough interest I might make a small run of like 10 of Rev C just to get them out into the world; aside from the 24-pin header, which I could probably reflow here, all the rest of the soldering is pretty doable by hand. It's all SOIC chips and 0805 surface mount, nothing too intimidating.

titimoby commented 4 years ago

I have no issue with soldering even if I only know hand soldering until now. This project could be a good first for smd soldering. Let me know if you decide to launch a batch of Rev C, I'll be glad to buy one and experiment.

liamdawson commented 4 years ago

I have zero electronics experience/confidence/hardware, are there any simulators I could try things out in? I was once investigating the possibility of doing firmware for a different SoC (RTL8710AF) in Rust, would be fascinated to see if I could apply that idea in this scenario.

AndersCulverD5 commented 4 years ago

@joeycastillo I came across this project recently and I'm also interested in helping in some way. I'm a junior embedded software engineer and I've been looking for cool projects to contribute to. Is the list of parts needed to do development the same as your previous reply from October? Let me know if there is something that I could try to hack on!

beelzebielsk commented 4 years ago

I am also interested in this project, and in contributing to it. I recently bought a kindle, and while I like the experience, I want something open that I can hack on. I realized my reading device is a very personal thing, as my reading experience is.

I have no electronics experience, but I am a junior software engineer. At the very least, I'd like to get my hands on one even if that means trying to build it myself.

braininahat commented 4 years ago

I too would like to contribute to this project. I have experience in all sorts of things from embedded to computer vision and can do software architecture design stuff too. Is there a mailing list or something where you discuss the roadmap?

joeycastillo commented 4 years ago

Hey all and I'm so sorry for dropping the ball on this thread. It's been a strange year.

The situation as it stands: I have PCBs of the E-Book FeatherWing available on Tindie; this is a bare PCB that, when assembled, is designed to work with a Feather M4 Express to enable most of the functionality of the Open Book. I chose to make this design available first since it's a simpler build. The BOM is available on KitSpace, and with their browser extension it's one click to order almost all of the parts on DigiKey.

I also have PCBs of the Open Book that I plan to make available later this week on Tindie; I just want to finish up some documentation and the software necessary for flashing the bootloader and testing the device. The boards will show up on this page when available. And the same Open Book library in this repository should work seamlessly on both the E-Book Wing and the Open Book.

While it's not quite a contribution guide, I'm working on some rather extensive documentation on the Open Book; as of now it's 12,000 words and covers both tips for building the device, and the documentation you would need to start developing for the device. I'll also be making a final BOM with one-click ordering available on Kitspace in the coming days.

I've been focused on getting the PCB's available and writing basic software drivers for things like the e-paper display and the language support, but I have not had as much time to dedicate to the e-book reading software. There is a demonstration sketch called MVBook in this repository that shows a sort of minimum viable prototype for what I hope the software will look like (video here). I have some ideas about how I might want to architect the software, and opinions about what texts should look like (plain UTF-8 text with simple YAML or TOML front matter), but no formal roadmap for this.

I am hoping to make moves on this effort in the month of July, including documentation around the software effort and a more formal guide for contributors; I had hoped to be far further along by now, but I'm afraid I've been more scattered this year than I would have liked. In the meantime I welcome any suggestions or contributions in this thread, and will respond here as soon as I have the Open Book PCB's available for folks who want to build their own.