Extreme Programming is an approach to projects with an eye to managing software by end users, and making sure programs fit their needs exactly.
XP focuses on people and communication, which are the true core of any programming project. Everyone needs to understand their role, and communicate with others. And the communication has to be truthful - no sugar coating or padding are allowed. This allows customers (the users) to have confidence in the information they are getting. If something is broken or behind schedule -- it gets fixed, instead of getting hidden.
XP is the leading technology born out of the agile programming approach.
In XP, the customer, in conjunction with developers, drive the project. The first key to this is the user stories that the customer writes to describe what they want the system to do. The developers then estimate how many points (points are essentially "perfect programming days") a story will take; if the story is too many points, it should be subdivided into smaller stories. The customer then picks the most important stories with a cumulative point value smaller then the iteration point value.
For example, if we have 10 stories and each story is 5 points, we have 50 points worth of stories. 1 point represents a "perfect programming day", the day we would have if we were not interrupted by meetings and other things. Each of our iterations are 10 days, and we do 5 points of work on average over those 10 days per pair programming team. Thus, if we have 3 teams, We can handle 15 points worth of stories in this iteration, so the customer picks the 3 most important stories.
Developing Scripts and Case Studies for cisLunarFreighter/Radio Communications/STC/implementation is an attempt to use XP in a Wikiversity Learning project.