Added extra documentation.

This commit is contained in:
2016-10-07 03:32:39 +01:00
parent b27c25d74e
commit 2e6343f049
5 changed files with 221 additions and 0 deletions

122
CODING.md Normal file
View File

@@ -0,0 +1,122 @@
Coding
======
Contributing with code to DiscImageChef has three very simple rules:
- Use same style as currently used. In a nutshell:
- Tabs instead of spaces
- Brackets in separate lines
- UNIX line endings
- Do not separate parenthesis,
- Indent every code block (for, foreach, while, if, switch, case)
- Do not modify the interfaces. If you need or want to, comment in an issue how and why you want to change it and we'll discuss it.
Same applies for creating new interfaces.
- Everything has a place, a module and an interface. Following is the list of interfaces.
[Claunia.RsrcFork](https://github.com/claunia/Claunia.RsrcFork)
---------------------------------------------------------------
- License: MIT
This library includes code for handling Mac OS resource forks, and decoding them, so any code relating to Mac OS resource forks should be added here.
[Claunia.Encoding](https://github.com/claunia/Claunia.Encoding)
---------------------------------------------------------------
- License: MIT
This library includes code for converting codepages not supported by .NET, like those used by ancient operating systems, to/from UTF-8.
[plist-cil](https://github.com/claunia/plist-cil)
-------------------------------------------------
- License: MIT
This library includes code for handling Apple property lists.
[SharpCompress](https://github.com/adamhathcock/sharpcompress)
--------------------------------------------------------------
- License: MIT
This library includes code for handling compression algorithms and compressed archives.
Any need you have of compression or decompression should be handled with this library, and any new algorithm should be added here.
[DiscImageChef](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef)
-----------------------------------------------------------------------------------
- License: GPL
This module contains the command line interface and core code.
In the future the core code will be separated from the CLI and a GUI will be added.
[DiscImageChef.Checksums](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Checksums)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains the checksum, hashing and error correction algorithms.
[DiscImageChef.Checksums](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.CommonTypes)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains structs and enumerations needed by more than one of the other modules.
[DiscImageChef.Decoders](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Decoders)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains internal disk, drive and protocol structures as well as code to marshal, decode and print them.
[DiscImageChef.Devices](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Devices)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains code to talk with hardware devices in different platforms.
Each platform has lowlevel calls in its own folder, and each device protocol has highlevel calls in its own folder.
Device commands are separated by protocol standard, or vendor name.
[DiscImageChef.DiscImages](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.DiscImages)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module provides reading capabilities for the disk/disc images, one per file.
[DiscImageChef.Filesystems](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Filesystems)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module provides the filesystem support. If only identification is implemented a single file should be used. For full read-only support, a folder should be used.
[DiscImageChef.Filters](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Filters)
-------------------------------------------------------------------------------------------------------
- License: LGPL
A filter is a modification of the data before it can be passed to the disk image module (compression, fork union, etc), and this module provides support for them.
[DiscImageChef.Helpers](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Helpers)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains a collection of helpers for array manipulation, big-endian marshalling, datetime conversion, hexadecimal printing, string manipulation and byte swapping.
[DiscImageChef.Interop](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Interop)
-------------------------------------------------------------------------------------------------------
- License: MIT
This module contains calls to the underlying operating system. Currently only OS detection is needed.
[DiscImageChef.Metadata](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Metadata)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains handling of CICM XML metadata, media types and dimensions.
[DiscImageChef.Partitions](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Partitions)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains code for reading partition schemes.
[DiscImageChef.Settings](https://github.com/claunia/DiscImageChef/tree/master/DiscImageChef.Settings)
-------------------------------------------------------------------------------------------------------
- License: LGPL
This module contains code for handling DiscImageChef settings.

7
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,7 @@
So, if you're reading this file it meants you are interested on helping DiscImageChef somehow.
There are basically four ways to help. Click on each one for details.
- [Testing and bug reporting](TESTING.md)
- [Information and test data](NEEDINFO.md)
- [Coding](CODING.md)
- [Hardware donations](DONATING.md)

59
DONATING.md Normal file
View File

@@ -0,0 +1,59 @@
Hardware donations
==================
This is a list of hardware that I'm searching but is too rare or too expensive for me to get them.
The reason I want this hardware is because having it is the only way to add enhanced support for them (e.g. media detection, ECC support, raw dumping, etc.).
After adding enhanced support all drives will be given to the Canary Islands Computer Museum.
- Matsushita LS-240 and media
- Iomega ZIP750 and media
- Sony MD-DATA and media
- Sony Hi-MD and media
- SCSI floppy drive (e.g. Teac FD235JS806-U)
- Apple twiggy and media
- 8" shugart drive
- DiscFerret
- Caleb UHD144
- Sony HiFD
- Insite floptical
- 5.25" magneto-optical drive and media
- 3.5" magneto-optical media: 128MiB, 540MiB, 630MiB, 1.3GiB
- PD-650 drives (e.g. Panasonic LF-D111) and media
- Plasmon UDO and UDO2 drives and media
- Sony Professional Disc for DATA
- HD-DVD recorder and media
- Panasonic Blu-ray recorder
- Plextor DVD recorder
- Stringy floppy
- Iomega Bernoulli
- Iomega JAZ and JAZ 2
- Iomega REV
- Castlewood Orb 2.2 and 5.7
- Syquest SQ306RD drive and SQ100 media
- Syquest SQ312RD drive and SQ200 media
- Syquest SQ319RD drive and SQ300 media
- Syquest SQ2542 drive and media
- Syquest SQ555 drive and SQ400 media
- Syquest SQ5110 drive and SQ800 media
- Syquest SQ5200C drive and SQ2000 media
- Syquest SQ3105 drive and SQ310 media
- Syquest SQ3270 drive and SQ327 media
- Syquest EZ135 drive and media
- Syquest EZFlyer drive and media
- Syquest SyJet drive and media
- Syquest SparQ drive and media
- Syquest Quest drive and media
- Triton drive and media
- LV-ROM drive and media
- LD-ROM drive and media
- Iomega Ditto drive and tapes
- DLT drive and tapes
- Travan drive and tapes
- SLR drive and tapes
- T9840, T9940, T10000 drive and tapes
- ADR drive and tapes
- AIT drive and tapes
- LTO drive and tapes
- VXA drive and tapes
- Mammoth drive and tapes
- Host-aware and host-controller SAS and SATA zoned hard disks

11
NEEDINFO.md Normal file
View File

@@ -0,0 +1,11 @@
Information and test data
=========================
This is a list of information I need, including test disk images.
- DiscFerret stream images
- KryoFlux stream images
- NetWare 286 license and installation media for adding support to its filesystem
- NetWare 386 license and installation media for adding support to its filesystem
- Information about the structure and compression algorithm for XPACK disk images, or an implementation in C
- Information about the KenCode compression algorithm, or an implementation in C or Pascal

22
TESTING.md Normal file
View File

@@ -0,0 +1,22 @@
How to test and bug report
==========================
First of all take in account that DiscImageChef master from git is unstable, prone to crashing and not working as expected, so don't suppose anything will work at all.
Specially compiling.
Once you've taken that in account normal testing procedures apply.
You must report bugs using GitHub issues facilities.
Sending an email telling the bug is the perfect way to get it forgotten in oblivion.
In the bug report you must indicate the following:
- Your operating system exact version, release and distribution
- The .NET Framework or Mono version you used to run DiscImageChef
- The exact command line used
- Expected results
- If DiscImageChef was used against a disk image you may need to provide us a copy
- If DiscImageChef was used against a device or physical media you may need to retest it several times
When you create the issue I'll check it as soon as I can and provide feedback.
However, solving it, will enter in the current queue of things to do.