Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


On 04/02/2013 11:33 AM, Bjoern Michaelsen wrote:
The real purpose of this extension is to be an example on how to write a simple
extension:

  https://plus.google.com/101094190333184858950/posts/dpLf3s6C2r5

Being nonsensical actually help at being an example, because if you write an
example that is actually useful, it tends to feature-creep into something
complex and unwieldy.

As such, I would like to add this extension to:

  http://api.libreoffice.org/examples/examples.html#python_examples

Note that <http://api.libreoffice.org/> links to both the examples that come bundled with the SDK (mainly for traditional reasons) <http://api.libreoffice.org/examples/examples.html> and the new "Additional Examples" repo, <https://gerrit.libreoffice.org/gitweb?p=sdk-examples.git;a=blob;f=README;hb=HEAD>.

It would be great if somebody stepped up as maintainer of all those SDK-related examples.

Also -- and this is a proposal for the ESC to discuss: I would like to remove
the C++ examples there. Im not kidding, April fools is over in my time zone.

I tried hard to make them work and just couldnt get them to build (trying it on
Windows, just to make things more interesting).  Right now, it is orders of
magnitude easier to just work on core repo that to try write UNO-stuff against
a standalone SDK. As contributors might assume otherwise ('If building an
extension is this hard, working on the core product must be impossible') this
kills us possible contributors.

So right now:
- C++ extensions are essentially useless: they have a higher barrier to entry
   than the core product
- Python extensions have the lowest barrier to entry

So my proposal is:
- Remove the C++ example stuff until someone comes along and provides trivial
   to use ones that are easier to build than the core product on all platforms.
- Add more Python examples
- Encourage writing extensions in Python or hacking directly on the core
   product in C++:
   - building C++ extensions are a mightmare to set up right now

Can you be more specific here? Are you talking about building extensions against the LO SDK, in both the C++ and the Python case?

Because, in my experience, it is setting up the SDK that is hard (but is necessary in either case). (And even building the existing C++ examples on Windows works, once you have set up the SDK. I verified that the other day.) But, of course, coming up with working makefiles for new examples, rather than just trying to build existing examples, is a different story---esp. if you want to actually understand what's going on in your new makefile, and not just be a happy cargo-culter and copy/paste from an existing one.

   - even Java is orders of magnitude more complex than Python because of the
     static typing and queryInterface() madness and the lack of Pythons mapping
     of getFoo() methods to properties
   - the migration path into the core product should a extension become part of
     the core product would be:
     - written as a Python extension in RAD mode
     - moved into the core product when qualifying
     - C++ified there, which is easier than doing it out of the product

Just to mention it: In general and for the long-term vision, I favor a core with clean extension points, sufficient to write each conceivable extension as an actual extension, over a model that considers the extension mechanisms as some sort of rapid development test-bed for future core components.

Stephan

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.