SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
State of Counterclockwise:
Past, Present and Future
http://bit.ly/counterclockwise
by Laurent Petit
@laurentpetit
first.clojure-conj.org - 2010/10/22
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Presentations 1/2
● Me
● Laurent Petit, french
● Fond of Clojure since Q2 2008
● Involved in Counterclockwise since Q4 2008
Presentations 2/2
● Eclipse
● multi-language software development environment
● Primary target language/platform: Java/JVM
● Eclipse Foundation claims “millions” of users,
worldwide
● Counterclockwise
● An Eclipse extension for managing Clojure-based
projects
● License : EPL
● “ccw” for short
Intro 1/2
● Counterclockwise is an Eclipse plugin helping
developers write Clojure code
● Why an Eclipse plugin ?
● Targetting a large base of java developers
● Driving forces : writing Eclipse plugins both at work
& at home !
● Want Clojure for my next paid java project !
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
● Ease of installation = maximize a good first
impression with the language (like it or not !)
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
● Ease of installation = maximize a good first
impression with the language (like it or not !)
● No-brainer integration into Eclipse java users'
toolset
– Parens will already feel UFOs to them, let the IDE get out
of their way and help them concentrate on the concepts
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a matter of
minutes!
● Ease of installation = maximize a good first impression
with the language (like it or not !)
● No-brainer integration into Eclipse java users' toolset
– Parens will feel alien enough to new users, let the IDE get out
of their way and help them concentrate on the concepts
● But should provide same interactive “dynamic”
experience
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
History
● Started in 2008
● By Casey Marshall, code name “clojure-dev”
● Joined on October 2008
● Casey left the team early 2009 ...
● … got the “de-facto” leadership since then
Figures (google analytics)
Homepage – 2000 views per month
● Since March 1, 2010:
● ~ 4000 different visitors
– 800-900 average different visitors per month
● ~2000 homepage views per month
● ~2000 documentation page views per month
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Installation
● Super easy
● Use Eclipse 3.6 Helios' Market place
– Menu Help > Eclipse Market Place
– search for “clojure” & click
● Super fast
● 6 Mb download
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Editor features 1/2
● Syntactic coloration (stable)
● Strictly speaking, “token-based” coloration
● “rainbow” parens (and higlight, and jump to/from)
● Around the corner: true syntactic coloration (full use of parser's info)
● Structural edition commands (stable)
● based on emac's paredit.el (~ 80% commands currently ported)
● Totally reusable outside Eclipse context (pure clojure)
● Jump to definition (stable)
● Only to clojure global vars for now on ...
● Auto-indentation (stable)
● Predictable behaviour with & without support of dynamic environment
● But judged “too simple” by increasing number of users ...
Editor features 2/2
● Code completion (incomplete)
● Clojure top level vars
● Java
– Clojure is “backward”
– full search in the project's classpath)
– → slow !
● REPL interaction commands (stable)
● Documentation hover (around the corner)
● Code Outline (unstable)
● Missing: formatting, macro-expansion
Editor demo
● Structural edition modes
● Default mode – does not break habit
● Strict mode – mixed free/guided mode
● Underused structural edition commands
● Both modes
– Structure-based selection
– Raise over parent
– Split / Join
● Strict mode only
– Easy wrapping
Project management feature
● Compliant with Eclipse's notion of project
● Project “natures” : composable with JDT nature,
etc.
● “Running the project” uses “enhanced” java-
nature-based “launch configuration”
● Enabled to quickly provide out-of-the-box
interactivity
Interactive Dev feature1/2
● REPL' state of the art (v0.0.64)
● Based on the Java nature of the project
– Uses the project's classpath
– Same configuration tabs as the java's
● But limited in scope ...
– Forces the project to start with a stdin/stdout-based REPL class
(e.g. clojure.main or clojure.contrib.repl-ln)
– Not possible to work with web projects (WTP), GWT projects,
Eclipse projects (PDE)
● … and in features
– Plain text edition (no colors, no user assistance)
– No history
Interactive Dev feature 2/2
● Brand new REPL around the corner !
● Based on cemerick's nREPL client/server REPL library
● And on cemerick's rework of the Graphical REPLView !
● Connection to any JVM running a nREPL client
● No more need for special “launch configuration”
● => composable with projects of any kind (Web WTP, GWT, AppEngine,
etc.)
● Rich set of feature for the REPL View
● Shares source code editor featureset: colors, structural edition, code
completion (wip), navigation commands, etc.
● Colorized logs
● Recall previously entered commands (wip)
● Multiline (with auto-indentation!) command area
Interactive Dev demo
● “launch” your project
● auto-reload-on-save enabled or disabled
– Agile feature design at work ! :-)
● Exclusivity: new REPL View !
● Same feature set as editor
● Receive code from the editor
● Namespace browser
● Embedded search engine
● Click to jump to definition
Debugger feature
● Features
● Place breakpoints in clojure code
● Leverage the classic Eclipse integrated java
debugger
● Still a little bit unstable
● Future work
● Does not (yet) filter frames related to the internals
of clojure (clojure.lang.*)
● Integration with George Jahad's CDT debugger
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Future – features around the corner
● Editor
● Jump to definition (java)
● Documentation hover (clojure & java)
● True syntax-based coloration (locals, etc.)
● Project management
● More “orthogonality” with underlying “project nature” (pure
java, GWT, WTP, AppEngine, Eclipse RCP, etc.)
● REPL
● Port features of the editor
● And then … towards “graphical REPL” (ability to display
“binary” return values as images, HTML, charts, etc.)
Future – other features
● Refactoring features
● Integration of tcrayford's clojure-refactoring project
● Hopefully bidirectional java ↔ clojure
● Debugging features
● Integration with George Jahad's Clojure Debugging
Toolkit (CDT)
Future – “dream-about” features
● More “warnings” than what the compiler has to offer
● Help enforcing conventions
● Help detect potential bugs (more than one statement
inside dosync, local same name as global, etc., etc.)
● → No hurry, 'cause “cinc” may be a game changer ...
● “AI-like” User suggestions
● Analyse user's habits through heuristics (and occurrence)
● Non-invasive (hard part !) suggestions
Future - Miscellaneous
● Introduction of Contributor Agreement
● Better juridical protection for project's code
● Better protection of sponsor's rights on project “as a whole”
● copy&paste of Clojure's one, just names changed
● Switch to “semantic versioning”
● “embedded” REPL for ccw own's development
● Open the door to more contributors
● devs:
– mvn based build process
– Continuous integration
● users:
– Update Sites for “beta” versions as well as “stable” version
– Opening the plugin to user contributions (in clojure, of course)
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Share, ...
● Past & current contributors
● Casey Marshall (first versions of ccw)
● Stephan Müehlstraßer (preference pages, online
help, labrepl support)
● Christophe Grand (Debug breakpoints)
● Manuel Woelker (Source code outline)
● Miaubiz, clooney (editor commands:navigate to
definition, etc.)
● Nicolas Lambert (Outline commands)
● Chas Emerick (integration with nREPL, REPLView)
… reuse,
● vimClojure (@kotarak): code completion
● parsley (@cgrand): source code parser
● clojure.osgi (@aav): clojure+OSGi love story
● nREPL (@cemerick): REPL client/server library
… give back.
● Structural Editor
● paredit.clj (github)
● Clojure Grammar
● ccw.parsers.clojure (github, wip, no rush please)
Where to find it
● Google code home page
● http://code.google.com/p/counterclockwise/
● Google groups
● Users : http://groups.google.com/group/clojuredev-
users (66 members)
● Devs :
http://groups.google.com/group/clojuredev-devel
(37 members)
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Thanks for attending!
(can you wake up your neighbor pliz ?)

Contenu connexe

Tendances

How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Softwareaccount inactive
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing moreICS
 
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"Daniel Bryant
 
Ljc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofLjc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofMani Sarkar
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
Android Modularization
Android ModularizationAndroid Modularization
Android ModularizationYoung-Hyuk Yoo
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionStephen Colebourne
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkitrajivmordani
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperEsther Lozano
 
Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyjljumpertz
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』Ryo RKTM
 
Introduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersIntroduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersICS
 

Tendances (20)

How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
 
Ljc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofLjc conf open jdk betterrev bof
Ljc conf open jdk betterrev bof
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
Android Modularization
Android ModularizationAndroid Modularization
Android Modularization
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introduction
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
Gwt Presentation
Gwt PresentationGwt Presentation
Gwt Presentation
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
 
Gwt ppt
Gwt pptGwt ppt
Gwt ppt
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
Using Features
Using FeaturesUsing Features
Using Features
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosper
 
Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge story
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
 
Introduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersIntroduction to User Experience Design for Engineers
Introduction to User Experience Design for Engineers
 

Similaire à Counterclockwise past present future

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesYshay Yaacobi
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Toolsbarciszewski
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Eugene Yokota
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with serverEugene Yokota
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangriaJorge Morales
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...Radovan Semancik
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadKarthik Murugesan
 
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa... Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...Databricks
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)Ofer Cohen
 
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Kaxil Naik
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation toolIoan Eugen Stan
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29Nitin Bhojwani
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil FrameworkVeilFramework
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloudwesley chun
 

Similaire à Counterclockwise past present future (20)

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangria
 
Dust.js
Dust.jsDust.js
Dust.js
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHead
 
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa... Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
 
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
 
september13.ppt
september13.pptseptember13.ppt
september13.ppt
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 

Dernier

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 

Dernier (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

Counterclockwise past present future

  • 1. State of Counterclockwise: Past, Present and Future http://bit.ly/counterclockwise by Laurent Petit @laurentpetit first.clojure-conj.org - 2010/10/22
  • 2. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 3. Presentations 1/2 ● Me ● Laurent Petit, french ● Fond of Clojure since Q2 2008 ● Involved in Counterclockwise since Q4 2008
  • 4. Presentations 2/2 ● Eclipse ● multi-language software development environment ● Primary target language/platform: Java/JVM ● Eclipse Foundation claims “millions” of users, worldwide ● Counterclockwise ● An Eclipse extension for managing Clojure-based projects ● License : EPL ● “ccw” for short
  • 5. Intro 1/2 ● Counterclockwise is an Eclipse plugin helping developers write Clojure code ● Why an Eclipse plugin ? ● Targetting a large base of java developers ● Driving forces : writing Eclipse plugins both at work & at home ! ● Want Clojure for my next paid java project !
  • 6.
  • 7.
  • 8. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes!
  • 9. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !)
  • 10. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !) ● No-brainer integration into Eclipse java users' toolset – Parens will already feel UFOs to them, let the IDE get out of their way and help them concentrate on the concepts
  • 11. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !) ● No-brainer integration into Eclipse java users' toolset – Parens will feel alien enough to new users, let the IDE get out of their way and help them concentrate on the concepts ● But should provide same interactive “dynamic” experience
  • 12. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 13. History ● Started in 2008 ● By Casey Marshall, code name “clojure-dev” ● Joined on October 2008 ● Casey left the team early 2009 ... ● … got the “de-facto” leadership since then
  • 14. Figures (google analytics) Homepage – 2000 views per month ● Since March 1, 2010: ● ~ 4000 different visitors – 800-900 average different visitors per month ● ~2000 homepage views per month ● ~2000 documentation page views per month
  • 15. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 16. Installation ● Super easy ● Use Eclipse 3.6 Helios' Market place – Menu Help > Eclipse Market Place – search for “clojure” & click ● Super fast ● 6 Mb download
  • 17. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 18. Editor features 1/2 ● Syntactic coloration (stable) ● Strictly speaking, “token-based” coloration ● “rainbow” parens (and higlight, and jump to/from) ● Around the corner: true syntactic coloration (full use of parser's info) ● Structural edition commands (stable) ● based on emac's paredit.el (~ 80% commands currently ported) ● Totally reusable outside Eclipse context (pure clojure) ● Jump to definition (stable) ● Only to clojure global vars for now on ... ● Auto-indentation (stable) ● Predictable behaviour with & without support of dynamic environment ● But judged “too simple” by increasing number of users ...
  • 19. Editor features 2/2 ● Code completion (incomplete) ● Clojure top level vars ● Java – Clojure is “backward” – full search in the project's classpath) – → slow ! ● REPL interaction commands (stable) ● Documentation hover (around the corner) ● Code Outline (unstable) ● Missing: formatting, macro-expansion
  • 20. Editor demo ● Structural edition modes ● Default mode – does not break habit ● Strict mode – mixed free/guided mode ● Underused structural edition commands ● Both modes – Structure-based selection – Raise over parent – Split / Join ● Strict mode only – Easy wrapping
  • 21. Project management feature ● Compliant with Eclipse's notion of project ● Project “natures” : composable with JDT nature, etc. ● “Running the project” uses “enhanced” java- nature-based “launch configuration” ● Enabled to quickly provide out-of-the-box interactivity
  • 22. Interactive Dev feature1/2 ● REPL' state of the art (v0.0.64) ● Based on the Java nature of the project – Uses the project's classpath – Same configuration tabs as the java's ● But limited in scope ... – Forces the project to start with a stdin/stdout-based REPL class (e.g. clojure.main or clojure.contrib.repl-ln) – Not possible to work with web projects (WTP), GWT projects, Eclipse projects (PDE) ● … and in features – Plain text edition (no colors, no user assistance) – No history
  • 23. Interactive Dev feature 2/2 ● Brand new REPL around the corner ! ● Based on cemerick's nREPL client/server REPL library ● And on cemerick's rework of the Graphical REPLView ! ● Connection to any JVM running a nREPL client ● No more need for special “launch configuration” ● => composable with projects of any kind (Web WTP, GWT, AppEngine, etc.) ● Rich set of feature for the REPL View ● Shares source code editor featureset: colors, structural edition, code completion (wip), navigation commands, etc. ● Colorized logs ● Recall previously entered commands (wip) ● Multiline (with auto-indentation!) command area
  • 24. Interactive Dev demo ● “launch” your project ● auto-reload-on-save enabled or disabled – Agile feature design at work ! :-) ● Exclusivity: new REPL View ! ● Same feature set as editor ● Receive code from the editor ● Namespace browser ● Embedded search engine ● Click to jump to definition
  • 25. Debugger feature ● Features ● Place breakpoints in clojure code ● Leverage the classic Eclipse integrated java debugger ● Still a little bit unstable ● Future work ● Does not (yet) filter frames related to the internals of clojure (clojure.lang.*) ● Integration with George Jahad's CDT debugger
  • 26. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 27. Future – features around the corner ● Editor ● Jump to definition (java) ● Documentation hover (clojure & java) ● True syntax-based coloration (locals, etc.) ● Project management ● More “orthogonality” with underlying “project nature” (pure java, GWT, WTP, AppEngine, Eclipse RCP, etc.) ● REPL ● Port features of the editor ● And then … towards “graphical REPL” (ability to display “binary” return values as images, HTML, charts, etc.)
  • 28. Future – other features ● Refactoring features ● Integration of tcrayford's clojure-refactoring project ● Hopefully bidirectional java ↔ clojure ● Debugging features ● Integration with George Jahad's Clojure Debugging Toolkit (CDT)
  • 29. Future – “dream-about” features ● More “warnings” than what the compiler has to offer ● Help enforcing conventions ● Help detect potential bugs (more than one statement inside dosync, local same name as global, etc., etc.) ● → No hurry, 'cause “cinc” may be a game changer ... ● “AI-like” User suggestions ● Analyse user's habits through heuristics (and occurrence) ● Non-invasive (hard part !) suggestions
  • 30. Future - Miscellaneous ● Introduction of Contributor Agreement ● Better juridical protection for project's code ● Better protection of sponsor's rights on project “as a whole” ● copy&paste of Clojure's one, just names changed ● Switch to “semantic versioning” ● “embedded” REPL for ccw own's development ● Open the door to more contributors ● devs: – mvn based build process – Continuous integration ● users: – Update Sites for “beta” versions as well as “stable” version – Opening the plugin to user contributions (in clojure, of course)
  • 31. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 32. Share, ... ● Past & current contributors ● Casey Marshall (first versions of ccw) ● Stephan Müehlstraßer (preference pages, online help, labrepl support) ● Christophe Grand (Debug breakpoints) ● Manuel Woelker (Source code outline) ● Miaubiz, clooney (editor commands:navigate to definition, etc.) ● Nicolas Lambert (Outline commands) ● Chas Emerick (integration with nREPL, REPLView)
  • 33. … reuse, ● vimClojure (@kotarak): code completion ● parsley (@cgrand): source code parser ● clojure.osgi (@aav): clojure+OSGi love story ● nREPL (@cemerick): REPL client/server library
  • 34. … give back. ● Structural Editor ● paredit.clj (github) ● Clojure Grammar ● ccw.parsers.clojure (github, wip, no rush please)
  • 35. Where to find it ● Google code home page ● http://code.google.com/p/counterclockwise/ ● Google groups ● Users : http://groups.google.com/group/clojuredev- users (66 members) ● Devs : http://groups.google.com/group/clojuredev-devel (37 members)
  • 36. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 37. Thanks for attending! (can you wake up your neighbor pliz ?)