260 likes | 440 Views
IBM Open Source Software Competition Mark Wallace, Software Architect, IBM Dublin Software Lab. Agenda. Open Source Eclipse New Developments Summary Questions. Free Software versus Open Source.
E N D
IBM Open Source Software CompetitionMark Wallace, Software Architect, IBM Dublin Software Lab
Agenda • Open Source • Eclipse • New Developments • Summary • Questions
Free Software versus Open Source • Free software is a matter of liberty not price. You should think of “free” as in “free speech”, not as in “free beer”. (http://www.fsf.org/) • Perceived drawbacks to Free Software • Confusion as to it’s definition • Googling for free software returns many different things • http://www.fsf.org/licensing/essays/free-sw.html • Licensing • “Copy left” requirement • Lack of quality • Unknown pedigree • Scalability, serviceability, reliability, localization, … • Largely unfounded • Not attractive to commercial enterprises “Open source is a development methodology; free software is a social movement”
What is Open Source • Open Source Initiative (OSI) maintains a formal definition of Open Source Software (OSS) recognized by the open source community. OSI has a web site at: http://www.opensource.org • Open Source Definition current criteria (paraphrased): • Free Redistribution • Source Code • Derivative Works • Integrity of The Author's Source Code • No Discrimination • No Discrimination Against Fields of Endeavor • Distribution of License • License Must Not Be Specific to a Product • License Must Not Restrict Other Software • License Must Be Technology Neutral The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.
Open Source Development Methodology • Virtual community of programmers, leveraging the Internet for communication, who create / debug / maintain / evolve a source code base • OSS projects often self-organizing: • Someone determines a need and communicates that need to others on the Internet • If the project generates interest, one or more programmers begin writing code • Someone takes a leadership role and begins to map out a project road map • Interested programmers join the project to contribute new code or fine-tune existing code • A network of participants, linked via the Internet, forms • Tiered participation levels emerge
IBM and Open Source • IBM has contributed many projects to the open source community • Eclipse Project: http://www.eclipse.org • Project dedicated to providing a robust, full-featured, commercial-quality, industry platform for the development of highly integrated tools • Apache Derby: http://db.apache.org/derby • Database management system developed by the Apache Software Foundation • Linux Technology Center (LTC): http://www.ibm.com/linux • Work towards Enterprise enablement of the Linux OS through the development and contribution of technology, utilities, tools and code • Other contributions • IBM Pledges 500 U.S. Patents To Open Source In Support Of Innovation And Open Standards
IBM and Open Source • IBM uses open source in its products • Building products on top of open source projects e.g. Rational Application Developer • Apache webserver to support and bundle with its WebSphere suite • IBM promotes open source development • Externally • AlphaWorks: http://alphaworks.ibm.com • DeveloperWorks: http://www-130.ibm.com/developerworks/opensource • Internally • Using open source intranet site to promote software componentization and reuse
Agenda • IBM and Open Source • Eclipse • New Developments • Summary • Questions
Java Tooling • From www.eclipse.org . . . • “Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software.” • Put more simply . . . • Eclipse is an Open Source Java IDE • And so much more . . . . • Multiple languages (Java, C++, COBOL) • Debugger • Unit Testing • Modelling with UML • Visual Editing of Java UI • Java Web Tools (JSP, EJB, XML . . . .) • All through an extensible plugin-based IDE
Eclipse Project Aims • Provide open platform for application development tools • Run on a wide range of operating systems • Windows, Linux, AIX, MacOS X, etc. • GUI and non-GUI components • Language-neutral • Able to handle different content types • Java, HTML, C/C++, JSP, EJB, XML, GIF, etc. • Facilitate seamless tool integration • At UI and lower level • Add new tools easily • Attract community of tool developers • Including independent software vendors (ISVs) • Capitalize on popularity of Java for writing tools
Why develop plugins that extend Eclipse ? • Infrastructure • You get a workbench created for free – just add what you need • No need to create an environment from scratch • Build on Eclipse Modelling Framework (EMF) for model support • Build on Graphical Editing Framework (GEF) for graphics support • Interoperability • Use any of the existing tools in your ‘end-product’ • Java Editor, outliner . . . • Explorer, Text editor, search . . . etc. • Examples • Java (or any language) code analysis/transformation plugins • Any UML related tooling (using EMF) • Any Java graphical projects (using GEF)
Java Perspective • Java-centric view of files in Java projects • Java elements meaningful for Java programmers Javaproject package class field method Javaeditor
List of plausible methods Doc for method Java Editor Lots of useful features such as . . . . • Method completion in Java editor
Top 10 Tips for Eclipse Users • Use Code Assist • Just press the code assist key combination (by default ctrl-space) and the IDE will either fill in where you’ve started typing or display a menu. • Navigate Through Code By ctrl-Clicking • You can move to a field, method, or class by holding down the ctrl key and clicking on the identifier you’re interested in. • Quickly Open Classes and Resources by Name • To open a Java class, press ctrl-shift-T. This will display a dialog box that allows you to type in a class name. • Set the Heap Size • Eclipse is a large, complex, Java-based IDE. It needs lots of memory to perform well. • eclipse -vmargs –Xmx1024M
Top 10 Tips for Eclipse Users • Configure Eclipse To Use a JDK, not a JRE • Go to Window -> Preference -> Java -> Installed JREs • Use a JDK that supports hot code replace (IBM J9 or JDK 1.4.1+) • Use the Eclipse’s Refactoring Support and Code Generation • Eclipse also has extensive support for code generation. • Use Multiple Workspaces Effectively • A workspace is a container of projects that has its own set of preferences and metadata. • eclipse –data c:\myworkspace –showlocation • Use Templates • Open a Java class in an editor, type in “sysout” and press ctrl-space. • Set Type Filters • If you’re seeing classes show up at the top of your search you know you’re not interested in, filter them out for faster searching.
Top 10 Tips for Eclipse Users • Know the Keyboard Shortcuts • ctrl-shift-o: organize imports • ctrl-shift-F4: closes all open editor windows • ctrl-o: outline popup – very useful for quickly jumping to a method in a large class • f4: shows the hierarchy viewer for a class (ctrl-T shows similar data in a popup version) • ctrl-m: toggle maximize of the current editor or view • ctrl-F11: run the last launched configuration
Agenda • IBM and Open Source • Eclipse • New Developments • Summary • Questions
New Projects • AJAX • OpenAjax – http://www.openajax.org • DOJO – http://www.dojotoolkit.org • Apache MyFaces – http://myfaces.apache.org • Eclipse ATF (Ajax Toolkit Framework) • Groovy • CodeHaus – http://groovy.codehaus.org • Grails – http://www.grails.codehaus.org • Project Zero – http://www.projectzero.org
New Projects • Mozilla • XULRunner - UI “embedded browser” used widely – http://developer.mozilla.org/en/docs/XULRunner • Asterisk • Digium - http://www.asterisk.org • Asterisk Now - http://www.asterisknow.org
Agenda • IBM and Open Source • Eclipse • New Developments • Summary • Questions
IBM Open Source Software Competition • The competition is based on fourth year CS projects in each university • An IBM Mentor who is a senior software architect from Dublin Software Lab has been assigned to each university • To be eligible for participation there must be a minimum of five qualifying projects • At the end of the academic year, the mentor will evaluate the projects based on the level of Open Source content and on the overall project results and will select a short list of projects which will in turn be evaluated by a panel at the Software Lab • Individual projects, not joint projects, will be evaluated • The student with the best project will win a high spec IBM Think Pad
Resources • Articles, tutorials, presentations on Eclipse RCP • http://www.eclipse.org/rcp • IBM : Web Services general information • http://www-128.ibm.com/developerworks/webservices • Developerworks • http://www-128.ibm.com/developerworks • AlphaWorks • http://www.alphaworks.ibm.com/ • Redbooks • http://www.redbooks.ibm.com/ • IBM Dublin Center for Advanced Studies • http://www.ibm.com/ibm/cas/sites/dublin/ • Academic Initiative: • http://www.developer.ibm.com/university/scholars/
Agenda • IBM and Open Source • Eclipse • New Developments • Summary • Questions