Developers

From iJournal

iJournal™ is an open-source project coordinated by Cryo. The source license is the standard BSD license, and you are welcomed to contribute patches to the project to improve it for everyone. If you are contributing large changes, you should consider becoming a developer to patch the source tree directly. We welcome code audits and suggestions for improvements.

Contents

Help Wanted

  • people who can design icons and other graphics
  • people who can create nice webpages
  • people who can write user documentation
  • people who are familiar with XCode, Interface builder, COCOA, Objective-C
  • people who can put together releases

You can submit icons and other graphics by simply uploading file images to the wiki.

If you want to do documentation, you can simply start typing them up in the [Documentation] area.

The Source

  • Using CVS

CVS access is available through pserver access. More information is available here at SourceForge.

  • Downloading a "tarball" of the nightly source tree

Not implemented yet.

  • CVS changes monitored here.

Developing for iJournal

You need to know how to use CVS. There are documents available on SourceForge to help with that. You need to get a SourceForge developer account. You can get this from the http://www.sourceforge.net website. You need to read. There are specific things you need to do to get the SourceForge CVS machine to like you. You'll need to 'modify' your system a little, such as having ssh configured and probably:

[instein:/usr/bin] billc% ls -l rsh*
lrwxr-xr-x 1 root wheel 3 May 13 10:09 rsh -> ssh
-r-sr-xr-x 1 root wheel 14912 May 3 02:43 rsh.old</br>

Otherwise PB will have problems with synching up with the CVS server and will be happy to inform you of this. You'll have to do the initial checkout from a shell since PB doesn't support actually checking it out. From that point, you will be able to use that directory to work in with PB. It'll handle letting you know that there are changes in the repository.

You can avoid the above by getting SSHPassKey off of VersionTracker.

You -must- subscribe to the ijournal-cvs mailing list. This is available from the project website at: http://www.sourceforge.net/projects/ijournal

NOTE: any source code changes checked in, will be emailed to the ijournal-cvs list, so if you want to keep up on who is doing what, that's the way.

Once you get the source down, you'll be able to make changes and commit those back to the repository. The trunk of the repository is for our development. Releases will be branched as needed.

We are a feature-based release project, not time-based. Our feature goals at this time are to match the current Win32 and LogJam client versions.

1.X Development Roadmap

  • 1.70 target
    • - "tags" support added
    • - user pics (images) Image:ijwork.png
    • - setting for screening comments
    • - find out why the preferences plist sometimes gets corrupted
    • - find out what's up with the challenge/response code
    • - fix any outstanding bugs that may still be in the SourceForge bug tracker and not in Bugzilla

2.X Development Roadmap

2.X Development is currently happening on the DEVEL_1 branch in CVS

  • 2.0 target
    • Controller/GUI layer (Tech lead: Chris Wolf <cwolf@mac.com>)
      • - cwolf: create new IJPreferences class to enacpsulate user-defaults
      • - cwolf: move preferences GUI into it's own PreferencesController and Preferences.nib
      • - cwolf: create new AppController class and clean MainMenu.nib
      • - cwolf: create new PostWindowController class and Post.nib for the main posting UI
      • - cwolf: create new Document class to use as basis for saving/archiving
      • - cwolf: enable multiple documents/window-controller
      • - cwolf: clean up the Post window GUI
      • - cwolf: implement graphical picture selection
      • - cwolf: create IJAccount object for sharing account-specific info across multiple controllers
      • - cwolf: create new Accounts pane in preferences window for editing/managing accounts
      • - cwolf: create new LoginSheetController to manage account selection GUI and password entry
      • - cwolf: re-write keychain code to use non-deprecated APIs and encapsulate it in IJAccount
      • - cwolf: make IJAccount keep wrap the PostNode object and post notifications rather than callbacks so that multiple controllers can all share a PostNode object for the same account
      • - cwolf: re-factor and un-break friend checker and notification
      • - cwolf: simplify the ToolbarDelegate code and move it into PostWindowController where it belongs
      • - cwolf: re-factor HTMLPreview code - move some into LiveJournalPostNode and some into PostWindowController
      • - cwolf: fix the menu-validation code in PostWindowController
      • - cwolf: simplify/re-factor iTunes/iTunesProxy/iTunesServer so it's all one class/object which can be shared
      • - cwolf: move friend-group editor into it's own window controller/nib and rework GUI for friend-group editor so it's more intuitive
      • - cwolf: add back-dating sheet with date-picker to Post window
      • - cwolf: modify Post Window GUI to allow security setting of multiple friends group
      • - cwolf: think about ways to simplify PostWindow GUI... can some rarely used controls be moved to an Options sheet or be made into toolbar buttons instead?
      • - cwolf: clean up various "helper" controllers used by PostWindowController and make them categories on PostWindowController instead
      • - cwolf: add a preference for selecting which account we should auto-login to
      • - restore archive functionality so that posts will be saved automatically to the specified directory when
      • - update Services code to work with new document architecture
      • - update the Document class to import old .ljarchive formats
      • - fix the version-checking code and invoke it automatically at startup
      • - switch everything to using NSLocalizedString and generate Localizable.strings file
      • - switch to using a standard about panel
    • Model/Protocol Layer (Tech lead: Jeff Disher)
      • - support for LJ tags
      • - fix remaining TODOs and XXXs which _can _ be fixed at this time
      • - eventually simplify the protocol abstraction interface into one master protocol cache which will be able to manage multiple protocols at once and will do away with the over-complicated IJServerResponse mechanism (instead I want all requests issued, asynchronously, to the cache and it will send a callback after the runloop (right away if cached or after fetching if not available or stale))

Long Term Development Roadmap

Longer term goals which are not yet targetted/planned for any particular release:

  • History support
  • Identity LJ protocol support
  • Plug-in API and Plug-in SDK
  • Make LiveJournal support into a plug-in
  • Create Plug-ins for other blogging services
  • Allow posting one entry to multiple blogging services
  • psuedo-WYSIWYG editing using an attributed string in the edit text view so that you never see raw HTML code getting inserted into the text (and reducing the need for a separate preview mode.)
  • drag-n-drop insertion/editing of pictures/files in a post-body so that the link gets inserted automatically and the file gets uploaded automatically to a server somewhere (.Mac? warped? other servers configured by the user)