emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* A new module for Org-mode: Org-X
@ 2011-08-14  7:41 John Wiegley
  2011-08-14 17:32 ` Karl Voit
  2011-08-16 17:00 ` Achim Gratz
  0 siblings, 2 replies; 11+ messages in thread
From: John Wiegley @ 2011-08-14  7:41 UTC (permalink / raw)
  To: emacs-orgmode

Hello all,

I've been working a new set of modules for Org to make it easy to associate
Org entries with data in external systems, such as Redmine, Bugzilla,
WordPress, or even your e-mail Inbox.  It's called Org-X, as its meant to
simplify writing linkup code for any system X.

It has two parts: one for users, and one for Org programmers.  The user code
will:

  - create a new entry on the selected remote based on an Org subtree
  - merge changes from all remotes into a subtree
  - push changes from the local subtree up to the remote(s)

For example, I currently use this code with Redmine to simplify creating new
bugs from existing Org tasks, and to push and pull any new comments.

For Org programmers, Org-X provides a data abstraction to ease working with
Org data in a programmatic way.  To add a tag to the current Org entry with
Org-X looks like this right now:

  (let ((entry (org-x-parse-entry)))
    (org-x-add-tag entry "Hello")
    (org-x-replace-entry entry))

Where the value comes in for programmers is that you can "propagate" such
changes to all associated external systems by just passing "t" for the
propagate parameter:

  (let ((entry (org-x-parse-entry)))
    (org-x-add-tag entry "Hello" t))

Without having to know what those remote systems even are.  Of course, Org
itself is a backend, which is why the call to `org-x-replace-entry' is no
longer needed here, since propagation will achieve the same affect.

The set of applicable backends is determined by context, and the appropriate
actions decided upon by each backend who "answers" for a given Org entry.

Anyway, the code is still in the beginnings stages, and in rough shape, with
the API undergoing fluctuations on a daily basis.  But I thought I'd let
people know, as maybe some would like to help flesh out the basics while it's
still so unformed.  My org-x branch is here:

    git clone git://github.com/jwiegley/org-mode.git
    git checkout -t origin/org-x
or
    git remote add -f jwiegley git://github.com/jwiegley/org-mode.git
    git checkout -t jwiegley/org-x

I'm currently working on backends for Redmine, Bugzilla and WordPress, since I
have an immediate need for them; but I also have ideas for others, such as a
backend that creates back-linked Org tasks for every "FIXME" comment in a
source code project...

Thanks, John

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2011-08-16 19:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-14  7:41 A new module for Org-mode: Org-X John Wiegley
2011-08-14 17:32 ` Karl Voit
2011-08-14 22:19   ` John Wiegley
2011-08-15 10:25     ` Karl Voit
2011-08-15 13:23       ` John Wiegley
2011-08-15 12:06     ` Sebastien Vauban
2011-08-15 13:25       ` John Wiegley
2011-08-15 21:29         ` Sebastien Vauban
2011-08-16 17:00 ` Achim Gratz
2011-08-16 19:27   ` John Wiegley
2011-08-16 19:42     ` Achim Gratz

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).