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 .
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 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.
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.
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.
Jean-Michel presented the product Highlights of Atlassian 2014:
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 add-ons every year, currently 1500 in the marketplace. It is easier now for the user to install add-ons and with the new vendor dashboard 2.0 also easier to upload and design them. You can track where the add-on 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.
Matt talked about how collaboration developed 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 add-on is coming soon, which will replace the current roadmap add-on. 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.
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:
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.
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 video chat 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 Atlassian Design Guidelines. 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.
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 purposes he recommends 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 add-ons under load. You can use the tool ac-load-test, which sets up load tests for connect add-ons, 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.
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 client side add-on works well enough. To avoid the static limitations, you can also build hybrid add-ons like Firebase, Hood.ie or Parse.
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.
First of all Peter pointed out that there is always a tension between security and usability. For authentication 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 authentications. See also go.atlassian.com/ac-security.
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.
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.
Patrick compared the ACE/AC Play Framework with using your own stack. The ACE (Atlassian Connect Express) and ACPlay (Atlassian Connect Play) Frameworks provide authentication handling, lifecycle handling and persistence 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 authentication 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.
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.
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. More information at bitbucket.org/jfuller.
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.
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.