ari roponen researching the evolution of gnu emacs text editor
Post on 31-Dec-2015
Embed Size (px)
Ari RoponenResearching the evolution of GNU Emacs text editor
ContentsAbout MyselfMaintainabilitySoftware EvolutionFLOSS (Free/Libre/Open Source Software)GNU EmacsAim of My ResearchCurrent Status
About MyselfAri Roponen
B.Eng. 2003, Jyvskyl PolytechnicBachelors thesis: Design and Implementation of a Route-Information SystemM.Sc. 2007, University of JyvskylMasters thesis: Open Source Version Control SystemsGNU Emacs user since 2001
MaintainabilityMaintenance means modifying software after it is publishedFix bugsImprove performanceAdapt to environment changesMaintainability = how well software can be maintainedUnderstandabilityModularity
Software EvolutionSoftware Evolution Laws (M. Lehman)Continuing ChangeIncreasing ComplexitySelf RegulationConservation of Organizational StabilityConservation of FamiliarityContinuous GrowthDeclining QualityFeedback SystemConclusion: Continuous maintenance is needed to keep software functional in the changing environment
FLOSS (Free/Libre/Open Source Software)Free SoftwareRichard StallmanFree as in freedomGNU, GPL, GCC, Emacs, ...Open Source SoftwareEric S. Raymond, Linus TorvaldsOSS is a marketing name for FSLinux-kernel, Firefox
Is it important to separate FS from OSS?Free/Libre/Open Source Software
GNU EmacsEmacs is the extensible, customizable, self-documenting real-time display editor.
Richard Stallman wrote the first EMACS in 1976GNU Emacs in 1984
Wow! How do you do that?First, write a Tetris-clone, then a shell, then a web browser, then ...
Start the project, let others use it, integrate their changes, repeat at step 2, ...
There must be some kind of a development process...... a good one
Aim of My Research (1/4)Find out how FLOSS projects can get so old and still be up-to-date
Does FLOSS development differ from other software development?GNU Emacs is 25 years oldLinux-kernel is 19 years old
Aim of My Research (2/4)Detect common properties of FLOSS projects development models
Goal definitionCode writingDocumentationTestingMaintenanceRelease cycle
Aim of My Research (3/4)Maybe invent a model for characterising used development processes
Software changes by patchingTesting by developers/users/pretestersReleasing early/late/neverAttracting new users/developers
Aim of My Research (4/4)Find new software evolution laws
Linux-kernel seems to grow faster than expected why?Do Lehmans laws apply to FLOSS projects?
Current Status (1/4)How to keep software lifetime longPersonal characteristicsBe interested in what you doMake your work useful for othersBe friendly to new usersDont neglect old usersProcess characteristicsUse suitable (public) development modelAim for good, not bestDesign with extensibility in mind
Current Status (2/4)Common properties of old FLOSS projectsChanges reviewed by communityExisting coding standardsMany old users (including original authors)Good documentationNo specific goals
Current Status (3/4)A model for FLOSS developmentSoftware changes by patchingWhat is a patchHow changes get acceptedProperties of a good patch
Current Status (4/4)New evolution lawsNone (yet)Existing laws seem to apply quite well
AnswersGNU Emacs is available at http://www.gnu.org/software/emacs/emacs.htmlYesNo42Well, let me put it this way...