Open Komodo: An Open Source IDE For Open Languages For Open - - PowerPoint PPT Presentation

open komodo an open source ide for open languages for
SMART_READER_LITE
LIVE PREVIEW

Open Komodo: An Open Source IDE For Open Languages For Open - - PowerPoint PPT Presentation

Open Komodo: An Open Source IDE For Open Languages 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,


slide-1
SLIDE 1

Open Komodo: An Open Source IDE For Open Languages

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 1

For Open Languages

Own Your IDE

Eric Promislow

ActiveState Software Inc.

slide-2
SLIDE 2

History

  • Perl for Windows
  • Active Python, Komodo

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 2

  • Active Python, Komodo
  • ฀Anti-Spam Digression
  • Refocus on Developer Tools
slide-3
SLIDE 3

YAILWAD

  • Spent 1990s Competing with Java and

Perl

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 3

Perl

  • ฀Original Komodo Team in 2000฀
  • Visual Studio .Net Digression
  • Back on Komodo in 2004
slide-4
SLIDE 4

฀Contradiction?

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 4

slide-5
SLIDE 5

Origins

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 5

slide-6
SLIDE 6

Agenda

  • Ruby and Rails Support
  • OpenKomodo

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 6

  • OpenKomodo
  • Zooming In
slide-7
SLIDE 7

฀Komodo Philosophy

  • ฀Balance of Helpfulness
  • OpenKomodo: Own Your IDE

Copenhagen, Denmark April 2, 2008 7

  • Projects Are Optional
slide-8
SLIDE 8

Ruby Support

  • ฀Ruby-Aware Auto-Indentation
  • OpenKomodo: Own Your IDE

Copenhagen, Denmark April 2, 2008 8

  • Soft Characters
  • Code Completion

– Their Stuff – Your Stuff

  • Abbreviations (Snippets)
slide-9
SLIDE 9

฀Complete Known Names

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 9

slide-10
SLIDE 10

฀Walk Library Objects

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 10

slide-11
SLIDE 11

Call Tips

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 11

slide-12
SLIDE 12

Your Own Code

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 12

slide-13
SLIDE 13

฀Troubleshoot

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 13

slide-14
SLIDE 14

฀Rails Support: Goals

  • ฀Avoid the Command-Line for Routine

activities

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 14

activities

– Generate & Migrate – Test – Debug – Run – SCC

slide-15
SLIDE 15

Useful Tools

  • ฀Firefox JavaScript Debugger
  • HTTP Inspector

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 15

  • HTTP Inspector
  • DOM Inspector
  • Unit Test Integration
  • Rx Toolkit
slide-16
SLIDE 16

Visualizing Redirects: Before

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 16

slide-17
SLIDE 17

Visualizing Redirects: After

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 17

slide-18
SLIDE 18

Rails Support: Deploying

  • Specify Servers
  • Edit Remote Files

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 18

  • Edit Remote Files
  • Remote Folders in Projects
  • One Size Doesn’t Fit All
slide-19
SLIDE 19

The Komodo Family

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 19

slide-20
SLIDE 20

The Komodo Family

  • Komodo IDE
  • Komodo Edit

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 20

  • Komodo Edit
  • OpenKomodo : MPL GPL LGPL
slide-21
SLIDE 21

Why Open It

  • Unique in its underlying technology
  • Built with the same languages we

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 21

  • Built with the same languages we

support

  • Build a foundation, let many build on top
  • Mozilla: Open, Cross-Platform
slide-22
SLIDE 22

Now That We’ve Open- Sourced It…

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 22

slide-23
SLIDE 23

Use It

  • http://www.openkomodo.com

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 23

slide-24
SLIDE 24

Extend It

  • Macros
  • Extensions

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 24

  • Extensions
  • Hack the Source
slide-25
SLIDE 25

Build Something

  • Komodo IDE
  • Snapdragon

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 25

  • Snapdragon
  • Mozpad
  • ?
slide-26
SLIDE 26

How did we get here?

  • 1994: Netscape 1.0 Beta
  • 1995: IE 2.0 Released

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 26

  • 1995: IE 2.0 Released
  • Jan 1998: Netscape Open-Sources

Client

  • What does this have to do with

developer tools?

slide-27
SLIDE 27

End Lock-In

  • It’s My Data
  • It’s My Code

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 27

  • It’s My Code
  • No Proprietary Formats
  • Choice of Environments
slide-28
SLIDE 28

Mozilla: Timing is Everything

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 28

  • Firefox and Thunderbird Follow Unix

Philosophy

slide-29
SLIDE 29

Built on Standards

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 29

  • JavaScript is everyone’s second

language

slide-30
SLIDE 30

Other Apps

  • Flock
  • Sunbird

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 30

  • Sunbird
  • Camino
  • Songbird
  • Joost
  • Hackety-Hack
slide-31
SLIDE 31

Even Microsoft Buys In

  • Windows Application Framework

– Based on XAML

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 31

– Based on XAML – XAML based on XUL

slide-32
SLIDE 32

Is the Platform Irrelevant?

  • Where are the verticals?
  • Wait a generation…

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 32

  • Wait a generation…
slide-33
SLIDE 33

How Developers Work

  • We’re Late Adopters
  • We Like Plain Text

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 33

  • We Like Plain Text
  • Whiteboards vs. Electronic

Communication

slide-34
SLIDE 34

The Future of Programming

  • Was supposed to look like this…

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 34

slide-35
SLIDE 35

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 35

slide-36
SLIDE 36

Programmers' Tools Matter

  • OpenKomodo is the right technology at

the right time

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 36

the right time

slide-37
SLIDE 37

Community Matters

  • Every platform needs one
  • Case Study: Visual Basic

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 37

  • Case Study: Visual Basic
  • "Support statement for Visual Basic 6.0 on

… Vista"

  • Visual Studio .Net (7.0) Q & A
slide-38
SLIDE 38

Openness Matters

  • Hard to grow a community without

empowering people

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 38

empowering people

  • Extension contest showed people could

use it without large amounts of documentation

slide-39
SLIDE 39

Documentation is a Challenge

  • Writing doesn't usually scratch an itch
  • Every non-private function is callable

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 39

  • Every non-private function is callable
  • The Sourceforge challenge
slide-40
SLIDE 40

And Now For Something More Technical…

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 40

slide-41
SLIDE 41

What Exactly Is Mozilla

  • XUL
  • JS

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 41

  • JS
  • CSS
slide-42
SLIDE 42

Mozilla Components

  • NSPR
  • Gecko

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 42

  • Gecko
  • Necko
  • XPCOM
  • XPConnect
  • XBL
slide-43
SLIDE 43

Komodo Under the Hood

  • Chrome - front-end -- src/chrome
  • PyXPCOM back-end -- src/

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 43

  • PyXPCOM back-end -- src/
  • Over 20 FOSS components in contrib/
  • IDL files - src/* and sdk/
  • Over 260 files
slide-44
SLIDE 44

Interfaces & Implementations

Search

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 44

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

slide-45
SLIDE 45

Write Macros

Samples in Toolbox Subset of API in Help

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 45

Subset of API in Help Experiment with JavaScript Shell

  • http://community.activestate.com/

komodo-extension/ komodo-developer-extension

slide-46
SLIDE 46

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 46

slide-47
SLIDE 47

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 47

slide-48
SLIDE 48

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 better suited for special cases
slide-49
SLIDE 49

Python example:

  • t = ClipboardWrapper()
  • text = t.get()

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 49

  • 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))
slide-50
SLIDE 50

Writing Extensions

  • Hello-world
  • Komodo "Komodo Extension Template"

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 50

  • Komodo "Komodo Extension Template"
  • Steeper Leaning Curve that Macros

– Graphical UI Adds an Extra Dimension

slide-51
SLIDE 51

Undo Slider

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 51

slide-52
SLIDE 52

Getting Started

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 52

slide-53
SLIDE 53

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 53

slide-54
SLIDE 54

UI expressed in XML

  • overlay id=%extension_name%Overlay ...

– commandset id=allcommands

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 54

– commandset id=allcommands

  • command id=Tasks:HelloWorld
  • ncommand="alert('Hello world')"

– menupopup id=popup_tools

  • Menuitem id=menu_%extension_name%

label=%extension_nice_name%

  • bserves="Tasks:HelloWorld"

class="menu-iconic-wide"

slide-55
SLIDE 55

I18n

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 55

slide-56
SLIDE 56

chrome.manifeset

  • ฀content undoslider

jar:undoslider.jar!/content/

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 56

jar:undoslider.jar!/content/ xpcnativewrappers=yes

  • overlay chrome://komodo/content/komodo.xul

chrome://undoslider/content/overlay.xul

  • skin undoslider classic/1.0

jar:undoslider.jar!/skin/

slide-57
SLIDE 57

Monkeypatching your IDE

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 57

slide-58
SLIDE 58

JavaScript

  • String.prototype.shuffle = function(s) {

var a = s.split('');

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 58

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

slide-59
SLIDE 59

JavaScript Cautions

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 59

  • Avoids loading third-party libraries
  • Other extensions might
slide-60
SLIDE 60

Namespaces

  • ko - global object
  • Be consistent

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 60

  • Be consistent
  • Declare everything
slide-61
SLIDE 61

Monkeypatching via Hooks

  • Function addModifiedHandler(view) {

gOrigH = view.onModifiedHandler;

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 61

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

slide-62
SLIDE 62

What about Ruby XPCOM?

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 62

  • Version 0.0.4
slide-63
SLIDE 63

Getting the source

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

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 63

  • SVN
slide-64
SLIDE 64

Searching the source

  • http://grok.openkomodo.com/

source/xref

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 64

source/xref

slide-65
SLIDE 65

Resources

  • http://www.openkomodo.com
  • http://community.activestate.com

OpenKomodo: Own Your IDE Copenhagen, Denmark April 2, 2008 65

  • http://community.activestate.com
  • irc://moznet/#komodo
  • http://blogs.activestate.com/ericp
  • ericp@activestate.com