In the recent OpenMind conference we were discussing how open source projects simply don't die as long as there is an interested user community: Even if the original company or individual who built the application stops working on it, somebody will
... [More]
always rise and start maintaining it.
Last few weeks have been a great example of this. Nemein is the company which originally built the OpenPsa2 suite of project management and CRM tools for consulting companies. In last two years there have been some shifts in strategy, and so we ceased working on the product.
Luckily for our users, OpenPsa has been out under the GNU General Public License since 2004. This meant that while commercial development had stopped, they were able to step in and continue where we left off. It took a while, but during this fall Andreas Flack from Content Control started maintaining the software.
Now the effort is starting to bear fruit. Midgard world has recently settled into a new synchronized release model, and OpenPsa is swiftly catching up with the rest of the architecture. We expect that it may be released with the Ragnaroek 8.09.2 revision.
Good work, Andreas!
[Less]
|
ETech 2009, the O'Reilly conference on emerging technologies now has a call for papers. Here is my proposal for the "Nomadism & Shedworking" track:
The recent direction of business applications has been centralization to web-based systems
... [More]
, easing deployment, upgrades and management of application security. However, at same time centralization provides new risks like the introduction of a single point of failure for application usage and in most cases inability to work offline.
At the same time, working culture has started so shift more towards networked individuals, or "web workers" forming ad-hoc coalitions to work on various projects. For them, centralized applications might not be desirable due to data ownership and infrastructure requirements.
Moving the applications from centralized web servers to a peer-to-peer network allows web workers to be in control of their own data, stay productive even in unstable connectivity situations, and collaborate easily with their colleagues in an ad-hoc way.
This talk outlines some ways to move forward in building peer-to-peer networked business applications. There are many open source frameworks targeting the problem, including replicated databases like CouchDb and Prophet, and application-oriented P2P networks like Swallow/DBE. These will be discussed together with some real-world examples of business applications built with them:
Ajatus - a "Personal CRM" built on top of CouchDb, a RESTful replicated object database
OpenPsa - project management system doing resourcing over the DBE P2P network
Simple Defects - a P2P bug tracking system built on top of the Prophet replicated database
The first phase of P2P business applications will likely be services operating in closed networks of users' social networking or instant messaging contacts. But the P2P model can also provide opportunities for wider networking, making it possible to find new project partners or collaborators anywhere in the world. This wider-ranging business network will introduce new challenges like security and reputation management. Some ideas related to this will also be discussed.
Other interesting projects in this sphere I did not mention are Telepathy Tubes and F2F. We have also had some ideas for how Midgard could do this...
[Less]
|
Over the years we at Nemein have been experimenting with various ways of keeping our operations managed. Now with some personnel changes including Joe's departure it was a good time to change the way we work again.
I had some goals:
Keeping
... [More]
status of different projects up-to-date with more accuracy
Ensuring our sales and project management knows if some project is being blocked by missing materials
Enabling a more distributed, web working culture
We're a small company of less than 10 people, and as such most project management methods have not been very successful for us. In general they have been made for situations where same person or team keeps on working on a project for several months, whereas in our situation a person typically works on several projects every day.
I discussed this over some beers with Tero Heikkinen from Rohea, and he told me how they were implementing Scrum in their small company. While their number of different projects running at the same time is a bit smaller, their situation otherwise is quite similar: same technologies used, Ajatus for work tracking, etc.
We had a company sauna evening and I presented Tero's ideas there: we would partially implement the Scrum model, and keep tuning it to our needs. At the first phase this means:
Every morning we have an all-hands 15-20min meeting ("the daily Scrum") where everybody goes over what they have been doing the previous day, and what they were planning to do today. If they are being blocked by something missing: a software bug, missing information or other materials, this is also brought forward
Every project has a file in Google Docs where we keep the project status and task list (Backlog). This task list is updated based on what comes up in the morning meeting
Work hours are reported with Ajatus. Rohea also uses it for project burn-down charts, and once their add-on for that is finished we may do the same
Emilia, the project manager (or Scrum Master) is responsible for resolving possible impediments and maintaining the per-project status files
The approach we have taken should be quite pragmatic and low-tech. Instead of fancy project management software we use simple word processing for status data. And thanks to Google Docs the documents produced are accessible and editable from anywhere.
Similarly the actual meetings are quite easy to manage. The people who are at the office attend there, and others attend either via a Skype or mobile phone conference call, depending on network availability. We decided to have them at 10am so that everybody will be able to participate. Even if there is a Sprint or meeting scheduled for the same time, the short time needed for our all-hands meeting means it can be held over a "cigarette break".
Ajatus is the only more experimental piece of software in our puzzle. In our company, we use it for hour reporting, expense tracking and keeping meeting minutes. For these it works quite well, although more reporting tools are definitely needed. The alpha status of CouchDb, the database software powering Ajatus has bit us a few times by database corruption (caused by OSX-specific erlang bug) or simply difficult installation procedure, but these problems will hopefully improve over time.
We're now in the second week of this model, and at least the gut feel is that this has improved coordination inside the company. The next challenge then is to let the customer get involved in the process. This can mean just sharing the project status files, or even giving them access to actual meetings or the Ajatus data.
[Less]
|
On the side of FOSDEM we went today to the XMPP devcon held here in Brussels. In there we started formulating our ideas of XMPP publish/subscribe (XEP-0060) based replication for both Midgard and Ajatus.
This post contains very early ideas, but we
... [More]
would be happy to get some feedback on them.
Basic idea
Each Midgard or Ajatus server runs a "synchronization daemon" which is connected to a XMPP server using some JID identity.
The sync daemon registers a set of pub/sub nodes corresponding to the content structure on the Midgard or Ajatus instance:
in Midgard: Sitegroups, MgdSchema types, paths (possibly a regexp), approval state
/midgard_article/all, /midgard_article/approved
in Ajatus: tags
The pub/sub nodes can be set up with some access control rules. For example, Ajatus tags would by default require "whitelist" authorization to subscribe.
When content is changed, the sync daemon gets notified about it (via D-Bus signals in Midgard, and via CouchDb external indexer API in Ajatus).
The content object (and immediate children like parameters and file attachments) is serialized into the syndication format and sent onward as a XMPP "pub" leaf. If the object appears on multiple nodes (multiple Ajatus tags for instance), the "pub" leaf is sent to all of them.
XMPP server and the federated network will then handle notifying the subscribers of the nodes about the new leaf.
The subscribers will receive the leaf, and unserialize it to the Ajatus or Midgard database.
Communication between sync daemon and application
The sync daemon should exist as an entity separate from the actual user application. Communication between the sync daemon and Midgard or Ajatus should happen via the application database.
This means that XMPP pub/sub whitelists for Ajatus tags would be maintained in the ajatus_db (non-replicated) database, and the sync daemon would read them from there. The Jabber server credentials would also be stored in the same database.
Information about resources from jabber buddies
User's replication partners are stored as local contacts in the application database. In Ajatus this means "Contacts" and in Midgard "midgard_person" objects. Both storage models have optional JID field.
If JID is marked for a contact, the sync daemon should at startup (or at an interval) try to discover if the contact has pub/sub resources available.
Content transformation in replication stage
While mainly intended for Midgard-to-Midgard and Ajatus-to-Ajatus replication, the same mechanisms could work across different systems.
For this, the sync daemon on the subscribing end should support XSLT transformations before content is unserialized into the system. The XSLT transformation templates should be configurable per subscription.
Hermod / Hermóðr (Midgard replication)
"in Norse mythology, messenger of the gods. He was a son of the principal god, Odin, and his wife, Frigg. Known as Hermod the Swift, he was called upon by the other gods when they had a task requiring speed and urgency." - Encyclopedia Britannica
Written in Python
Using twisted framework or x60br XMPP library
using standard Midgard MgdSchema object serialize/unserialize methods
How to proof-of-concept before D-Bus? Some watcher in MidCOM? (watcher touches spool file)
PillowTalk (Ajatus and CouchDb replication)
Written on Erlang
Extendable through plugins
Content parsers (Midgard2Ajatus, Ajatus2Midgard)
Security
CDATA JSON block or convert to XML? (Decision of the content parser?)
Technorati Tags: ajatus, midgard, jabber, replication, synchronization, xmpp [Less]
|
MIT Technology Review's 10 Emerging Technologies of 2008 report includes offline web applications as a rising trend. When developing Ajatus, our new P2P personal CRM the offline issue was often in our minds. We even wrote in the manifesto:
Ideas
... [More]
may come to you when you're sitting in a bus, boarding an airplane or visiting a hospital. For a CRM to work the data must be available and editable in any situation.
Having now dogfooded Ajatus for almost two months, I have to say this has been an important aspect. It is powerful to have all your customer and project data with you at all times, and still be able to use it via the familiar web UI.
Offline is useful. You can write your notes in every meeting, update them in train, report expenses as they incur. And most importantly, as long as your computer is running, the application is never down. And still, though replication your data will be safe with your peers or the corporate server.
This is aspect even more important when you start running the app on ultra-portable devices, or go outside the industrialized world.
Technorati Tags: ajatus, offline, web, replication
[Less]
|
While last autumn was more quiet, this spring seems to have a number of events that I'm going to:
Feb 15th - 17th: Midgard developer meeting in Linköping, Sweden. Lots of hacking and talking about Midgard 2 and MidCOM 3
Feb 22nd - 24th: FOSDEM in
... [More]
Brussels, Belgium. I'm going for Open Business Organisations of Europe (OBOOE) meeting on behalf of COSS and Jerry will give a lighting talk on Ajatus
Apr 11th - 12th: Helsinki Media Conference in Helsinki, Finland. I will be talking about attention profiling.
Apr 17th - 19th: FISL 9.0 in Porto Alegre, Brazil. I will be talking about GeoClue
Jun 3rd: ServOSS seminar in Helsinki, Finland. I will be talking about interaction between a company and a free software community
Looking forward to meeting many of you in these events! The July conferences of GUADEC in Istanbul and State of the Map in Limerick sound interesting as well.
It is possible to follow my movements through Dopplr:
Technorati Tags: ajatus, geoclue, obooe
[Less]
|
I've mentioned before that Ajatus is a P2P CRM, but what does that mean? It means that Ajatus has been designed to be a personal tool for information management, but that is has also been designed to help you connect with anyone you need to work
... [More]
with.
The means to that is CouchDb's integrated replication feature. With it you can easily share your Ajatus data with anybody in the network, or just keep your laptop and desktop system in sync.
At the moment we only support full replication over HTTP, but the plan is to support replicating only data with specific tags (for example, only data related to a specific project), and to do it over XMPP.
As things are, here is how you set up Ajatus replication on a Mac OS X system:
First allow CouchDb to talk to the outside world (note: it is a good idea to keep the firewall up when not replicating!):
Then access the CouchDb management console in http://localhost:5984/_utils/ and go to "Replication". Set up the replication paths there. The database you're interested in is "ajatus_db_content" (by default, see advanced setup):
Once you have entered the paths just click "Replicate" and wait a sec. Replication is one way, so remember to also replicate back from the other server!
When replication is done your Ajatus system should have data entered on multiple systems:
My company is now dogfooding Ajatus. At the moment we use it in full peer-to-peer mode, but there are some plans to install a central server for security and backup purposes. I will post some notes on our experiences later this month.
In related news: CouchDb lead developer Damien Katz has been hired by IBM to work full-time on the database. This is great news for both CouchDb and Ajatus. Congratulations!
Technorati Tags: ajatus, couchdb, replication [Less]
|
Barely made it in December, but first beta of Ajatus, the distributed CRM is now available. Enjoy!
Read the installation instructions to get started. Once CouchDb 0.7+ has proper installers available things will be much easier.
Now for champagne... Happy new year from the Nemein team!
Technorati Tags: ajatus, couchdb
|