Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

RE: [802SEC] +++SEC EMAIL BALLOT+++ Email Ballot: Motion for WG Initial membership interpretation



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
Vice Chair, IEEE 802
Technology Consultant
Communications Technology Research
AT&T Labs - Shannon Laboratory
Room B255, Building 103
180 Park Avenue
P.O. Box 971
Florham Park, NJ 07932-0971
Phone: +1 (973) 236-6925
Fax: +1 (973) 360-5877
EMAIL: mjsherman@att.com

-----Original Message-----
From: Paul Nikolich [mailto:paul.nikolich@att.net]
Sent: Monday, April 14, 2003 7:23 PM
To: IEEE802
Subject: [802SEC] +++SEC EMAIL BALLOT+++ Email Ballot: Motion for WG Initial membership interpretation

 

Dear SEC,

This is a 15 day SEC email ballot on a Motion to Interpret the LMSC P&P rule on Working Group Initial Membership as moved by Mat Sherman and seconded by Geoff Thompson.

The email ballot opens on Monday April 14, 2003 9PM EDT and closes Thursday April 29, 2003 9PM EDT.

Please direct your responses to the SEC reflector with a CC directly to me (p.nikolich@ieee.org).

Regards,

--Paul Nikolich

 

----- 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:

’Membership is retained by participating in at least two of the last four Plenary session meetings.’

Should be interpreted as reading:

’Membership is retained by participating in at least two of the last four Plenary sessions. (An individual who attains membership by participation and attendance at the first meeting of a new Working Group is assumed to have the right to retain that membership by the granting of credit for 'full virtual attendance' at the plenary session that would be immediately previous to the first working group plenary session.)’”

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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
Vice Chair, IEEE 802
Technology Consultant
Communications Technology Research
AT&T Labs - Shannon Laboratory
Room B255, Building 103
180 Park Avenue
P.O. Box 971
Florham Park, NJ 07932-0971
Phone: +1 (973) 236-6925
Fax: +1 (973) 360-5877
EMAIL: mjsherman@att.com

 

#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