Am Freitag, 10. April 2015, 06:22:50 schrieb xor:
> On Thursday, April 09, 2015 09:27:32 PM Steve Dougherty wrote:
> > What would we want to direct this development time toward? My opinion is
> > that more code / features is not what Fred needs most right now.
> 
> Full ACK on not having him work on features.
> Semi-Non-ACK on what you suggested he should do, in-depth explanation below.
> First here's my idea what he should do:
> 1. Write package-info JavaDoc for all packages (I think he actually did that 
… <snip lots of other JavaDoc points>
> 5. Write generic documentation and tutorials on the Wiki.

I think that this would be a waste of time, except for the 5th point.

I know that “waste of time” sounds extreme. I say it in such strong
words, because whenever I did something in Fred, it wasn’t lack of
JavaDoc which slowed me down. And for the subset of the code I saw, I
could write JavaDoc myself with a little investigation, so we do not
need toad for this.

What slowed me down was the lack of practical, high level
documentation. Examples:

- How to write a plugin which does anything remotely useful?¹
- What callbacks are triggered when I request a key? And where do they run?²
- Ĥow do Toadlets work? (turns out that that isn’t that complex after all)

¹: See my try at writing a plugin tutorial, putting it off halfway
   because it was getting unbearable: https://d6.gnutella2.info/freenet/USK at 
xqbzQkEGFnFfZH3LG~ut8bjV51o~3nrIXMN3ld5Qjs0,SThdqkHICKxLZvKzMcfK4w04Y4ykcE1~lmQiskpsVqw,AQACAAE/freenet-plugin-bare/5/

²: What does a PutHandler do, where is it fired and why is there a 
JokerPutHandler?
https://github.com/freenet/fred/blob/c314c517e421b683f6676b109b95145151da22fc/src/freenet/client/async/BaseManifestPutter.java#L329

These issues aren’t fixed by JavaDoc.

They are fixed by a Hacking Guide: “For those who come after me.”

At the same time there are quite a few things which only toad can do
efficiently, because only he knows the code well enough to anticipate
the side effects of the changes, or where they have to be wired in.

Note that documenting the API is something completely different than
just throwing in JavaDoc. The FCPv2 documentation in the Wiki is an
example of documentation which works: Whenever I did something with
pyFreenet, that documentation helped enormously.

Something like that for the Plugin API. Maybe focussed to answer the
question “How to write a plugin in such a way that it can easily be
made official?”


I like the idea of packaging. In addition I’d like to see the darknet
invitation bundles become reality. It’s not hard, it’s just complex
and touches lots of parts of fred. We need bundles for multiple
platforms which include one or several noderefs. We need one-time
tokens to avoid requiring an initial noderef exchange, we need darknet
FOAF routing. All this has been planned in detail in the
bugtracker. And it can be done in small, self-contained steps which I
would think that toad can do over summer.

Packaging makes opennet easier: apt-get cannot give you darknet
references. That’s useful, because it can give us many more users, and
it makes it easy for developers to use Freenet as communication
backend: Just add a dependency when you package your program.


Together this would give tangible deliverables:

- A HACKING guide: “For those who come after me”.

- Documentation for the Plugin API which is easy to follow and answers
  the question how to create a plugin we can easily make official.

- A package for Debian, maybe also for Fedora. Together those should
  cover most distros.

- The ability to create bundles from the web interface which allow one
  friend to connect without further non-freenet communication.


3 weeks each would give solid 12 weeks of full-time work.

Best wishes,
Arne
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 299 bytes
Desc: This is a digitally signed message part.
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20150410/32e4d016/attachment.sig>

Reply via email to