Friday, March 23, 2018

Lean documentation tooling

Tool mess by Daniel Voina, CC-BY

Lean documentation tooling

Created on 2018-03-21 12:55

Published on 2018-03-23 07:33

In order to get a job well done the tools should be carefully chosen. However tools have to chosen based on the size of the job one's trying to get done. If the job is as massive as digging the Panama channel, a shovel won't help much and also for a flower pot an excavator would be an overkill.

For a software project there are several kind of tools that are used to build and document the project. One important category here is communication and collaboration tools. The typical enterprise collaboration tools is Microsoft Sharepoint or something equivalent, probably Jira. Many of the requirements architecture, design and deployment artifacts are shared between team members and with stakeholders using Sharepoint as a repository for documents, spreadsheets, diagrams, presentations. However the process of editing these artifacts requires a check-out of the file, updating it with some items and then checking it back so that other people can see the changes. This raises a problem because concurrent modifications to a file are hard to do as it involves some kind of merge at document level. Moreover, there are some tools that are not really designed to work in this manner and they have their own internal versioning mechanism (e.g. Sparx Enterprise Architect that is using a database in order to offer some concurrent access to the same model). Also you might need to have the same tool installed at every member of the project in order to effectively be able to contribute with changes so more licenses might hence the costs would rise up.

What I find interesting here would be to increase the collaboration value and lower the total cost of tooling. One excellent example is Wikipedia engine (Mediawiki) that permits thousands of simultaneous users that can read and change the content concurrently. This is also an interesting enterprise approach inside a team because a wiki engine works as a version control for the content it holds. Instead of adding word files it would be easier just to edit some wiki pages, where the edits and merges happen concurrently. Security rules and workflows can be enforced on a wiki. Sharepoint permits the creation of wiki pages so it enables this kind of collaboration. As the information is less constrained in long check-out, modify, check-in cycles it tends to stay more up to date.

How to treat diagrams in this case? In fact diagrams can be treated the same as other textual information. Tools like PlantUML can be used to render diagrams in real time starting from text representations. The text representations of diagrams can be written by any engineer or even extracted from existing code or infrastructure. This information would be quite up to date with the current state of the project and would benefit from all the advantages mentioned above: versioning, merges, etc. There can be even a reverse flow where diagrams can be obtained from code or deployed servers and containers thus documenting live state of systems.

When the content should be given outside the team it can be exported to PDF or another format keeping or even enhancing the format and appearance of the document. For an organization that embraces a devops culture this approach is inline with their philosophy. The documentation and collaboration is part of the production pipeline, is always deliverable and versioned. It can be integrated both in the CI/CD tools as well in the tools (extensions for Eclipse, Idea and Visual Studio are readily available).

The cost for such an approach might be very well close to zero especially when wikis or similar solutions are already in the company. This is not mutually exclusive with engineering solutions as Rational Rose, Enterprise Architect or even Visio. The latter are extraordinary tools with a broader scope than mere collaboration and information sharing as they enable model based development, code generation and other high end features. A lean approach would reduce a high upfront investment in tools and use the expensive licenses on a more rational way, the funds saved this way might be used to bring more value to the product.

Tuesday, March 20, 2018

WebOS Open Sourced means opportunities

WebOS Open Sourced means opportunities

Created on 2018-03-20 17:32

Published on 2018-03-20 20:33

When LG acquired WebOS from HP I was quite skeptical that something interesting can come out from this. WebOS on its own is a powerful platform but it seemed that it did not get the momentum to position itself along Android or ChromeOS at that moment.

The first surprise was WebOS on LG TV sets. The WebOS stack was a huge hit as it offered lots of functionality at a decent speed on a quite restrained hardware. The UI was clean and the HTML + CSS + JS programming model was awesome. It really pushed the development on embedded devices to a new level.

Now LG opened up under an Apache license WebOS (indeed there was another project called OpenWebOS based on the HP source code) and we can see a modular stack that has well integrated components based on Chromium. Maybe EFL libraries from Tizen offer fancier graphics but WebOS offers ease of programming.

The most interesting part of WebOS is its possible ubiquity. It might be able to run on devices ranging from touch and touchless tablets to TV sets, car dashboards to building management, from small devices to virtual machines. It would make quite a nice UI for a fridge or a printer or why not ATM machines. Overall the new platform can improve both the UI and features of products using it as well as reducing the in-house development costs with custom UIs.

Moreover, having a community that sustains the development of this OS would add features quickly in the project and would enable ports on various hardware (I have already seen a port on RPi). A niche for a simple and clean UI is opened in places where a fully fledged OS is too much (Android or something else). Having a web-like programming model without the need for some 3rd party frameworks as Ionic is also a great opportunity as it would make it easier to attract developers on the platform.

This being said, I'm eager to see how WebOs will evolve as I feel it is in a very sweet spot right now.

Friday, March 16, 2018

And here is March already

Worked quite a lot but not on what I would have liked to. Mostly documentation/specs... Boring.

Learnt a little bit of MiniZinc, that was interesting.

Today I have migrated sonar 6.2 to 7.0. that was awesome. The new version is far better, cleaner UI and works like a charm on not-so-great VM. Because this went well I also updated Jenkins and, alas, installed "Blue Ocean". This was kind of unfortunate. Blue Ocean is okay but highly incomplete for an enterprise. I tested it because I wanted something that could outperform M$ TFS 2017 in terms of usability and integration.

The current machines I am building with are:
1. A GitBucket ALM + Repository VM
2. A SonarQube 7.0 VM (standalone only because of Postgres DB)
3. A Jenkins build master VM

All these are 2CPU/4GB RAM/128GB HDD. Probably I should consolidate them on a single, more powerful machine.

4. A MacOS build slave
5. A Windows build slave

In the meanwhile I got fed up with Azure CLI for another project.