Here are the revised meeting notes that I took during our meeting on Saturday. It was a very long meeting (about six hours) but we discussed many important issues. The full log for the meeting is available in the Sharpbot logs at:
http://sharpos.org/logs/?channel=sharpos&date=2008.4.12 I've got both a basic outline and a narrative summary. * New meeting scheme - Two meeting sessions both on Saturday is best to avoid conflicts - 1800 GMT and 2200 GMT * Logging/Sharpbot - Create Redmine project for issue tracking - Bot improvements * Michael Ruck (grover) volunteers * distributed features - Use freenode nick system as a locking mechanism - We will have nodes which fill the gaps when the bot is not available * Me, Bruce (illuminus), Michael (grover), and Stanislow (viraptor) volunteer to host such nodes * profiling * improve sync security so more nodes are possible - Other cool features * Code search (possible from ROS bot) * AI-based personality code * Coding style - Tab size? * Up to now we've used size 8 tabs (as Mono's guidelines suggest). * Size 4 tabs is more desirable for our code base * using space alignment while breaking long lines is accepable - Max character limit * 120 is reasonable for average font sizes on 1024x768. - Member naming * public CamelCase, protected CamelCase, private [_]camelCase * Possibly vote for _ vs lowerCamelCase for private members * Use 'this.' if you do not prefix with '_' * Moderately descriptive variable names, don't overdo it * Short 'i' and 'a' names for loop-related variables only, and better names when the loop is very large - Space before parentheses / brackets? * Vote is necessary - Opening bracket on next line for long class interface definitions - Vote on next line bracket for all class definitions * Lint/gendarme integration - Need to clean up current code base first (xfury will handle) - Codebase already has fxcop rules and files. - Integration of gendarme into nant build files via 'nant gendarme' or similar - fxcop via CI (continuous integration) (CC.net) * Volunteers/discussion? (for some much needed projects) - Documentation and Design: in-code documentation, code review, howtos, technical documents, redesigns, etc * Adam (bigfootag) volunteers to lead documentation efforts * z98 is currently documenting exception handling * Documentation efforts should be coordinated in the wiki * We want to create an overview document of the architecture which explains as much of the inherent SharpOS knowledge as possible to make it easier for new developers to understand the rationale - Testcases: more IL, AOT and kernel testcases, unification of the testcase system, * Darxkies volunteers to unify the testcases * Still missing support for shutdown after testcases? - AOT refactoring for JIT (grover) * True compilation pipe * Optimizations * Dump Cecil for a custom reader? - Jon from Ensemble wants to share his IL reader - Grover says he's got a custom IL reader which will work as well * Sharing infrastructure with Ensemble/Cosmos - Licensing * Still controversial - Shared code / interfaces * Common SF project to organize such initiatives? - Community * A common website for news, discussions, and the like * Common mailing list * Name ideas: - MOSIS: Managed Operating System Interface Standard - MOSA: Managed operating system alliance - Knexus: Community for * Brief on current projects from developers (as time and developer availability permits) - Memory management / virtual memory (Z98) * The way is clear if we use one memory space - <1G reserved for kernel + cached/block allocations - >1G for GC pages * More than one memory space is unclear - Use shared spaces to facilitate IPC and IO - Use separate spaces with traditional IPC models using remoting * And it is not clear which of the models is most beneficial - Driver System - VFS/Filesystem - AOT/Generics/JIT - GC * Mini meetings - Larger discussions offloaded to smaller meetings - Planned for the week at the weekly meeting - A set of "slots" (maybe three) per week that each discussion fits into - END - Not reached: * Discussion: Driver Interfaces, ideas, models, methods to ensure code safety efficiently, etc. ---- MEETING SCHEDULE We decided to pick a two-session meeting model for next Saturday to allow better flexibility for our world of developers. We decided that having both sessions on Saturday was the best way to avoid schedule conflicts. The meeting sessions are close enough so that it is might be possible to attend both. They are four hours apart which sets a natural time limit on the meeting time (the last meeting was about 6 hours long, although there were many topics built up). The first session will be at 1800 GMT like the last one, and we will have the second session at 2200 GMT. As it looks so far, I will chair the first one and Michael Ruck has volunteered to handle the second one. The agenda will be chosen over the course of the week. I will start a thread to poll for topics. LOGGING / SHARPBOT We decided to set up a Redmine project for the bot to track bugs and set goals (more or less integrate it as a part of the project to promote awareness and contribution to it). Michael Ruck has volunteered to coordinate improvement of the bot, including adding some distributed features which will help us build a network of sharpbot hosts to improve log coverage for the channel. Such features will probably use the IRC/freenode nick system as a locking mechanism to ensure that only one bot is in control of the logs. We will also need to harden the security of the log synchronization code / server code. It may be possible to reduce the amount of trust necessary to run a sharpbot node. Me (xfury), Bruce (illuminus), Michael (grover), and Stanislow (viraptor) offered to host nodes in the sharpbot network. CODING STYLE GUIDELINES We voted on a number of changes to our coding style guidelines and found a few more issues which will need to be discussed and voted on in the mailing list to make any kind of informed decision. We agreed that size 8 tab characters were rather large for the amount of nesting that can become necessary for this work. Many popular C# IDEs use size 4 tabs by default as well. We also agreed that it is acceptable to use space alignment for breaking long if() statements, function calls, function definitions, etc. We also examined the case for establishing a new max character limit, replacing the Mono guidelines value of 80 characters per line. We established 120 as a sensible value based on average font sizes on a 1024x768 screen. As for member naming, we established a common naming model of CLS for public/protected fields and all properties, and lowerCamelCase for private fields with an optional underscore ("_") as a prefix. Local variables should be lowerCamelCase and should not include underscores. If the private field is NOT prefixed with an underscore, always use "this." before it to denote that the identifier is a field. Aim for moderately descriptive variable names, but not TOO descriptive, and do not use single-letter names like 'a' or 'i' except for as loop variables, and only in loops which do not span more than a span on your page (as a rule of thumb). It is also acceptable to move the opening bracket for a class to the next line if the base class/interface list must be broken into two or more lines. Topics of discussion which remain in the realm of coding style guidelines: whether to keep the spaces before parantheses and brackets and whether to require the opening curly bracket of a class be put on the next line. FXCOP/GENDARME INTEGRATION This topic was added as an offshoot of the coding style guidelines discussion. To improve our code quality we endeavoured to discuss integration of lint tools like gendarme into the repository. It was noted that we already have fxcop build files and an 'fxcop' build rule for nant. Before we can improve lint tool integration in our code base, we will need to clean up the warnings which are emitted by csc/mcs during the SharpOS build cycle. I (xfury) volunteered to work towards cleaning up these warnings and improving the gendarme integration once that is finished. There was also a strong interest in integrating fxcop runs in with the CruiseControl.net service which Phil has been providing for SharpOS. MUCH-NEEDED PROJECTS Documentation & Design Adam Stevenson (bigfootag) volunteered to head our documentation efforts. He is currently working on a design for a new garbage collector. Zach Gorden (z98) has been working on documentation of exception handling. We decided to coordinate the effort via the wiki as the most logical choice (as opposed to revision control with SVN). As one of the primary goals of the effort, we'd like to create an technical overview document describing SharpOS. With this effort we hope to decrease the learning curve that exists for new developers interested in contributing to SharpOS. Redmine Upgrade It is rumored that a new Redmine release is on the way. Mircea Cristian Racasan (darxkies) plans to upgrade us to the new version when it becomes available. Testcase Unification Chriss (darxkies) volunteered to work on the testcase unification which has eluded us for quite some time now. We still need to finish shutdown support so the 'nant test' run can shutdown after running the tests without user interaction. Delegates We discussed some of the technical obstacles toward finishing delegate support (which are few) but no one volunteered to complete delegate support (at least immediately: Sander van Rossen (logicalerror) said he would work on it when he gets time if it isn't already done by then). JIT Refactoring Michael Ruck introduced some thoughts on the JIT refactoring process which is now becoming the focus of the AOT development. He wants to generalize the compilation pipe so that individual stages can be included or removed for different scenarios. We touched upon the topic of dumping Mono.Cecil for a quicker reader in the JIT use case. I (xfury) mentioned that Jonathon Dickinson (from the Ensemble project) has offered to share his custom IL reader implementation. Michael also offered one which he has implemented. SHARED INFRASTRUCTURE / COMMUNITY with OTHER MANAGED OS PROJECTS We wanted to work on finding suitable ways to contribute to the Managed OS community which is forming around the SharpOS, Ensemble, and Cosmos projects. There is no neutral forum where we can exchange ideas and news, or discuss interface standards/shared code initiatives. We worked this out to a two-entity idea: a community website, and a shared code project with a mailing list. We also discussed more possible licensing deviations, albeit with little headway into finding a compromise for sharing code with the other projects. Michael Ruck and I volunteered to head development of this endeavor, and we are now working on starting talks with the other projects towards forging a neutral community ground where we can discuss the website and code project ideas. Some of the name ideas we ran across: "MOSIS: Managed Operating System Interface Standard", "MOSA: Managed Operating System Alliance", "Knexus". Just ideas. BRIEF ON CURRENT PROJECTS Memory Management Design Zach discussed some current thoughts about the memory management design. The issue quickly became which memory model we would seek: a single memory space for all code, shared spaces where there is more than one process in a memory space, or individual spaces using overhead-less kernel calls and kernel-channel/remoting based IPC. A common perception of the single memory space scenario is that the kernel core would reserve the first gigabyte of virtual memory for itself and it's memory allocations. The kernel core GC and process-specific data would be found above the 1G mark. It is not yet clear which model we should follow. VFS/Filesystem Michael (grover) and Phil Garcia (tgiphil) discussed the VFS/Filesystem/Block developments. Individually, the filesystem and VFS code is coming along well. Now they are being connected, but progress in this area is currently somewhat limited due to lack of completed string support in the AOT, and the lack of System.Stream support in the current kernel. AOT/Generics/JIT Chriss (darxkies) talked about the completion of generics and expressed that the AOT development is now headed toward the JIT refactoring part of development. Only one generics testcase is failing due to a virtual methods issue. GC Adam (bigfootag) briefed us on the progress of his GC work. We discussed stack tracing, whether to use registers as roots, possible resources for designing thread-safe non-halting collection. AOT backend plugin for GPUs Michael (grover) briefed us on a backend for the AOT that he is interested in building. It would target graphics processing units (GPUs). The AOT would need to be modified to take into account the notion of "profiles", each of which would have an allowed subset of CIL. In this way, code streams can be verified to be of a profile which can run on a GPU, etc. This design could be expanded for other subprocessors in the future. MINI-MEETINGS It was suggested to allow the more detailed, long discussions to be offloaded from the main meetings to separate public discussions, where the time could be unmonitored and an agenda would not be necessary. We decided to pick the discussions which would occur during a given week at the weekly meeting. We would decide on a number of slots on different days of the week (Tuesday, Wednesday, Thursday?). The details of the 'discussion' slots will be discussed at the next meeting. -- fury long name: William Lahti handle :: fury freenode :: xfury blog :: http://xfurious.blogspot.com/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ SharpOS-Developers mailing list SharpOS-Developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sharpos-developers