* Try to remove useless duplicate/merge commits from PRs as these clutter up history, and may make it hard to read.
* Usually, when syncing your local copy with the master branch, you will want to rebase instead of merge. This is because it will create duplicate commits that don't actually do anything when merged into the master branch.
* When you start to make changes, you will want to create a separate branch, and keep the `master` branch of your fork identical to the main repository, so that you can compare your changes with the main branch and test out a more stable build if you need to.
* You should have a fork of the repository on GitHub and a local copy on your computer. The local copy should have two remotes; `upstream` and `origin`, `upstream` should be set to the main repository and `origin` should be your fork.
* You should have a fork of the repository on GitLab and a local copy on your computer. The local copy should have two remotes; `upstream` and `origin`, `upstream` should be set to the main repository and `origin` should be your fork.
*`qemu-system-x86_64 -version` or your actual hardware specs, if applicable
* The operating system you used to build Redox
*`uname -a` or an alternative format
4. Make sure that your bug doesn't already have an issue on GitHub. If you submit a duplicate, you should accept that you may be ridiculed for it, though you'll still be helped. Feel free to ask in the Redox [chat](./contributing/communication/chat.html) if you're uncertain as to whether your issue is new
5. Create a GitHub issue following the template
4. Make sure that your bug doesn't already have an issue on GitLab. If you submit a duplicate, you should accept that you may be ridiculed for it, though you'll still be helped. Feel free to ask in the Redox [chat](./contributing/communication/chat.html) if you're uncertain as to whether your issue is new
9. Optionally run [rustfmt](https://github.com/rust-lang-nursery/rustfmt) on the files you changed and commit again if it did anything (check with `git diff` first)
9. Optionally run [rustfmt](https://gitlab.redox-os.org/rust-lang-nursery/rustfmt) on the files you changed and commit again if it did anything (check with `git diff` first)
10. Test your changes with `make qemu` or `make virtualbox` (you might have to use `make qemu kvm=no`, formerly `make qemu_no_kvm`)
(see [Best Practices and Guidelines](./contributing/best_practices/overview.html))
11. Pull from upstream (`git fetch upstream; git rebase upstream/master`) (Note: try not to use `git pull`, it is equivalent to doing `git fetch upstream; git merge master upstream/master`, which is not usually preferred for local/fork repositories, although it is fine in some cases.)
GitHub issues are a somewhat formal way to communicate with fellow Redox devs, but a little less quick and convenient than the chat. Issues are a good way to discuss specific topics, but if you want a quick response, using the chat is probably better.
GitLab issues are a somewhat formal way to communicate with fellow Redox devs, but a little less quick and convenient than the chat. Issues are a good way to discuss specific topics, but if you want a quick response, using the chat is probably better.
If you haven't requested to join the chat yet, you should (if at all interested in contributing)!
@@ -5,11 +5,11 @@ Redox can run programs. Some programs are interpreted by a runtime for the progr
* In Redox compiled binaries use the standard [ELF](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format)("Executable and Linkable Format") format.
Programs could directly invoke Redox syscalls, but most call library functions that are higher-level and more comfortable to use. You link your program with the libraries it needs.
* Redox does not support dynamic-link libraries yet ([issue #927](https://github.com/redox-os/redox/issues/927)), so the libraries that a program uses are statically linked into its compiled binary.
* Redox does not support dynamic-link libraries yet ([issue #927](https://gitlab.redox-os.org/redox-os/redox/issues/927)), so the libraries that a program uses are statically linked into its compiled binary.
* Most C and C++ programs call functions in a [C standard library](https://en.wikipedia.org/wiki/C_standard_library)("libc") such as `fopen`
* Redox includes a port of the newlib Standard C library. This is how programs such as git can run on Redox. newlib has some POSIX compatibility.
* Rust programs implicitly or explicitly call functions in the Rust standard library (libstd).
* ?? ~~Redox implements a subset of this in libredox~~
* The Rust libstd now includes an implementation of its system-dependent parts (such as file access and setting environment variables) for Redox, in `src/libstd/sys/redox`. ?? Most of libstd works in Redox, so many command-line Rust programs can be compiled for Redox.
The Redox ["cookbook" project](https://github.com/redox-os/cookbook) includes recipes for compiling C and Rust projects into Redox binaries.
The Redox ["cookbook" project](https://gitlab.redox-os.org/redox-os/cookbook) includes recipes for compiling C and Rust projects into Redox binaries.
If you're on a Linux or macOS computer, you can just run the bootstrapping script, which does the build preparation for you. Change to the folder where you want the source code to live and run the following command:
This script fetches build dependencies using a package manager for your platform and clones the Redox code from GitHub. It checks whether you might already have a dependency and skips the installation in this case. On some systems this is simply done by checking whether the binary exists and doesn't take into account which version of the program you have. This can lead to build errors if you have old versions already installed. In this case, please install the skipped dependencies manually.
This script fetches build dependencies using a package manager for your platform and clones the Redox code from GitLab. It checks whether you might already have a dependency and skips the installation in this case. On some systems this is simply done by checking whether the binary exists and doesn't take into account which version of the program you have. This can lead to build errors if you have old versions already installed. In this case, please install the skipped dependencies manually.
Manual Setup
------------
...
...
@@ -22,7 +22,7 @@ Manual Setup
Change to the folder where you want your copy of Redox to be stored and issue the following command:
Currently, Redox only natively supports booting from a hard disk with no partition table. Therefore, the current ISO image uses a bootloader to load the filesystem into memory and emulates one. This is inefficent and requires a somewhat large amount of memory, which will be fixed once proper support for various things (such as a USB mass storage driver) are implemented.
Despite the awkward way it works, the ISO image is the recomended way to try out Redox on real hardware (in an emulator, a virtual hard drive is better). You can obtain an ISO image either by downloading the [latest release](https://github.com/redox-os/redox/releases), or by building one with `make iso` from the [Redox source tree](https://github.com/redox-os/redox).
Despite the awkward way it works, the ISO image is the recomended way to try out Redox on real hardware (in an emulator, a virtual hard drive is better). You can obtain an ISO image either by downloading the [latest release](https://gitlab.redox-os.org/redox-os/redox/releases), or by building one with `make iso` from the [Redox source tree](https://gitlab.redox-os.org/redox-os/redox).
You can create a bootable CD or USB drive from the ISO as with other bootable disk images.
The ISO image is *not* the prefered way to run Redox in a virtual machine. Currently the ISO image loads the entire hard disk image (including unused space) into memory. In the future, the live disk should be improved so that doesn't happen.
Instead, you want to use the hard disk image, which you can find on the [release pages](https://github.com/redox-os/redox/releases) as a `.bin.gz` file. Download and extract that file.
Instead, you want to use the hard disk image, which you can find on the [release pages](https://gitlab.redox-os.org/redox-os/redox/tags) as a `.bin.gz` file. Download and extract that file.
You can then run it in your prefered emulator; this command will run qemu with various features Redox can use enables:
This book is written in [Markdown], built using [mdBook]. The source files can be found (and forked) on GitHub at [github.com/redox-os/book/].
This book is written in [Markdown], built using [mdBook]. The source files can be found (and forked) on GitLab at [gitlab.redox-os.org/redox-os/book/].