I agree with the points being made, and I struggled with many of the same
problems before. I pushed through mostly by reading the code in Yi, and
using a ghci a lot to look up functions.

Here are some specific documentation and organisational problems which have
caused me grief, even now that I am familiar with (parts of) the yi
codebase. In most cases, a solution is pretty clear, but involves breaking
changes and a considerable investment of time - things I intend to do later,
but not right now. Here's a few points:

   - a number of things are in surprising places. This happens both on the
   level of individual functions and types, as well as modules. Some examples:
      - the module Yi.Keymap has all kinds of important things not related
      to keymaps -- such as the YiM monad, and the YiAction class.
      - similarly, Yi.Buffer.Misc defines the BufferM monad (this should be
      in Yi.Buffer, at least) and the Mode type (this should be in
something like
      Yi.Mode). In general, I find that there are too many modules in
Yi.Buffer,
      and I never know where to look for buffer operations.
      - some modules are at the base of the Yi hierarchy (which suggests
      they are important or fundamental to yi) but are actually modes or other
      extensions. For example: Yi.IReader, Yi.Dired, Yi.Tag, Yi.Hoogle,
      Yi.History.
   - I would like to see the yi modules broken up into the following
   categories: internal yi core, public yi core, yi plugins. The last category
   contains all modules which could be implemented as plugins (i.e. in the
   user's config file), including: all modes, parsers, and utilities like
   Yi.History. This category appears to include around 60% of the yi modules.
   The remaining modules are "core" yi modules, and I would like to see more of
   these be classified as internal modules, such as Yi.Process, Yi.Main and
   parts of Yi.Core, Yi.Editor.
   - a few modules appear to have become "sin bins" for all kinds of useful
   functions. At the least, it would be useful to break these (typically rather
   large) modules up into usefully-named sections, to make it faster to find
   things when looking through Haddocks. Examples: Yi.Editor, Yi.Buffer.Misc,
   Yi.Keymap, Yi.Syntax, Yi.Prelude. Beyond adding sections, it would also be
   very useful to fatten the documentation for these key modules - a task which
   could take a considerable time.

As I said, I intend to make changes along these lines, and some (vague)
point in the future.

Cheers,
Reiner

On 1 September 2011 09:06, Malte Harder <malte.har...@googlemail.com> wrote:

> I recently looked at yi again after having some trouble installing it
> a year ago. I think that the lack of documentation is a real problem,
> there is a lot of functionality already available somewhere deep down
> in the modules, but it took me quite a few hours to get the haddock
> documentation for the latest version, which then explained why my
> configuration wasn't working in the latest version, because the API
> was changed a bit from the last online available haddock.
>
> I think that it already makes a very good Haskell editor and probably
> also a good general purpose text editor. But configuring or writing
> small extensions to it still needs more time than it should,
> especially if caveats for installation/documentation generation are
> not written down in the Wiki and/or are outdated, if sample
> configuration files are kept to a bare minimum and are hidden in the
> repository.
>
> I liked the tutorials I found on
> http://www.nobugs.org/developer/yi/example-helloworld.html
> but they are also for an older version. If you want to join the
> development team a report of the architecture might be a good first
> read. If you want start hack your new editor, you might be more
> interested in some nice tutorials and a lot of examples, and some
> documentation what to expect to be broken with the next update.
>
> That said, I'm not even intending any critique on anybody actually
> dedicating time to develop yi, it's a great effort you're doing. It's
> more explaining what in my experience stopped me actually using it,
> and thus also stopped me from contributing. I think that it has the
> potential to get a much broader user basis and therefore automatically
> a lot more contributers. If I get some progress with my configuration
> I might write some tutorials for the latest version and post them
> somewhere.
>
> Best,
> Malte
>
> On Aug 28, 12:13 pm, Jean-Philippe Bernardy <berna...@chalmers.se>
> wrote:
> > On Sun, Aug 28, 2011 at 12:15 PM, Erik de Castro Lopo
> >
> > <mle...@mega-nerd.com> wrote:
> > > Hi all,
> >
> > > I am having a look a Yi and was wondering if there was any
> documentation.
> >
> > > Specifically, Yi depends on a relatively large number of somewhat
> > > obscure Haskell libraries (eg fingertree, pointedlist, rosezipper
> > > etc). What are these libraries used for?
> >
> > * fingertree: the buffer is stored in a fingertree of bytestrings
> (utf8-encoded)
> > * pointedlist: can't remember (but a pointed list is a simple
> > structure; it's not a "big" dependency)
> > * rosezipper: as far as I remember this is used for the "ide" part of
> > Yi, which I am afraid has become
> > dead wood.
> >
> > > Yi is also supposed to be configurable. Is there any documentation
> > > on that?
> > > Finally is there any design documentation that explains how this
> > > thing is put together?
> >
> > The basics are outlined in my old report:
> http://publications.lib.chalmers.se/cpl/record/index.xsql?pubid=72549
> >
> > Details have changed, but the overall picture remains.
> >
> > Cheers,
> > JP.
>
> --
> Yi development mailing list
> yi-devel@googlegroups.com
> http://groups.google.com/group/yi-devel
>

-- 
Yi development mailing list
yi-devel@googlegroups.com
http://groups.google.com/group/yi-devel

Reply via email to