Develop

From OLPC
Revision as of 07:28, 29 March 2008 by Homunq (talk | contribs) (Roadmap)
Jump to: navigation, search
  english | 日本語 | 한국어 HowTo [ID# 121049]  +/-  
Activity-develop.svg
.xo BundleDevelop.xo
TST {{{1}}}
Trac print.png Tickets all - active - new
Translate-icon-55px.svg Localization
.POT file NEEDED

see more templates or propose new

The Develop activity is the activity for making or modifying other activities. Currently, it comprises a tree view of files in an activity's directory and a python source code editor (tabbed). Other features are actively being worked on.

This is the second incarnation of such an activity. The wiki page for the previous, now broken, version is at Old Develop activity. The old page has discussion of many grandiose planned features, which are worth looking at for ideas, and in general still considered desirable. However, the new version is intended to be developed step-by-step, with small, working features valued over all-encompassing architectures.

WARNINGS

Currently this version only edits activities that are stored in ~olpc/Activities, but that at least means that you can use it to develop itself.

This saves modified versions of activities in the journal. In order to continue editing these saved activity bundles, you need to also install the patched version of the journal called File:DoppelJournal-79.xo.. (<trac>6639</trac>) In DoppelJournal, go to the details page for your saved application bundle, put the mouse over the resume button in the upper right, and wait a fraction of a second until the pulldown shows the options "Develop" and "Start". "Develop" works, but "start" doesn't because bitfrost prevents DoppelJournal from reinstalling the activity.

So in order to open these modified versions, you need to use your regular journal. When you do, you run into <trac>6497</trac>, which means that you cannot run/test your modified activities unless you change the version number in activity.info for each test.

Also, this app has been known to cause TOTAL LOSS OF JOURNAL CONTENTS. The data is still on your XO, in /home/olpc/.sugar/default/datastore1234567890 (your numbers will be different). You can recover this data by copying it onto an external USB and then letting the files be recognized by the journal... (I think, I have not tried this yet. The problem is that the files have no extension, but at least my Ubuntu system can guess the correct file type for most.) I do not understand this bug and am not sure that it still occurs with the latest version of Develop, but you have been warned.

This uses bundlebuilder.py to save its XO files. This means that if MANIFEST is not correct, it can either fail to save, or fail to save all of its files. Again, you have been warned. I have a plan to fix this, it is not too hard.

The other known bugs are very minor issues that I already know how to fix as soon as I get around to it. The F8 (big circle on the XO slider) key is getting grabbed by the window manager in some cases, I have two identical tabs of logs in some cases, and ignore-case in find is unimplemented.

Enough bad things, what is good about it?

It really works! Not just a toy.

Rudimentary version control, using the journal.

Good find/replace support, check out the UI (though there is still room for improvement - search history, shift-fkeys to hard-open the palettes...). F5-F8 (the circle-slider on the XO) are set to: find, find prev, find next, and {set replace or, if replace was set since find, do replace}, respectively.

Ability to view log files from within the app. Better than logviewer, since you can see logs from previous 4 sessions, and the list is filtered to the ones relevant to your app.

Roadmap

Here are some features/bugfixes planned for implementation relatively soon:

  • ignore case
  • search filters file list
  • duplicate log treeviews
  • "keep" button zooms to journal for testing, new logs picked up in logview.
  • MANIFEST is edited programmatically, not manually; warning for files not in MANIFEST with button to add them
  • creating new activities
  • exporting/importing individual (eg. svg) files from the Journal so they can be edited with other activities
  * This will be more useful when there's an activity which can edit SVG files. paulswartz

Here are some larger features which somebody is working on:

Here are some features which may be desirable, but nobody is working on them. Some of these would be enormous projects and will probably never get done. Others may be more feasible than they appear, by just building a Sugar interface on top of existing open-source tools. If you think you can deliver something useful on one of these, move it to the list above and sign your name. Note also that, to avoid feature clutter, any of these features you implement must be well-integrated, with smart defaults and a minimum of configuration.

  • A debugger based on the RPDB2 (winpdb back end) console. This would mean some significant work on providing a context for a running activity - maybe even letterboxing it inside a frame of develop. Homunq 11:26, 5 February 2008 (EST)
  • Class browser, autocompletion, popup function signatures, refactoring aids, and similar code-editing sweets.
  • Bug tracker (would have to allow users to submit bugs to a centralized repository) (this could possibly be worked in with the bulletin board Paulswartz 21:18, 12 February 2008 (EST))
  • Unit testing
  • Doctools
  • Gui designer (with libglade available to all sugar apps?)
  • Source control (ideally much of the functionality should be inherited from the journal - wait for this stuff to make it into the journal first)
  • Activity sharing / Pair Coding (that is, concurrent editing of the same source file. It has been suggested that this should be implemented by replacing the editor widget with an Abiword widget; the Abiword folks have done some work in this direction.)
  • Dynamic reloading of a running activity
  • Visual programming

goals from Eduardo Silva

  1. . Develop being self-sufficient enough to develop (ha!) new activities
  2. . Being able to open other activities from the Journal
  3. . View Source button
  4. . concurrent development
  5. . a way to pass around small piece of Python code

Updates

   * -20 has undo/redo and find
   * -21 has support for jhbuid (thanks to Mike Fletcher), and is refactored a bit
   * -22 has a tabbed editor and a file menu
   * -23 has a new lazily loaded sidebar, can open an external file and create new activities
   * -31 saves in .xo bundle format
   * -32 has find/replace