Open Komodo: an Open Source IDE for Open Languages for Open

Open Komodo: an Open Source IDE for Open Languages for Open

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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    65 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us