diff --git a/CODING.md b/CODING.md new file mode 100644 index 00000000..646070bc --- /dev/null +++ b/CODING.md @@ -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. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..52bab5ba --- /dev/null +++ b/CONTRIBUTING.md @@ -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) \ No newline at end of file diff --git a/DONATING.md b/DONATING.md new file mode 100644 index 00000000..0e753d66 --- /dev/null +++ b/DONATING.md @@ -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 \ No newline at end of file diff --git a/NEEDINFO.md b/NEEDINFO.md new file mode 100644 index 00000000..0d14ffe1 --- /dev/null +++ b/NEEDINFO.md @@ -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 \ No newline at end of file diff --git a/TESTING.md b/TESTING.md new file mode 100644 index 00000000..256b5e87 --- /dev/null +++ b/TESTING.md @@ -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. \ No newline at end of file