User:Philippw/Ideas

Assorted ideas and thoughts.

Dev guide for newbies
Aim: Create a walk-through-style guide on how to get from "I want to contribute code to LO" to "Thank you for your patch! It has been merged to LibreOffice."

Write a Clang plugin for ASCII art
LibO is riddeled with ASCII art. This needs to be removed.

So, write a Clang plugin for that. Start here

Inspiration

Improve extensions/templates website
The current (13/4/2012) state of the extensions website is regretful, especially when compared to what Mozilla has.

Luckily the publish their source code:
 * src of the marketplace website
 * Django template for webapps -> we'd want to use this

We currently use Plone and luckily it's also Python-based. Therefore a migration does not seem too hard.

Benefits
 * Shared maintenance cost with Mozilla people
 * Have a great website to get started with
 * Screenshots, ratings, featured content, categories, user pages, addon collections, recommendations, installation tips
 * Provide an update mechanism for extensions

Disadvantages
 * Need to know Python & Django to do something (still need to see to what degree that is true)

Open questions
 * Does it respect different platforms?
 * How does the update mechanism work? How does it compare to the LO way of doing things?

Improve HTML export further
Use Paul Rouget's |dzslides for HTML export. Make this an extension "HTML5 Slideshow export".

Dev Intro ressources
Some links for a better dev intro experience
 * Björn Michaelsen's talks on SpeakerDeck

Improve Python scripting situation
Next to JS, BeanShell and Basic, LO can be scripted through Python. Unfortunately, it's in dire need of improvement:

Hardly any learning resources available:
 * Lots of info still only available in OO.o-land (OO.o wiki, Forum post, Official OO.o wiki, ,SO post, Calc and Python)

Extension development in Python, Python as a macro language, OOo Python forum link, Py UNO bridge

Lacking integration into LO:

Python macros are not editable from within LO itself (!): see Tools -> Macros -> Organize Macros... (all useful buttons are just grayed out; not very user-friendly). See closed bug #56289 and related StackOverflow question

The Alternative Python Script Organizer extension provides a workaround to the above lack of integration.

The scripts folder (for Linux in /opt/libreoffice4.2/share/Scripts/python) is not editable by the current user as it's the install folder. Which means we can't just open the default system text editor with the file.

Good things:
 * There is documentation (see above links)
 * There are some snippets out there (Calc toolpanel SDK example)
 * There is ooopy.sourceforge.net

Code pointers

 * scripting/source/pyprov/pythonscript.py

Refs:
 * https://datanitro.com/ - Python for Excel
 * https://github.com/jonathanslenders/python-prompt-toolkit - Interactive Python Shell Toolkit

Improve macro info
Current page (Macros) has some problems:
 * Is it a general info page on LO Basic macros?
 * Is a snippets collection (see other macro pages)?
 * Where's the real documentation?
 * Guides, intro and function/API documentation

Persona to think of:
 * Joe Bloggs: Knows MS Office, heard about VBScripts (may have used them in the past). How does he script/use macros in LO?


 * Issues within LO:
 * Scripting vs. macro - what's the difference?
 * No hint for multiple languages ...
 * What's the learning path?
 * Start with LO Basic, but where (see official guides)? How to use api.libreoffice.org?
 * How to cover other languages (esp. Python)?
 * Major fault: Python scripts are not editable from within LO itself
 * Issues outside LO:
 * Where do I find examples? Where's the community?
 * Do we need a code snippets sharing site? (se GitHub Gists?)
 * How do we integrate with AOO? We're still relying *heavily* on their docs ...

Integrate the LO source code docs
Currently split between docs.lo.org and various other places.

No coherent style means unnecessary confusion.

Collect, make it fit together and stream line ux of it for new developer experience.

Steps:


 * Analyse content of READMEs
 * Have in line code -> needs direct formatting
 * Have references to cgit and Doxygen (and wiki)
 * Convert all present docs to .md files manually (shouldn't be that many)
 * Write template, based on the style of |this site
 * Write a script to create the static site from the READMEs
 * Finally: commit it to master and delete old READMEs

Find a way to run it regularly.

Thoughts:
 * No info on how to get started from a LO Basic point of view/how to use documentation (esp. Doxygen)

Improve mkdocs
src: http://cgit.freedesktop.org/libreoffice/core/plain/solenv/bin/mkdocs.sh

Use Multicol

Add to body tag: `class="multi-col"`

Also: make header colour `#00A500`


 * Add a doc info switcher
 * Or just add docs links next to module name in overview?
 * Move to Markdown or Wiki Text for READMEs:
 * Still readable in ASCII alone
 * Fixes ASCII art in https://docs.libreoffice.org/svx.html
 * Fixes line broken endings
 * Needs move to Python for mkdocs script (can be gradual)
 * Or stick with bash https://github.com/chadbraunduin/markdown.bash
 * Move info into LO wiki itself (replace/augment the code overview page)


 * Tooling
 * Improve exec of the tool (current snapshot is from 5/8 ...)

Put Vagrant to good use
E.g. for bug 47653 - Create VirtualBox image to generate stacktraces for crashes

See [www.vagrantup.com Vagrant website]

Replace OpenGrok
Use Etsy's Hound or Debian's Code Search instead.

Still needs feature comparison and some discussion.

Add term Pareto to chart types
Currently called, Column and Line, but really is a Pareto chart. Correct that and make it easier to find.

= Done =

Add Adobe .ase colour palette support
We currently only support the GIMP format; we should also support the (very popular) .ase format (as used by all Adobe products and kuler.adobe.com).

Implementation info:
 * General file format info
 * General info thread
 * Python Reader implementation

Code pointers

 * /svx/source/tbxctrls/Palette.cxx and PaletteManager.cxx
 * Commit adding GIMP palette support

Bug

 * Filed bug #84002

Integrate GDB-dashboard
Use GDB dashboard for something fun.