Roadmap

Foster Post-Release Milestone #1

about 14 months late (12/17/2010)

First milestone after the Foster release.

86%

13 closed (72%)   5 open (28%)

Foster Milestone 1

Milestone #1 is the first "Testing" release of Pedigree since the original Foster release in November 2009.

What is a Milestone Release?

We have chosen to release this milestone version of Pedigree as a specific set of features has been implemented, namely:
  • A level of USB support (UHCI and EHCI, OHCI to an extent)
  • A new graphics framework

The reason we have chosen to release this milestone is to test the features that have been added. Since the original Foster release almost 1,000 commits have been made in the Pedigree repository. Whilst many features have been tested extensively a lot of features require hardware testing - and we simply do not have all the hardware to test on. We are releasing Milestone 1 to allow the general public and development community to test on their own hardware. This helps us identify bugs with our code that only appear on specific hardware configurations.

Download & Requirements

System Requirements
  • A CPU equivalent to or better than a Pentium 4
  • At least 64 MB of RAM - you will find Pedigree runs out of memory fairly quickly (and halts the system) as the caches fill up in only 64 MB of RAM
  • An IDE CD drive (or SATA with IDE emulation)

Downloading Foster Milestone 1

Foster Milestone 1 is available for download as a CD image (ISO file). This is a live CD with the ability to work on a virtual hard disk and try Pedigree without being able to accidentally corrupt important data on physical hard disk drives.

You can obtain the disk image in 3 formats:

For verification of your download, obtain either the md5sums file or the sha1sums file.

Don't forget to check the Quick Reference page to find out how to use some of Pedigree's features.

Reporting Problems

Should you run into problems, please sign up for an account on http://www.pedigree-project.org/ and create a new issue in the issue tracker. If that does not work, feel free to contact the Pedigree team directly in #pedigree on irc.freenode.net.

This is an ALPHA Release

An alpha release is expected to be buggy. We haven't polished this release at all. It's not tuned, it's not nice.

This is for the community to test specific new features, not to provide a working or usable operating system. In the process of testing you will have an opportunity to use the operating system but we are in no way stating that this is a production quality piece of software.

The release is more or less the equivalent of you checking out our live development code and building it from scratch, except we're packaging it up for you.

As always, if you find a bug, you can report it on the issue tracker at http://www.pedigree-project.org, or by talking to someone about it in #pedigree on irc.freenode.net.

Notable Changes since Foster

These are generally in the order of implementation, but not every item in this list is ordered.

  • Rudimentary out-of-memory handling, which is still highly unstable. We recommend you run Pedigree on a system with at least 128 MB of RAM.
  • Solved a variety of keyboard and mouse input issues. For example, input stream corruption due to programs terminating incorrectly, and the performance of keyboard input has been improved.
  • PCI ATA controller support. This has been put on the backburner and is disabled completely in current builds, but existed for a short period of time..
  • Added a log output area to the splash screen so that live status can be shown to the user.
  • shebang handling is improved
  • Applications have been written to load, unload, and list kernel modules. At this stage no modules exist without being loaded; this is groundwork for the future when loading drivers and system services.
  • Bounds checking in Partition reads and writes.
  • VFS uses a Radix tree for improved alias lookup performance.
  • Added a pedigree-c subsystem for Pedigree-specific C system calls.
  • Significant changes to the POSIX subsystem to implement 20-30 new functions, as well as handle more errors and provide error information to the caller.
  • Significant rewrite to libpthread that enables mutexes and spinlocks to work completely in userspace, improving performance by orders of magnitude.
  • ATA and ATAPI detection fixes to avoid hangs or misdetection.
  • IP fragmentation somewhat implemented.
  • PS/2 mouse support, HID mouse support
  • DHCP asks for a gateway address and DNS servers, as well as a subnet mask for the IP. Fixes networking when working with a Windows DHCP server.
  • ICMP uses IPv4 header information to determine ICMP payload size.
  • The network stack is now separate from NIC drivers: incoming packets are added to the networking queue, which is read by a separate thread.
  • ARP requests now use a request queue.
  • Groundwork for packet filtering APIs.
  • IpAddress supports IPv6 now, including toString with zero-compression.
  • Added RTTI to the kernel and modules.
  • Added a logger callback to transmit the log via UDP. Not enabled in any current builds.
  • Memory pools implemented, which are blocks of memory with smaller areas allocated and deallocated. Once the pool is completely allocated, future allocations will block. A step towards reducing worst-case memory usage.
  • realloc no longer smashes structures used by the SLAM allocator.
  • FileDisk now has locking.
  • Created a class 'ZombieQueue' to handle zombie processes and threads.
  • Log initialisation is now done in two parts.
  • The BeagleBoard is now a supported target, but is still very rough and will not be released.
  • Allowed modules to be linked statically to the kernel to remove the requirement of an initrd.
  • Added a 'DEBUG' log severity level, for messages which can be useful for debugging, but too verbose for average users.
  • Pedigree runs without the debugger if it was built without. Previously it would crash.
  • UHCI and EHCI implemented, bar isochronous endpoints.
  • OHCI somewhat implemented but untested.
  • IRQ mitigation to avoid IRQ floods in the system has been implemented.
  • SLAM locking fixed to avoid races.
  • NE2k driver's IRQ handling has been improved.
  • gethostbyname tries all available DNS servers on all available NICs before giving up.
  • Keymaps and HID input are both managed with specific classes in the kernel now.
  • HID keyboard and mouse support.
  • USB Mass Storage support.
  • USB Hub support.
  • Heap expansion no longer corrupts memory.
  • DM9601 chip driver - USB Ethernet dongle.
  • Don't try and respond to ICMP requests if we don't have an IP address yet.
  • vmware accelerated graphics driver, improves graphics performance in VMware.
  • Completely new graphics framework, which has been exposed to applications in a C++ API. Used by a new SDL port.
  • Kernel module build reworked, thus removing 41 SConscripts from the build system.
  • The TUI now has a "lock file" so it cannot be run more than once.
  • Various build system improvements.
  • "Easy Build" script to make it easier to build Pedigree from a fresh checkout.
  • PS/2 keyboard LED support.
  • Status Server module which offers live runtime information about the Pedigree instance running on TCP port 1234 (HTTP protocol).