Hello all. I haven't made a blog post in quite a while since I've been very busy recently, but luckily things are back to normal and hopefully progress can resume at its original pace.

I've drafted a roadmap of all the drivers that I think a functional operating system needs, and marked which ones are already usable.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Buses
	PCI - Usable
	USB - Usable
Human interface devices
	PS2 - Usable
	USB mouse/keyboard - Usable
Storage
	ATA - Usable
	ATAPI (CD/DVD drives) - Read only; does not yet support ejecting discs
	SATA - Usable
	NVMe - Usable
	USB mass storage devices - Usable
Filesystems
	EsFS - Essence's custom filesystem
	ISO9660 - Usable
	FAT12 - Read only
	FAT32 - Read only
	NTFS - Read only
	ext2 - Read only 
Sound
	Intel HD Audio - Output to speakers only
Graphics (these are too complex to write from scratch, will need to be ported)
	VGA w/ software rendering - Usable
	BIOS mode setting w/ software rendering - Usable
	UEFI mode setting w/ software rendering - Usable
	Nvidia - Started port of kernel platform layer
	Intel
	AMD
Networking
	Network cards - i8254x working
	Protocol stack - Started basic implementation
	Wifi
	Bluetooth
CPU architectures
	AMD64 - The currently only available platform; SMP working
	x86 - Maybe??
	ARM processors
Misc
	ACPI - Finished port of ACPICA but no power management features
	Raspberry Pi, Arduino, etc.


Currently I think the highest priority are SATA, ATAPI, USB mouse/keyboard and USB mass storage devices. These shouldn't be too difficult to implement.

We also need to work out a solution for graphics and network cards. I know relatively little about these topics, but I presume that these drivers will have to be ported from Linux. If you have experience working with the Linux graphics or networking stacks, your help will be much appreciated!

It'd also be nice to have audio drivers, a few more filesystems, and support for other platforms like ARM, but these are low priority.

I'm now working on a rewrite of all the userland code (I have gained a lot of experience since writing the original code), so I don't have much time to work on drivers. This means I really need contributions from other people to help develop Essence. All the drivers I've separated from the main kernel unity build are in this folder https://bitbucket.org/nakst/essence/src/master/drivers/. These should serve a good introduction into working with the kernel and writing drivers for it.

I highly recommend you join the #essence discord channel on the handmade network guild if you are interested in contributing to the project.

Thank you!!