Open Komodo: an Open Source IDE for Open Languages for Open
Total Page:16
File Type:pdf, Size:1020Kb
Open Komodo: An Open Source IDE For Open Languages Own Your IDE Eric Promislow ActiveState Software Inc. OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 1 History • Perl for Windows • Active Python, Komodo Anti-Spam Digression • • • Refocus on Developer Tools OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 2 YAILWAD • Spent 1990s Competing with Java and Perl Original Komodo Team in 2000 • • Visual Studio .Net Digression • • Back on Komodo in 2004 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 3 ?Contradiction OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 4 Origins OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 5 Agenda • Ruby and Rails Support • OpenKomodo • Zooming In OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 6 Komodo Philosophy Balance of Helpfulness • • • Projects Are Optional OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 7 Ruby Support Ruby-Aware Auto-Indentation • • • Soft Characters • • Code Completion – Their Stuff – Your Stuff • OpenKomodo:• AbbreviationsOwn Your IDE (Snippets) Copenhagen, Denmark April 2, 2008 8 Complete Known Names OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 9 Walk Library Objects OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 10 Call Tips OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 11 Your Own Code OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 12 Troubleshoot OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 13 Rails Support: Goals Avoid the Command-Line for Routine • activities – Generate & Migrate – Test – Debug – Run – SCC OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 14 Useful Tools Firefox JavaScript Debugger • • HTTP Inspector • DOM Inspector • Unit Test Integration • Rx Toolkit OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 15 Visualizing Redirects: Before OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 16 Visualizing Redirects: After OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 17 Rails Support: Deploying • Specify Servers • Edit Remote Files • Remote Folders in Projects • One Size Doesn’t Fit All OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 18 The Komodo Family OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 19 The Komodo Family • Komodo IDE • Komodo Edit • OpenKomodo : MPL GPL LGPL OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 20 Why Open It • Unique in its underlying technology • Built with the same languages we support • Build a foundation, let many build on top • Mozilla: Open, Cross-Platform OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 21 Now That We’ve Open- Sourced It… OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 22 Use It • http://www.openkomodo.com OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 23 Extend It • Macros • Extensions • Hack the Source OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 24 Build Something • Komodo IDE • Snapdragon • Mozpad •? OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 25 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 Copenhagen, Denmark April 2, 2008 26 End Lock-In • It’s My Data • It’s My Code • No Proprietary Formats • Choice of Environments OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 27 Mozilla: Timing is Everything • Seamonkey and MAS too “90s” • Firefox and Thunderbird Follow Unix Philosophy OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 28 Built on Standards • XUL isn’t too foreign • JavaScript is everyone’s second language OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 29 Other Apps • Flock • Sunbird • Camino • Songbird • Joost • Hackety-Hack OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 30 Even Microsoft Buys In • Windows Application Framework – Based on XAML – XAML based on XUL OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 31 Is the Platform Irrelevant? • Where are the verticals? • Wait a generation… OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 32 How Developers Work • We’re Late Adopters • We Like Plain Text • Whiteboards vs. Electronic Communication OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 33 The Future of Programming • Was supposed to look like this… OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 34 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 35 Programmers' Tools Matter • OpenKomodo is the right technology at the right time OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 36 Community Matters • Every platform needs one • Case Study: Visual Basic • "Support statement for Visual Basic 6.0 on … Vista" • Visual Studio .Net (7.0) Q & A OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 37 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 Copenhagen, Denmark April 2, 2008 38 Documentation is a Challenge • Writing doesn't usually scratch an itch • Every non -private function is callable • The Sourceforge challenge OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 39 And Now For Something More Technical… OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 40 What Exactly Is Mozilla • XUL • JS • CSS OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 41 Mozilla Components • NSPR • Gecko • Necko • XPCOM • XPConnect • XBL OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 42 Komodo Under the Hood • Chrome - front-end -- src/chrome • PyXPCOM back -end -- src/ • Over 20 FOSS components in contrib/ • IDL files - src/* and sdk/ • Over 260 files OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 43 Interfaces & Implementations Search http://grok.openkomodo.com/source/xref/ http://lxr.mozilla.org/mozilla1.8/ OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 44 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 Copenhagen, Denmark April 2, 2008 45 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 46 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 47 Python or JavaScript? • JS code handles model and view • Python better suited for special cases OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 48 Python example: • t = ClipboardWrapper() • text = t.get() • paras = re.split(r'\r?\n\r?\n(?=.)', text) • import textwrap • lines = [textwrap.wrap(p) for p in paras] • t.put(eol.join(lines)) OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 49 Writing Extensions • Hello-world • Komodo "Komodo Extension Template" • Steeper Leaning Curve that Macros – Graphical UI Adds an Extra Dimension OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 50 Undo Slider OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 51 Getting Started OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 52 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 53 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 Copenhagen, Denmark April 2, 2008 54 I18n OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 55 chrome.manifeset content undoslider • jar:undoslider.jar!/content/ xpcnativewrappers=yes • • overlay chrome://komodo/content/komodo.xul chrome://undoslider/content/overlay.xul • • skin undoslider classic/1.0 OpenKomodo:jar:undoslider.jar!/skin/ Own Your IDE Copenhagen, Denmark April 2, 2008 56 Monkeypatching your IDE OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 57 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 Copenhagen, Denmark April 2, 2008 58 JavaScript Cautions • Komodo doesn't modify JS classes • Avoids loading third -party libraries • Other extensions might OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 59 Namespaces • ko - global object • Be consistent • Declare everything OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 60 Monkeypatching via Hooks • Function addModifiedHandler(view) { gOrigH = view.onModifiedHandler; view.onModifiedHandler = function(…) { … if (typeof(gOrigH) == "function") { gOrigH(…); } } } OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 61 What about Ruby XPCOM? http://rbxpcom.mozdev.org/index.html • • Version 0.0.4 OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 62 Getting the source • http://www.openkomodo.com • SVN OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 63 Searching the source • http://grok.openkomodo.com/ source/xref OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 64 Resources • http://www.openkomodo.com • http://community.activestate.com • irc://moznet/#komodo • http://blogs.activestate.com/ericp • [email protected] OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 65.