Difference between revisions of "Contributing"
(→Testing) |
|||
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
The first question people generally ask about this project is, "How can I help out?". Here are some ways someone can be useful to the project: | The first question people generally ask about this project is, "How can I help out?". Here are some ways someone can be useful to the project: | ||
+ | |||
==Developing== | ==Developing== | ||
This is perhaps the most valuable way one can help the project. We get many people who want to help with development but they don't have the necessary skills. If you don't, think of it as an opportunity to learn new and worthwhile skills instead of a roadblock. After all, the best way to learn is in the field doing real work. Here are some topics that developers need to know about: | This is perhaps the most valuable way one can help the project. We get many people who want to help with development but they don't have the necessary skills. If you don't, think of it as an opportunity to learn new and worthwhile skills instead of a roadblock. After all, the best way to learn is in the field doing real work. Here are some topics that developers need to know about: | ||
Line 7: | Line 8: | ||
**[http://www.lysator.liu.se/~kjell-e/embedded/ARM-ARM.pdf ARM ARM] | **[http://www.lysator.liu.se/~kjell-e/embedded/ARM-ARM.pdf ARM ARM] | ||
**http://simplemachines.it has great resources for learning ARM | **http://simplemachines.it has great resources for learning ARM | ||
− | *'''C''' - Used whenever we can avoid using ARM assembly. | + | *'''Rust''' and '''C''' - Used whenever we can avoid using ARM assembly. |
− | *'''Python''' - | + | *'''Go''' and '''Python''' - Used to implement host-side software like wInd3x and bits of EMcore/Rockbox/... |
+ | |||
==Vulnerabilities== | ==Vulnerabilities== | ||
− | If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the [[Notes vulnerability]] and the [[Pwnage 2.0]] vulnerability. Right now, we mostly need this for the [[Nano | + | |
+ | If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the [[Notes vulnerability]] and the [[Pwnage 2.0]] vulnerability. | ||
+ | |||
+ | Right now, we mostly need this for the [[Nano 6G]] / [[Nano 7G]] since we have no means of execution on these device. [[OSOS]] bugs in any releases are also appreciated, as they might allow to potentially untether [[wInd3x]]. | ||
+ | |||
+ | If you find any bug, report it via IRC. | ||
+ | |||
+ | ==Development== | ||
+ | |||
+ | We need an open-source reimplementation of the [[Nano2G FTL|Samsung Whimory FTL]] used in S5L-based iPods. This will allow us to access the FAT/HFS partition on NAND from any open source software. The FTL is a complex piece of software, and it needs a high-quality, clean-room implementation for reliable read/write access. | ||
+ | |||
==Writing guides== | ==Writing guides== | ||
Another way to help out is writing guides like these on the Wiki. Make it easier for new users to get information. | Another way to help out is writing guides like these on the Wiki. Make it easier for new users to get information. | ||
+ | |||
==Testing== | ==Testing== | ||
− | Testers are always good to have, and its also a good way to help out if you don't want to spend much time on the project or don't know much about development. Developers, however, will get tired of working with you if you are clueless about how everything works, so make sure you have a good understanding about the tools you're testing | + | Testers are always good to have, and its also a good way to help out if you don't want to spend much time on the project or don't know much about development. Developers, however, will get tired of working with you if you are clueless about how everything works, so make sure you have a good understanding about the tools you're testing. |
Latest revision as of 18:33, 9 January 2023
The first question people generally ask about this project is, "How can I help out?". Here are some ways someone can be useful to the project:
Developing
This is perhaps the most valuable way one can help the project. We get many people who want to help with development but they don't have the necessary skills. If you don't, think of it as an opportunity to learn new and worthwhile skills instead of a roadblock. After all, the best way to learn is in the field doing real work. Here are some topics that developers need to know about:
- ARM assembly - this is probably the hardest topic for beginners to grasp. Resources:
- an ARM primer
- ARM Quick Ref
- ARM ARM
- http://simplemachines.it has great resources for learning ARM
- Rust and C - Used whenever we can avoid using ARM assembly.
- Go and Python - Used to implement host-side software like wInd3x and bits of EMcore/Rockbox/...
Vulnerabilities
If you've ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the Notes vulnerability and the Pwnage 2.0 vulnerability.
Right now, we mostly need this for the Nano 6G / Nano 7G since we have no means of execution on these device. OSOS bugs in any releases are also appreciated, as they might allow to potentially untether wInd3x.
If you find any bug, report it via IRC.
Development
We need an open-source reimplementation of the Samsung Whimory FTL used in S5L-based iPods. This will allow us to access the FAT/HFS partition on NAND from any open source software. The FTL is a complex piece of software, and it needs a high-quality, clean-room implementation for reliable read/write access.
Writing guides
Another way to help out is writing guides like these on the Wiki. Make it easier for new users to get information.
Testing
Testers are always good to have, and its also a good way to help out if you don't want to spend much time on the project or don't know much about development. Developers, however, will get tired of working with you if you are clueless about how everything works, so make sure you have a good understanding about the tools you're testing.