Add new research projects page for pie in the sky projects
[ikiwiki.git] / docs / developer / researchprojectspage / index.mdwn
1 # DragonFly Projects 
2
3 This is an off-shoot of the main [[ProjectsPage|docs/developer/ProjectsPage]] intended to house more bizarre projects and concepts. It should be noted that if you decide to implement one of these projects, even if you do an amazing job, it is entirely likely that it will never be committed to the main source repository. If you intend your work to be committed, please discuss your plans with the DragonFly community at large on the public mailing lists before you make a significant investment in your work.
4
5 Please feel free to add projects to this page, or annotate existing project ideas with your own thoughts.
6
7 [[!toc levels=3 ]]
8
9 ## Kernel projects 
10
11 ### Code generation hooks in the build system
12 * Well defined kernel build mechanisms for code generation
13 * This will require discussion
14
15 ### On-disk / Over-the-wire structure codegen
16 * Somewhat analogous to google protocol buffers / etc.
17 * Take a normalized definition of data, metadata, an operation and generate a structure, serialization routines and accessor routines for it/them
18 * Must be able to generate structs binary compatible with existing on-disk formats (including warts)
19 * Should magically create formats that are 32/64bit agnostic OR fixup serializers/unserializers
20 * Accessor routines and thread safety? Do we make you hang these objects somewhere that you store your synchronization objects or allow you to include them?
21 * Versioning?
22 * Potential uses: ... HAMMER, UFS, HAMMER mirror streams, message passing, ...
23 * QUESTIONS: Would people actually use them?
24
25 ### Asynchronous system call framework
26 * Probably best implemented as a message passing interface to kernel pass messages in, threads pick them up and execute, return through kevent notifications
27 * Would require a well-considered proposal
28
29 ### Kernel VIRTUAL MACHINE
30 * opcode vm in kernel for various purposes? What could be accomplished with this?