<<

Open Komodo: An Open Source IDE For Open Languages Own Your IDE Promislow ActiveState Inc.

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 1 History

for Windows • Active Python, Komodo Anti -Spam Digression • • • Refocus on Developer Tools

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 2 Contradiction?Origins

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 3 Agenda

• Ruby and Rails Support • OpenKomodo • Zooming In

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 4 Komodo Philosophy

Balance of Helpfulness • • • Projects Are Optional

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 5 Ruby Support

Ruby -Aware Auto-Indentation • • • Soft Characters • • Code Completion – Their Stuff – Your Stuff •

OpenKomodo:• AbbreviationsOwn Your IDE (Snippets)Oslo, Norway April 4, 2008 6 • Complete Known Names

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 7 Walk Objects

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 8 Call Tips

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 9 Your Own Code

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 10 Troubleshoot

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 11 Rails Support: Goals

Avoid the Command-Line for Routine • activities – Generate & Migrate – Test – Debug – Run – SCC

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 12 Useful Tools

Firefox JavaScript • • HTTP Inspector • DOM Inspector • Unit Test Integration • Rx Toolkit

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 13 Visualizing Redirects: Before

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 14 Visualizing Redirects: After

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 15 Rails Support: Deploying

• Specify Servers • Edit Remote Files • Remote Folders in Projects • One Size Doesn’t Fit All

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 16 The Komodo Family

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 17 The Komodo Family

• Komodo IDE • • OpenKomodo : MPL GPL LGPL

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 18 Why Open It

• Unique in its underlying technology • Built with the same languages we support • Build a foundation, let many build on top • : Open, Cross-Platform

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 19 Use It

• http://www.openkomodo.com

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 20 Extend It

• Macros • Extensions • Hack the Source

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 21 Build Something

• Komodo IDE • Snapdragon • Mozpad • ?

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 22 How did we get here?

• 1994: Netscape 1.0 Beta • 1995: IE 2.0 Released • Jan 1998: Netscape Open-Sources Client • What does this have to do with developer tools?

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 23 Mozilla: Timing is Everything

• Seamonkey and MAS too “90s” • Firefox and Thunderbird Follow Unix Philosophy

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 24 Built on Standards

• XUL isn’t too foreign • JavaScript is everyone’s second language

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 25 Other Apps

• Flock • Sunbird • Camino • Songbird • Joost • Hackety-Hack

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 26 Even Microsoft Buys In

• Windows Application Framework – Based on XAML – XAML based on XUL

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 27 ' Tools Matter

• OpenKomodo is the right technology at the right time

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 28 Community Matters

• Every platform needs one • Case Study: • "Support statement for Visual Basic 6.0 on … Vista" • Visual Studio .Net (7.0) Q & A

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 29 Openness Matters

• Hard to grow a community without empowering people • Extension contest showed people could use it without large amounts of documentation

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 30 And Now For Something More Technical…

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 31 What Exactly Is Mozilla

• XUL • JS • CSS

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 32 Mozilla Components

• NSPR • Gecko • Necko • XPCOM • XPConnect • XBL

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 33 Komodo Under the Hood

• Chrome - front-end -- src/chrome • PyXPCOM back-end -- src/ • Over 20 FOSS components in contrib/ • • XML and HTML resources • IDL files - src/* and sdk/ • Over 260 files

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 34 Interfaces & Implementations

Search http://grok.openkomodo.com/source/xref/ http://lxr.mozilla.org/mozilla1.8/

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 35 Write Macros

Samples in Toolbox Subset of API in Help Experiment with JavaScript Shell • http://community.activestate.com/ komodo-extension/ komodo-developer-extension

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 36 OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 37 OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 38 Python or JavaScript?

• JS code handles controller and view • Python better suited for special cases

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 39 Writing Extensions

• Hello-world • Komodo "Komodo Extension Template" • Steeper Leaning Curve that Macros – Graphical UI Adds an Extra Dimension

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 40 Undo Slider

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 41 Getting Started

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 42 OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 43 UI expressed in XML

• overlay id=%extension_name%Overlay ... – commandset id=allcommands • command id=Tasks:HelloWorld oncommand="alert('Hello world')" – menupopup id=popup_tools • Menuitem id=menu_%extension_name% label=%extension_nice_name% observes="Tasks:HelloWorld" class="menu-iconic-wide"

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 44 I18n

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 45 chrome.manifeset

/content undoslider jar:undoslider.jar!/content • xpcnativewrappers=yes • • overlay chrome://komodo/content/komodo. chrome://undoslider/content/overlay.xul • • skin undoslider classic/1.0 jar:undoslider.jar!/skin/ OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 46 Monkeypatching your IDE

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 47 JavaScript

• String.prototype.shuffle = function(s) { var a = s.split(''); a.sort(function() { return 0.5 - Math.random(); }); return a.join(''); }

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 48 JavaScript Cautions

• Komodo doesn't modify JS classes • Avoids loading third-party libraries • Other extensions might

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 49 Namespaces

• ko - global object • Be consistent • Declare everything

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 50 Monkeypatching via Hooks

• Function addModifiedHandler(view) { gOrigH = view.onModifiedHandler; view.onModifiedHandler = function(…) { … if (typeof(gOrigH) == "function") { gOrigH(…); } } }

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 51 What about Ruby XPCOM?

http://rbxpcom.mozdev.org/index.html • • Version 0.0.4

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 52 Getting the source

• http://www.openkomodo.com • SVN

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 53 Searching the source

• http://grok.openkomodo.com/ source/xref

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 54 Resources

• http://www.openkomodo.com • http://community.activestate.com • irc://moznet/#komodo • http://blogs.activestate.com/ericp • [email protected]

OpenKomodo: Own Your IDE Oslo, Norway April 4, 2008 55