This BoF is focused on one of the development models "In-System Programming", that can be used in combination with cloud platforms. It leverages also content-centric architectural style by using centralised repository, dynamic languages and multi-container runtime.
The main goal is achieving the shortest development turn-around time ever.
4. What is it?
Dirigible is an Integrated Development Environment as a
Service (IDEaaS) for dynamic applications. It provides both
development tools and runtime environment.
Dirigible is part of the Eclipse Cloud Development TLP
(ECD), along with Orion, Che, Flux and CloudFoundry
Tools.
6. What can you do with it?
Everything you need for your next generation cloud
application:
• Database management
• Scripting services
• Shell commands
• Flows & Jobs
• Web content
• Wiki documents
• Lifecycle management
• Monitoring logs
9. Web IDE
Dirigible has a full-fledged Web IDE running entirely in a
browser, hence doesn’t require any installation and
configuration steps. Focused on JavaScript support client-
and server-side.
10. Orion Editor
Embedded Orion editor is the default one for JavaScript
and HTML5/CSS authoring. Dirigible’s injected API is
integrated in code-completion as well.
http://www.dirigible.io/blogs/2015/10/28/blogs_dirigible_ori
on_editor.html
11. Standard Eclipse Plugins
By using single source paradigm of Eclipse RAP, it is
possible ~90% of the functionality to run server-less in the
standalone Eclipse IDE. In this way you can still use your
favorite tools e.g. JDT, JSDT, eGit. Focused mainly on the
Java services development.
http://www.dirigible.io/help/eclipse-rcp.html
12. Deployment Options
Dirigible is entirely modularized leveraging OSGi by
Eclipse Equinox. It provides a few default options of
packaging - Trial, All-In-One, Runtime and RCP Update
Site with platform specific builds for SAP HANA Cloud
Platform and Apache Tomcat (standalone or
CloudFoundry or OpenShift).
http://www.dirigible.io/help/tomcat.html
13. Off-line Options
There are three options for off-line mode development
using Dirigible:
• Self-contained executable jar
• Local instance deployed on Java Web container such as
Apache Tomcat
• Native plugins in Eclipse
http://download.eclipse.org/dirigible/
15. Bring-Your-Own-Language
In case you want to use a language different than the built-in
ones - JavaScript and Java, you can easily implement a bridge
extension for JVM languages like Groovy, jRuby, Jython, Scala,
etc.
http://www.dirigible.io/blogs/2015/10/21/blogs_dirigible_impl_sql_
plugin.html
16. Usage?
So far internally at SAP and very few customers and
partners as well as a learning tool at universities and
schools
18. The Ultimate Goal
Dirigible promotes so called In-System Programming
development model. It avoids the side-effects of a
simulated (local) environment, gives access to the live data,
ensures all the dependencies and integrations are on place
and at the end results to the shortest development turn-
around time ever.
19. Dynamic Applications
• Built for change
• Consist of atomic components
• Promote REST/Web 2.0 patterns
• Built on micro-services architecture
• Cover vertical scenarios
• Provide end-to-end completeness
• Extensible and adaptable
http://www.dirigible.io/help/dynamic_applications.html
20. Vertical Scenarios
End-to-end coverage with tools for vertical scenarios.
http://www.dirigible.io/blogs/2015/09/24/blogs_dirigible_too
ls_for_vertical_scenarios.html
21. Pull Principle
In fact, the absolute pull principle – we develop the toolkit
in the way we ourselves need it and use it.
22. RAD Technics
• Fast prototyping
• Predefined templates
• Wizards and specialized editors
• Reusable artifacts
• Enforce best-practices
23. Injected Services
Dirigible has a concepts of Injected Services and
Execution Context.
• Injected Services are predefined objects or platform
services wrappers, which are accessible directly during
the script execution.
• The Context is a standard way to pass parameters
throughout the process of separated modules.
It is possible to extend the set of Injected Services e.g.
based on Cloud Platform in use.
http://www.dirigible.io/help/api.html
24. Content Transport
All the artifacts for a given project in Dirigible are stored in
the underlying Repository component. It has an abstract
File System like structure, hence it can be easily bundled
and transported to another instance. There is a remote
interface as well as CLI, which can be used for integration
with the legacy transport management systems in your
landscape.
Registry
Content
New
Instance
Zip archive via HTTP
or Git clone
25. Scaling
Dirigible promotes architectural patterns proven in the
cloud computing space. By wizards, templates and other
RAD technics, it tries to enforce Web 2.0 paradigm and
micro-services architecture. In case the application
follows the best practices, it can be possible to scale
horizontally afterwards on production landscape.
29. Inspect the Database state
• Database Perspective has Database Viewer and SQL
Console for low level manipulations.
30. Generate a RESTful service
Once you have the data model in place, you can generate
a CRUD service for it.
31. What is generated?
Based on the database table definition, all server-side
JavaScript artifacts are produced using predefined
templates. After activation, you have a fully capable REST
service exposing your data from the database layer as
JSON content over HTTP.
Template
Metadata
Generato
r
REST
service
32. JavaScript - Node.js or?
Dirigible uses Mozilla Rhino.
• Mature and stable framework
• Supports CommonJS for dynamic loading of modules
• Built-in debugger with simple API
• Possibility to invoke standard Java objects directly
33. Activate or Publish?
• Activate copy the artifacts from the user’s workspace to
the sandbox for testing.
• Publish copy the artifacts to the public registry space.
activate
publish
Workspace
Sandbo
x
Registry
35. User Interface
To be complete for the entity management scenario, we
added templates for pattern based user interface
generation.
Default technologies as of now:
• Bootstrap + AngularJS
• OpenUI5
36. Process declarations?
In the context of Cloud Applications, usually it is required
integrations with external 3-thd party services or just
declarative description of consecutive calls. In Dirigible we
semantically separated such services by adding:
• Flows – simple context based routing in JSON
• Jobs – asynchronous triggers with CRON expressions in
JSON
37. Extensibility
There is a generic extensibility concept in place. You can
define extension points at the “packaged software” part,
hence it is possible for others to introduce extensions to
these extension points. There is no syntactical contract
definition, it is bilateral.
38. Security
There is easy way to secure the endpoints of your
services or user interfaces. You can choose from the set of
predefined roles.
It is possible to add more roles, if needed.
39. Documentation
To make your application ready-to-
use for your users it is not enough
just to cover all the functional
requirements. The documentation is
considered as integral part of the
application itself. The supported wiki
formats are confluence,
markdown, textile, tracwiki and
twiki.
40. SCM
Git is the SCM of choice for Dirigible. There is a simplified
Git interaction support in the Web IDE. In case of more
complex “merge” situations you can commit your changes
in a new branch and continue with the fixes by using your
favorite Git client or via the Terminal view.
43. What is next?
Some of the hot topics in discussion:
• More widgets and enhancements in UI templates
• Enhanced templates authoring
• More integrations – no-SQL databases, messaging
busses
• non-JVM Runtime implementations
• More languages – groovy, ruby, python, DSLs, …
• More form-based editors for major artifacts
• WYSIWYG enhancements and binding support
• Tutorials and courses
• More samples and show-cases
• Market place for reusable services
• … your own deliveries
45. Why to contribute?
You have some Eclipse based plugins and you are
curious whether they can run in Dirigible environment?
You are keen on using Web IDE based development, but
you miss important features?
You are cloud platform provider and you want to see
your services as injected objects?
You are in software business and want to boost the
productivity by developing new services in the cloud
You are creator or a fan of a great programming
language and you want to integrate it as a scripting
language?
You are a teacher looking for an easy-to-use tool for
your courses
… or you just know that to contribute to open source
projects is still considered cool by younger people
46. How to contribute?
• Go to:
https://github.com/eclipse/dirigible
clone, fork, make pull requests…
If in doubt, just contact us.
48. Key Takeaways
• There is a project in Eclipse Foundation called Dirigible
• It provides development environment that can run everywhere
• It claims to provide everything you need as a developer
• It claims to provide fastest developer turn-around time
• It claims to promote the most powerful development model
• It enforces best-practices in your applications
• It starts establishing ecosystem for business services around
it
• It is built with care and love