Good morning from Day #2 of AtlasCamp in Amsterdam! Yesterday was full of great information, fantastic people, and lots of revelry. We’re ready for another day, with product state of the unions and more. We’ll be live blogging today’s sessions. Stay tuned for updates, and some photos, too.
Chris Mountford, Automated Browser Performance Testing
Defined as measuring the perceived performance of specific user interaction.
Now we have NodeJS adopting V8 engine in service side context. Performance type characteristics.
Now incredibly creative works are being undertaken, artisan way of working. Working with JS experts, Chris had more of an engineering mindset when building JS applications.
JS is the rhino in the room. We are unable to ignore it; it has to be addressed head on. When speaking with JS developers about processes, answer was always “Performance” (e.g., “Why do we have this weird hack?”)
“Show me the numbers”. How much faster is this making it, or can we be doing something different
“If we have data, let’s look at data. If all we have are opinions, let’s go with mine.”
– Everything is the same but worse
– network time / radio power sleep, steps, etc.
– cpu / battery impact
– standard compliance
-JS Engines (native bind, map, etc.)
-DOM Manipulation (events)
-JQuery (sizzle selectors, micro-optimization)
-Memory leaks (especially as moving into single page app model where app has a longer settling time)
Blocking (comes down to use of the script tag / source)
-Ways around it: document script tag, throwing attribute on top of script tag
-Chrome Dev Tools
An ugly problem = when a layout needs to be partially of fully recalculated and all of the locations / geographies of the page need to be changed. Happens inside of the browser and happens quickly. Very difficult to work out when this is going to happen.
Usually changing colors in a class will often even cause reflow in IE.
There’s a lot more that affects performance:
-CSS Transforms (hardware acceleration?)
-Concurrent request count
-Inline Base64 Encoded resources
JIRA Perf Tests
What is Atlassian doing?
Really missing out if trying to build automatic tests – need to look at HTML or however you make assertions / requests to manipulate the client side — need to make those concrete. What Page Objects do is play the role of mapping structure to an object.
Using Soke Framework:
Has a couple of components: 1) Plugin to Bamboo 2) DB
Making Soke Framework handle warm-up phase.
To help simulate performance tests. Had interactions that mimic what a user would make to determine what to put into a sequence interaction. What would a JIRA user do? What to make app faster for users based on evidence.
Reference point / numerical value to start with, e.g. current performance is X.
More on Soke Interactions:
-Define Timed Sections
-Number of Repetitions (analyze statistics afterward)
-Personas (ways of segmenting tests)
Soke produces charts that show the outcomes of builds or runs of the tests with score (vertical achievements)
-Batching (Atlassian Plugins, no worries)
-Predictive Fetching (guided by Analytics)
-Caching (watch for memory leaks, need to understand what caching validation means)
“I don’t know… it just feels slow,” a JIRA Product Manager
Perception is reality. If it feels slow, it might as well be slow.
Trying to measure human perception is difficult :) Need to have an understanding of the sense that the application is slowing them.
-Ready for Action (When does the USer believe the app is waiting for her?)
-Manual “psycho” event placement (and maintenance!)
-Yardstick tuning against a real system
-Optimisation Example: Execution Recording
Nicola Paolucci, talking about Atlassian Stash
branch – repository permissions (2.0-2.4)
Build Status API (2.1)
git Hooks – Hooks API – Merge Checks (2.2)
Forks – Personal Repositories (2.4)
Changeset Indexer Plugin Module
Watch commit messages or other metadata
Store additional information about commits
Check out Stash Docs for a lot of in-depth information: https://confluence.atlassian.com/display/STASH/Stash+Documentation+Home
Call to action: try writing a hook and be early to the game!
Ian Grunert, deep diving into JIRA Project Templates
When introducing project template, add-ons should be sure to specify a specific use case it seeks to resolve.
Tutorial for writing a project template is up on: developer.atlassian.com
Invoice approvals, asset management are two examples of project templates that Atlassian uses to track invoices and company assets. Kudos project template is another popular example of how they’re choosing projects, directions.
API is a little more constrained than Confluence’s Blueprints, but they are working on 6.1 to 1) open up new project fields so custom features can be added, and, 2) are expanding own project templates to allow for more functionality.
Looking at Atlassian Connect. If you’re looking at building a project template and want to use Atlassian Connect, contact them to help with API.
Why are JIRA project templates not called JIRA Blueprints? They’re not at the same level as Blueprints, but when a better level of maturity is reached with the API, they’re looking to re-brand.
Justus Pandleton talks about Jira State of the Union.
More than 6,000,000 people are using JIRA right now.
Jira 6.0 is a big turning point for Atlassian.
He talks about the importance to use the AUI things that they give us.
velocity templates now get automatic HTML escaping.
Lustworthy Products and Ecosystem
Now you can change your Username in Jira, something that isnðt that big but its a must have. Now you always get a userkey with the user that is immutable.
Do not cache the application user ever. Just to be safe.
In next Jira 6.x releases Atlassian will be doing this to take out SOAP services.
He introduces Jira Project Templates in Jira 6.0. New thing to make thing easier.
In Jira 6.0 they tried to make REST service better and more broader.
The road ahead:
Clustering, they are trying to make clustering as good as it gets.
Make Atlassian Connect better.
“Human software needs to support the needs of humans.” Justus Pendleton, referring to the ability to rename a user in JIRA. JIRA 6.0 resolves this.
JIRA 1549 – ability to rename a user, one of most requested features ever (786 votes), finally resolved in JIRA 6.0. https://jira.atlassian.com/browse/JRA-1549
Project Templates in JIRA
A/B testing has shown that when a project template is included with an add-on, it increases the probability of conversion.
New Rest APIs in JIRA 6, making them broader and richer. Two new use cases: 1) changing JIRA configuration through more improvements; 2) view all statuses in a project in order to build the UI that you need.
Jonathan Doklovic talks about Rhythm-neering in software development instead of engineering.
He starts with a lesson in rhytm.
He talks about 2 things to have in mind:
1. NEVER disrupt my flow, man
2. Does it feel good?
Export your workflow. Now in Jira 6.0 you can export your workflow in one project into another and get something called Workflow bundle.
Once we have our project we should start composing things, like composing Rhytms.
In software development you have constraints like in music.
you should not have to have some external software to run your plugin. then the flow is disrupted.
FAST, FUN and FREINDLY.
Indentify what you need
Get to mess with new things and learn new things at the same time.
Let the original author know he now has a java client to pimp.
Contribute fixes back to the main project.
All of us use the same Disciplines but we just dont know it.
Ryan Thomas, ex-Confluence Developer talks about Confluence design patterns for add-ons to get the most out of your Add-ons for confluence.
In context(Editor patterns)
If the Vanilla macro placeholder isn’t richful enough for you, you can use other placeholders like image Based Placeholder. Easy to retrofit to your existing macros.
Instead of using a macro, add and modify the properties of an image to get the most out of it in thhe editor.
Your macro generates a link when rendered?
Extend the link in Browser Dialog, it simplifies the user expirience.
You’re to Big! (editor patterns)
Your macro has to many parameters?
Write a custom Editor for your macro. Extremely easy to use. setMacroJSOverride function.
Think of the 90%
Think about the 90% of your use cases.
If you are building a macro with number of common parameters, extend the property panel with common parameters.
Your macro has many required parameters?
Think about the parameters you’re making required.
You should think about whether the field is actually required, or should you set a sensible default for it?
Notifacation (Admin patterns)
You have configuration needed to be done by an administrator, create an administration task.
You want to keep your users informed of what’s new when they install your plugin?
Configure a post-install-url for your plugin. It specifies a page that appears after installation or update.
Sherif Mansour, Confluence Product Manager, giving the Confluence State of the Union
Talking about Confluence 5.0 and 5.1
Intuitive header more easily navigable. Improvements to space sidebar enables user to search less, find more easily.
Streamlined Create experience. Global Create button no matter where you are, tells you what you’re allowed to create new documents for what spaces within Confluence.
Confluence Blueprints within 5.1.
Create button, can select from different templates, for example, Meeting Notes, which provides a template of information typically needed. How to dialog, instructional text included to help users get started. Dashboard page shows all types of documents, who created, when, all on one page, which can be edited, labels added, and more.
Blueprints = showing users what they can create, guiding them to create it, and then to structure the content.
Product Requirements Blueprint helps teams collaborate on new product development.
Can build a Blueprint to deal with any external integrations. JIRA Report integration possible.
New add-on category in the Marketplace for Confluence Blueprints.
Confluence Space Blueprints is in the works (coming soon!). Concept of Blueprints at the Space level — how to we help people create Spaces in Confluence? Good opportunity for add-on developers here. Need feedback — if you’re thinking of building an add-on or have an add-on that could work with Space Blueprints, contact Atlassian!
More improvements coming in Confluence 5.2 and 5.3:
More Page Blueprints!
Improved JIRA integration