Thread Links | Date Links | ||||
---|---|---|---|---|---|
Thread Prev | Thread Next | Thread Index | Date Prev | Date Next | Date Index |
For anyone who is interested I updated my pseudo-code (attached) to reflect the current motion. However, it is purely for reference, and is in no way a part of the motion.
Mat
Matthew Sherman -----Original Message-----
Dear SEC,
----- Original Message ----- Sent: Monday, April 14, 2003 5:57 PM Subject: Motion for WG Initial membership interpretation
Paul,
I wish to formally make a motion concerning the interpretation of the current initial membership rules. The motion I would like to make is as follows:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
"Motion that until the P&P
revision titled "WG membership" being balloted starting March 27th,
2003 is completed (estimated to occur at the end of the July 2003 IEEE 802
Plenary meeting) the line in the LMSC P&P section 5.1.3.2 titled "Retention"
reading:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Geoff Thompson helped develop this motion, and has agreed to second it. Note that based on recent discussions it is somewhat different than the motion I said I would first make on the reflector. This motion maximally protects the voting rights of initial members by ensuring retention of their rights through the first 4 plenary sessions. We believe this is the motion that has the greatest chance of success. If this fails, we may want make a second motion which we would want to complete before the end of the upcoming wireless interim session. Since the motion is reasonably concise we would prefer a 15 day ballot period for this interpretation to allow time for a second round if needed.
Regards,
Mat Matthew Sherman
|
#define SESSION_NOT_ATTENDED 0 // Constant value representing a session that was not attended #define SESSION_ATTENDED 1 // Constant value representing a session that was attended #define ESTABLISHMENT_THRESHOLD 3 // Number of plenary sessions attended in basis to become a member // Note that membership is obtained at the BEGINNING of the session // This is true even if the entire session is not attended // All other accounting is at the end of the session // From a sheer coding perspective, I'd prefer this be accounted at the end too #define RETENTION_THRESHOLD 2 // Number of plenary sessions attended in basis to retain membership #define SESSION_BASIS_SIZE 4 // Number of plenary sessions in basis used to determine membership // The basis is a sliding window across all plenary session ending with // the most current session. // Interim sessions may be substituted for plenaries but no accounting // of interim sessions is attempted by this code #define INITIAL_MEETING_TRUE TRUE // This value is used to indicate that the session of interest included // the initial meeting of the WG and that the attendee in question // was present at the initial meeting #define INITIAL_MEETING_FALSE FALSE // The complment of INITIAL_MEETING_TRUE typedef struct membership_record_type { int attendee_id // Unique integer identifier for each attendee attendee_info_type* attendee_info // Attendee info as provided int current_session_index; // index to session attendance array int session_attendance[SESSION_BASIS_SIZE]; // session attendance array boolean membership_status; // Current membership status } membership_record_type; // Global Variables int counter; // global temporary variable for counter int sum; // global temporary variable for accumulator membership_record_type* current_record; // global temporary variable for current member record boolean initial_meeting; // global temporary variable for initial meeting indicator // the chair may also use this indicator to "force" a new member attendee_info_type* attendee_info // global temporary variable for Attendee info such as name, company, etc. int session_attendance; // global temporary variable for current session attendance status void new_attendee_init(membership_record_type* new_record, int new_attendee_id, attendee_info_type* attendee_info) { new_record->attendee_id = new_attendee_id; // Init attendee identifier new_record->attendee_info = attendee_info // Init attendee info into record new_record->current session_index = 0; // Init to point to first record for (counter = 0; counter < SESSION_BASIS_SIZE; counter++) { // Init all sessions in basis to not attended state new_record->session_attendance[counter] = SESSION_NOT_ATTENDED; } wg_member = FALSE; // Init membership status to FALSE (not a member) } void update_attendee_attendance (membership_record_type* current_record, integer latest_session_attendance, boolean initial_meeting) { // Update basis for latest session current_record->session_attendance[current_session_index]=latest_session_attendance; current_record->current_session_index++; // increment current session index for next session if (current_record->current_session_index=SESSION_BASIS_SIZE) {current_record->current_session_index=0;} // Check for wrap around and wrap if needed sum=0; // Init attended session count for (counter = 0; counter < SESSION_BASIS_SIZE; counter++) { // Find the total sessions attended in basis sum=sum+current_record->session_attendance[counter]; } // If establishment threshold met, set member status to TRUE if (sum=>ESTABLISHMENT_THRESHOLD) {current_record->member=TRUE;} // If retention threshold was not met, set member status to FALSE if (sum<RETENTION_THRESHOLD) {current_record->member=FALSE;} // initial_meeting TRUE means the initial WG meeting was this session and the current attendee_id attended if (initial_meeting=INITIAL_MEETING_TRUE) { current_record->member=TRUE; new_record->session_attendance[SESSION_BASIS_SIZE-1] = SESSION_ATTENDED; } } // Main Routine { while (PROGRAM_RUNNING) { if (get_session_record()=VALID_SESSION_RECORD_AVAILABLE) { get_next_id(current_id,session_attendance, initial_meeting, attendee_info); if (current_id=NOT_ASSIGNED) { current_id=get_new_unassigned_id(); new_attendee_init(current_record, current_id, attendee_info); } else { get_current_record(current_id); } update_attendee_attendance (current_record, current_id, initial_meeting) save_record(current_record); } } } //End Main Routine