AtlasCamp is the yearly conference for Plugin Developers of Atlassian products, which provides insights in the product APIs, informs about new features and of course is a great opportunity to get to know each other.
With Berlin Atlassian chose a great location for developers to meet and enjoy the sunny weather with about 30 degrees and interesting talks with a very international audience. A quick research unvailed that more than 50% of the attendees were new to AtlasCamp, which means that the community is still growing fast. There was no hackathon during the camp this year, but a competition for developers in advance to present their latest Atlassian Connect Add-on and win a price. I guess that was because some developers were complaining about missing all of the conference while hacking away for the hackathon last year. So even though it was fun having intensly working people around in Amsterdam, it was much more laid back this year and talking and getting connected was more in focus of the event. Also the Wifi-Connection at the Maritim-Hotel was so bad, that nobody was really able to work, but had to stay offline with the surrounding participants to talk
Expert Workshop 03.06.2014
The first day was reserved for Expert Partners and Atlassian presented the newest developments that are there to come. One of the main topics were the Enterprise Products for 3500+ Users with Premier Support, Technical Account Management and the highly available Data Centers. As i missed some of the talks the following are just a selection.
Sherif Mansour – Confluence for Software Teams
Sherif Mansour gave a quick overview over the state of Confluence. He presented statistics showing that the number 1 Addon for Confluence ist JIRA Agile, which means that a focus on Product Managers and Project Leads seems benefitial. Also the Requiremens Blueprint is one of the most used. He pointed out that only 1 of 2 customers of confluence have also JIRA, so there is space to sell it to the other half. A good point to start would be the Agile Ready Package, which is oriented on the mentioned target group. Also new is the Confluence Data Center with a new architecture, load balancing and high availability. Version 5.4. will be the last clustered one, which will be only supported until March 2016. Last but not least he presented Confluence Questions which is an easy to use environment to share ideas and ask questions. Questions are grouped and centraliced, knowledge gets shared and best practices are documented. It should be a replacement for mailing lists.
Eric Wittmann – Developer Tools
After giving a quick introduction on how awesome the atlassian DevTools are, Eric pointed out that only 40% of the Experts are actually selling them. In a quick history overview, going back to the Renaissance, he states that we are in a time of innovation now in the IT-Business as the Renaissance has been for art and technical progress. As distributed Software teams are working with dvcs and git, Bitbucket is for more common projects, while Stash can also be used for code behind a firewall. Eric made it quite clear that Stash is the only Enterprise Git Server that scales (and made the whole audience repeate it like a mantra ). A Stash Data Center will be available in late 2014.
Feico Mol and Matthew Coughlan – Product Demos
Running in as astronauts Feico and Matthew presented the Team in Space of Atlassian and had great ideas about demonstrating atlassian products. The best part of it was the information, that there will be a demosystem provided by atlassian, with users and content included, with which experts are able to make better demos for their customers. It is a standalone instance which can also be used offline and there is a skript with a storyline on how to go through the system and what to say. The available users are real persons, who each use the product differently (like a product manager, a tester etc.). You can log in as different users. As an example for a plugin, gliffy is installed. The installation needs at least 8 GB for the whole suite. There will be a bitbucket access to download the data for experts.
AtlasCamp – 04.06.2014
AtlasCamp Keynote by Jean-Michel Lemieux (VP of Engineering at Atlassian)
Jean-Michel presented the product Highlights of Atlassian 2014:
- HipChat: provides real-time communication, screensharing and now also animated gifs in the chat. BabelChat is a great plugin for HipChat, which makes instant translations in the chat.
- Git Essentials: the first bundle product, automized setup of JIRA with Stash and Bitbucket
- Service Desk: reskinned JIRA, from customer perspective, JSD-107-Ticket still open, licence problem with customers from outside the company still on the roadmap
- DataCenter: from vertical to horizontal platform, for good performance. There is a clustering guide for Add-ons. It is recommended to test Addons with large data sets, there are data generators in the marketplace
- Atlassian Verified: trust signal for Enterprise customers
He pointed out that 50% of the new users are coming from the cloud and only 15% of the add-on bookings, so there is room for improvement.
There are 50% more addons every year, currently 1500 in the marketplace. It is easier now for the user to install Addons and with the new vendor dashboard 2.0 also easier to upload and design them. You can track where the Addon is installed, in which version and get sales reports.
For the future Jean-Michel prognosticates that even though P2 and Connect are the same powerful at the moment, P2s role will diminish and Connect will take a lot more space. In 2015 there is an Extend-Me-Button planned, to easily customize Apps, the CLI tools will be in the product directly and there will be a run button to deploy Addons in the cloud.
Collaboration: State of the Union by Matt Ryall
Matt talked about how collaboration devoloped over the last years. He started with HipChat, which had been growing 10 times as large since 2012. Add-ons for HipChat are able to send notifications to rooms, send private messages, watch people or create rooms. There are Remote APIs, Webhooks and UI integrations available. Confluence has been growing up to 40% and is now used not only by software teams but also by business teams and has a new market now with confluence questions, which provides a lightweight confluence editor. Also the JIRA integration is getting better and a visual roadmap addon is coming soon, which will replace the current roadmap addon. Data Center is now running at Atlassian and at some pioneer customers and is doing great. With Confluence 5.5 there will be an new version of the REST API, which means that RPC and SOAP will be deprecated. Also a Java API will be final in 12 months. Modularity is the priority, which means that new features are coming as plugins, the core code only increased by 1% since 2013.
Atlassian Connect by Seb Ruiz
OnDemand has a big growth, it scales, performs well and is stable. Seb explained that the development has been made as simple as possible. All Add-ons are rendered in an iframe, which means that CSS and JavaScript are isolated for better security management. The JavaScript-API is stable and not changing. Via REST-APIs data can be retrieved and rendered within the UI. Webhooks contain the event notification system. Developers are not locked into Java and do not have to compile against Atlassian products. They can use the right tool for the right job. The marketplace is automatically updating and managing versions. Connect is available for OnDemand only. Bitbucket and HipChat have almost no ecosystem until now, so there is a huge chance to develop something for this products. It is still an open question though on how to test OnDemand plugins the right way. Seb told us, that they are working on it
A P2 Plugin and a SaaS Platform Walk into a Bar… by Jonathan Doklovic
First of all Jonathan explained the difference between a P2-Plugin and a Connect-Add-on. He pointed out that there are a lot of cloud-based problems with memory and clustering and Atlassian Connect enables you not to worry about them. Then he talked a bit about Git Flow, which is a workflow on Git, using the masterbranch only for production and featurebranches for each feature. He also told us about his girlfriend Maven, who looks very beautifil but complains a lot . There is a Maven JGit Plugin, with which you don´t need to install git-flow and no maven-release-plugin. A P2-Plugin is a jar-file, but Atlassian Connect doesn´t have jar-files, just JSON-descriptors, which means that you have to transform jar-files for OnDemand. For example you can use Icebat to pack everything up that is needed. There is a lot of documentation about Web Item Plugin Modules on the Atlassian Website. To round it up, he introduced some more tools. The Json-scheme-generator generates a json-scheme from Java Pojos, its easy to use annotations with it, its embedded in the maven plugin and adds javadocs as scheme descriptors in markdown format. The json-schemagen runs as a maven-plugin and easily generates example code.The Atlassian-Spring-Scanner looks for spring annotations.
Code can be downloaded at:
- bitbucket.org/atlassian/jgit-flow
- bitbucket.org/atlassian/atlassian-spring-scanner
- bitbucket.org/atlassian/json-schemagen
Confluence REST API by Steve Lancashire
The main features of the Confluence REST API are a default JSON representation, Hypermedia inside entities, the possibility to embed entities through expansions and a common content model. You can use get, put and delete operations on the REST API, but as all content is versioned, you always need to name the version. The content properties are a key/value-stores up to 32 KB in JSON. After that introduction Steve explained about the CQL (Confluence Query Language), which will be introduced to find content more easily, similar to JQL. It will be flexible, fast and familiar and also extensible. CQL is only available for P2 at the moment.
Designing Add-Ons by Matt Bond
Matt startet by talking about Design Thinking, which means the creativity to find solutions for problems. He suggests that you take a step back to see the context and then define the problem. As design tools there are user tests, which you can do remote as surveys or videochat or in person. You can use the AUI Sandbox for prototyping. Matt pointed out how important it is to use personas, to know who you are building the software for. Personas are archetypes based on research who live and breathe. They are available at the AtlassianDesignGuidelines. He also suggests to use a design wall to collect personas, journeys, user quotes and internet mems. This visualizes the problem and exposes gaps in journeys. In ADG2.0, which comes in early July, there will be notifications, inline help, error pages, icon font expansions and brand guidelines.
Building a Connect Add-On by Robin Fernandes
Robin explained that there is a rich ecosystem for connect add-ons and a low barrier to enter building them. Basic deployment can be done with git push in the heroku master and free tiers allow you to experiment at no cost. For testing porposes he recommands to add post-deployment verification tests to unit and browser testing and also add testing on a free tier, for example New Relic, to monitor the addons under load. You can use the tool ac-load-test, which sets up load tests for connect addons, see: bitbucket.org/atlassianlabs/ac-load-test.g8 .
The whole presentation can be found at http://de.slideshare.net/rewbs/atlascamp-2014-building-a-production-ready-connect-addon.
Static Connect Add-ons by Tim Petterson
Tim explained the difference between traditional Web Apps and Static Web Apps.The latter has as an advantage that the dev-loop is quick and performance and scalability is high. Normally static caching always uses JS and CSS and never HTML but with public cache-control it does that as well. At the end you need to ask yourself the question if you really need a backend. In many cases a clientside add-on works well enough. To avoid the static limitations, you can also build hybrid add-ons like Firebase, Hood.ie or Parse.
Know your funnel by Dave Meyer
Dave explained marketing goals, how to find customers, win them over and keep them forever. It needs to be discovered where your customers come from, what they see on your page and where they go next. Keywords have to be found, the tagline and the highlights in the marketplace should be clear and you should have screenshots and videos that you are proud of. Try direct contact to customers, emails to evaluators and add getting started content to your project. He encouraged to engage the end-users, work with experts and learn from lost customers.
AtlasCamp – 05.06.2014
Connect Security by Peter Brownlow
First of all Peter pointed out that there is always a tension between security and usability. For authentification there are JSON Web Tokens, which ensure that the message has not been tempered with, and a signature in form of a query hash. For authorization users are compared to a white-list, which defines who is allowed to read and write. This has to be displayed to the user, so there are no surprises. With the add-on user permissions you can change permissions of add-ons like for normal users. Coming soon are three-legged authentifications. See also go.atlassian.com/ac-security.
10 things a frontend dev should know about connect by Chris Wellington
In connect everthing runs in an iframe, there is no inheritance of CSS and JavaScript, connect allowes history, cookies, resizing and modifying the product DOM. Documentation about JavaScript is provided per-module with useful examples. Debugging in the iframe can be done with the context of the console in a dropdown to debug (with Firefox 30+ , IE9+). See the AUI Sandbox at go.atlassian.com/aui-sandbox. Using the REST API you have to think about if a backend is needed at all. Chris reminded us to remember that events are friends, to free ourself from callback hell, subscribe to pre-defined events, suscribe to custom events and send data between frames. For speed purposes it is helpful to disable the resizer <script scr=“../all.js“ data-options=“resize:false“>
JIRA State of the Union by Bartek Gatz
Bartek talked about the great integration of JIRA with the development tools. You can create branches from within JIRA and have automatic issue transitions. This eliminates context switching. Inline issue creation is for example possible from within context directly on the planning board. The JIRA Importer Plugin has been improved, its pluggable, the JSON importer is released and the CSV import can be used by users and not only by admins. 65% of new users choose the OnDemand-product by now, which means that Connect becomes more important. Be aware that the SOAP API is not supported in OnDemand, just the REST API. ServiceDesk is build on top of the JIRA Platform but there are ServiceDesk-specific APIs.
Building the right thing by Sherif Mansour
Sherif reminded us that we have to ask ourselves regularly if we were choosing the right problem, then we need to define the solution and tell the story. You can use personas to write software for real people and always have to remember what you want to do for them. With Journey Mapping its possible to present the whole journey to a feature and after. Use post-install actions to guide the user. You can save time building the right thing by faking features until you are able to implement them right. This gives you feedback on the feature already. Build a box to see the important things, to have all context in one place. Assume that you have no release notes and try to make your product self-explaining with inline comments inside of the context.
Connect Add-Ons with your Own Stack by Patrick Streule
Patrick compared the ACE/AC Play Framework with using your own stack. The ACE (Atlassian Connect Express) and ACPlay (Atlassian Connect Play) Frameworks provide authentification handling, lifecycle handling and persistance while with your own stack you can use an existing service that will host the Add-On and do the development on a different stack. You have to check the service descriptor and the Add-On UI, handle the Add-On installation and Add-On requests. The authentification type has to be JWT, the installed lifecycle hook is required and will be called during installation. The installation event needs the client key (to identify the tenant), a shared secret (key for signing and verifying JWT tokens) and a base URL (host and context path of the product). Common known pitfalls are: characters in the unreserved character set MUST NOT be encoded, all other characters MUST be encoded and the two hexadecimal characters used to represent encoded characters MUST be uppercase. Another hint was not to use session cookies, because in an iframe they are seen as third-party cookies and many browsers don´t accept them by default. More information can be found at go.atlassian.com/ac-dev.
Confluence Connect Addons by Matthew Jensen
First of all Matthew explained how the confluence platform can be extended by plugins for spaces, plugins for confluence questions or plugins for your own new application. Then he talked about macros. As an example he used the Hilite-me-addon which can be downloaded here http://bitbucket.org/mjensen/. The macrobody can be any size, can contain sensitive information and only uses http get operations. Dynamic content macros can take a while to load and involve third-party integration, while static content macros can be many on a page, the body is small and authentification can be avoided. The design allows for aggressive cache settings. The whole macro body can be passed as a parameter (limited to 128 characters), may appear in the logs and maybe tracked in the caches. Again the question appears if data storage is really necessary. For web security use JWT and define scopes. Coming soon are blueprints in connect as requested in this task https://ecosystem.atlassian.net/browse/AC-1082.
Preparing your Plugin for JIRA Data Center by Chris Fuller
Chris talked about the dangers with caching, that its not for free but costs memory and consistency. Atlassian Cache 2.0 has replication control, uses the lazy load pattern and has statistical reporting. Best practices are to not to keep the state, use the Atlassian Cache API and the lazy load pattern, set bounds for maximum size and timeout and use simple keys.
Stash State of the Union by Jason Hinch
There are currently 86 Stash Add-Ons on the marketplace, 10-15 of them are free Add-Ons from Atlassian to experiment with features and validate plugin points. Stash is build on the Atlassian platform with servlets, web fragments, page decorators, LESS CSS, Soy templates and the Atlassian UI. There are repository hooks for pre-receive and post-receive events, pull request and merge and per repository configuration. You can take control of any source and diff and selectively handle rendering. The Stash Data Center is coming at the end of the year, scales for larger instances and multiple installations with a shared database.
HipChat Add-Ons by Will deHaan
Will told us about the second generation of the HipChat API. APIv1 was REST with a limited scope, but APIv2 has REST & Webhooks for Atlassian Connect. Both coexist currently. There are global and room scopes and in the future there will be an extensible UI, mobile versions and more
Link to all Presentations
I constantly spent my half an hour to read this web site’s articles everyday
along with a cup of coffee.