Re: Lowering the barrier (was: Re: build systems)

2007-11-11 Thread Mikkel Kamstrup Erlandsen
Just a quickie since the kids are screaming :-) : I started a wiki page to
collect the status of this discussion: http://live.gnome.org/EasyGnome

If I missed anything please comment. Heck please comment anyways.

Cheers,
Mikkel
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Murray Cumming
On Sat, 2007-11-10 at 00:43 +0100, Matteo Settenvini wrote:
[snip]
 we need some proper documentation
 explaining how the GNOME stack is built,

jhbuild should take care of building. There is a lot of information
about how to use jhbuild, including solving specific problems on
specific distros.

  and what components fulfill what need

I think this is done:
http://library.gnome.org/devel/platform-overview/stable/
And if something is missing then we now have the document where it
should be added, via simple patches to gnome-devel-docs in svn.

  bringing in concrete examples in the discussion.
[snip]

Maybe this is something that can be improved.


-- 
[EMAIL PROTECTED]
www.murrayc.com
www.openismus.com

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Mikkel Kamstrup Erlandsen
On 10/11/2007, Matteo Settenvini [EMAIL PROTECTED] wrote:


 Il giorno ven, 09/11/2007 alle 16.58 -0600, Jonathon Jongsma ha scritto:
  On 11/9/07, Lucas Rocha [EMAIL PROTECTED] wrote:
   - Are the current drawbacks of using autotools in GNOME so so so
   annoying that it would be really worth the effort of migrating to
   something else?
 
  The only reason I could imagine migrating to something else at the
  moment would be if it lowered the barrier to contribution so that we
  got enough new contributors to offset the amount of work it required.
  I'm doubtful that this would actually happen though, and we'd need to
  be 100% sure that the system we were moving to was an improvement.
 

 Changing subject since I think that the problem of lowering the barrier
 of contribution is crucial to the success of any free software project.

 I would like to discuss with you where we could act seriously in this
 direction.


Good. I am greatly concerned by the alarmingly steep learning curve one has
to endure to be able to contribute to Gnome (without resorting to
Python/Mono).


I've got some comments to make:

 * The GNOME love bugs weren't a bad idea, the only problem with some of
 them was they were boring and you didn't learn a lot from fixing them.
 For example, fixing include file order in headers isn't exactly what I'd
 consider exciting if I were to hack on some part of GNOME. I want
 action! Challenging ideas (but still, feasible ideas)! Furry little bugs
 squashed! Anyway, I'd like to see more bugs marked with the gnome-love
 keyword, and the most popular/new ones should deserve a window in the
 wiki, updated every week for major visibility. Make it a challenge, let
 the agonism arise between teenagers with too much testosterone!

 * The first time I tried to write something with the GNOME stack of
 libraries, I was baffled by ORBit. I simply wasn't able to get anything
 clear out from its documentation. I even didn't understand exactly what
 it was for. Three years, my first year as a CS student, and some beers
 later, I stumbled upon the DBUS specification. It was clear, concise,
 and explained very well to me what DBUS was for. After reading the
 *DBUS* document, I started understanding *ORBit* (which is different,
 obviously, but that gave me the insight). Following Murphy's law, now
 ORBit is being put in a corner :-).
 What I'm trying to say, is that we need some proper documentation
 explaining how the GNOME stack is built, and what components fulfill
 what need, bringing in concrete examples in the discussion. New hackers,
 especially if young and inexperienced like me, really need this sort of
 things to avoid going on a wrong path for months and then discovering
 that what you wrote was already there. That discourages anyone to
 continue.

 * Proper API documentation is still more important. I think that having
 100% symbols documentation should be a priority. I know that no-one
 likes writing it, but it's necessary for all the people out there who
 don't have the willingness to read the code. By the way, the Mono
 library documentation is frankly quite incomplete. Also the Gtkmm one. I
 know of at least three separate CS programming courses in C++ at
 university that chose to use wxWidgets over Gtkmm just because of their
 better documentation (I prefer Gtkmm, but I don't have a problem to
 search also the Gtk+ docs as a fallback).

 * Code a lot of times isn't commented enough. Also static functions in a
 compilation unit should have at least a line explaining why they're
 there and what they're about.

 As you see, most of my problems go with the documentation, and not with
 the code, which usually I find well written - at least, the code *I*
 have read.

 A more strict policy about API documentation would be good news, and
 more abstract (vision, architectural) documentation 'd be wonderful
 news.


I am not sure that enforcing stricter API doc guidelines is going to solve
our problems. Here are the core issues as I see them

ISSUES:

 * GObjects are conceptually difficult when you have standard knowledge of
C# or Java

 * Autotools are exceptionally hard to work with

 * Some parts of the Gnome API are just plain hard to use. Ever tried
implementing a panle applet? Wonder why we have to many apps using tray
icons?

 * General API docs are not as good as they could be. Compare QT4
documentation with GLib to see the point.

 * It is sometimes hard to grok how an application or lib is internally
structured. While
http://library.gnome.org/devel/platform-overview/stable/goes some of
the way describing the platform as a whole, the internal
structure of apps and libs are sometimes elusive.


POINTS OF ACTION:

Here is a list of proposed actions to address some of the outlined issues.
They are intended not impose excessive work load on module maintainers.

 * Write a GObjects for Java/C# Developers document (or maybe two separate
docs) meticulously explaining the concepts of classes and object 

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Emmanuele Bassi
On Sat, 2007-11-10 at 15:06 +0100, Mikkel Kamstrup Erlandsen wrote:

  * GObjects are conceptually difficult when you have standard
 knowledge of C# or Java

you know you don't have to use GObjects with C, right? you can write
native C# and Java applications.

  * Autotools are exceptionally hard to work with

they are not exceptionally hard. they require documentation, and we
don't provide pointers to it in the right places. autotooling an
application or a library takes ten minuts in a basic setup, and if you
require more complex handling then you'll find that all the replacements
will not handle the environment as well (if at all).

  * Some parts of the Gnome API are just plain hard to use. Ever tried
 implementing a panle applet? Wonder why we have to many apps using
 tray icons? 

from a cursory glance in my chat logs of #gnome on irc.gimp.org and
gtk-list archives it seems that everybody start with panel applets; I
started with those as well. it's not hard to write a panel applet: it's
hard to *debug* a panel applet - but that's because of the way panel
applets work.

this doesn't mean that the panel applet API is easy. or, for that
matter, that the entire platform API is easy; we are still missing bits
and pieces (lockdown? desktop state? document models?) and we are still
paying the price of having cruft lying around.

  * General API docs are not as good as they could be. Compare QT4
 documentation with GLib to see the point.

maintainers in glib and gtk+ have been incredibly responsive in pushing
documentation patches; people rarely have to wait a day for a commit
authorisation (insert kudos to Matthias and Tim here). we need more
people fixing the documentation and attaching patches to bugzilla. it's
quite easy.

  * It is sometimes hard to grok how an application or lib is
 internally structured. While
 http://library.gnome.org/devel/platform-overview/stable/ goes some of
 the way describing the platform as a whole, the internal structure of
 apps and libs are sometimes elusive.

you have the code. if the application/library is complicated pester the
maintainers for explanations and submit a patch documenting the nasty
bits. or removing them, if possible.

  * Write a GObjects for Java/C# Developers document (or maybe two
 separate docs) meticulously explaining the concepts of classes and
 object instances compared to Java/C# objects for the lay hacker

this is a false problem: since you can avoid writing GObjects in C and
use native data types instead, what you need to do is refresh the
GObject tutorial.

  * Make Anjuta better at GObject/Ginterface and Autotools handling. It
 is already good, but make it *excellent* 

I imaging that Anjuta maintainers are accepting patches for these
points.

 * Lobby for distributions to create a gnome-developer-studio package
 installing all build deps, documentation, latest anjuta, everything
 you need to hack on Gnome. Pimp those packages on the official Gnome
 pages. 

GNOME already has a development suite; distributions should already have
picked that up.

ciao,
 Emmanuele.

-- 
Emmanuele Bassi,
W: http://www.emmanuelebassi.net
B: http://log.emmanuelebassi.net

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Elijah Newren
On Nov 10, 2007 7:41 AM, Emmanuele Bassi [EMAIL PROTECTED] wrote:
 On Sat, 2007-11-10 at 15:06 +0100, Mikkel Kamstrup Erlandsen wrote:

   * GObjects are conceptually difficult when you have standard
  knowledge of C# or Java

 you know you don't have to use GObjects with C, right? you can write
 native C# and Java applications.

...or python or perl or c++.  I'm an example of someone who never
bothered learning much of anything about GObject, yet have still done
a fair number of contributions.  In fact, my contributions have mostly
been to existing apps/libraries written in C (just avoiding any parts
of the code dealing with GObject).

   * Autotools are exceptionally hard to work with

 they are not exceptionally hard. they require documentation, and we

I'll agree with Mikkel, here.  They are exceptionally hard.  And I
think getting started tutorials which include info on autotools do a
disservice to would-be contributors.  My eyes glazed over lots of
times trying to read such documentation and it definitely hindered my
becoming a contributor.  I eventually figured out that I didn't need
to bother with that mess in most cases (someone else will always
contribute auto-tooling patches), though I did eventually learn a fair
amount and have fixed various issues here and there.

   * Some parts of the Gnome API are just plain hard to use. Ever tried
  implementing a panle applet? Wonder why we have to many apps using
  tray icons?

 from a cursory glance in my chat logs of #gnome on irc.gimp.org and
 gtk-list archives it seems that everybody start with panel applets; I

Not me!  But I agree with the rest of your comments.

   * General API docs are not as good as they could be. Compare QT4
  documentation with GLib to see the point.

 maintainers in glib and gtk+ have been incredibly responsive in pushing
 documentation patches; people rarely have to wait a day for a commit
 authorisation (insert kudos to Matthias and Tim here). we need more
 people fixing the documentation and attaching patches to bugzilla. it's
 quite easy.

I agree with Emmanuele here, though I have some extra comments about
helping out with developer documentation:

I thought it'd only take me a couple weeks of spare time to get up to
speed and start contributing way back when I was getting started.  I
was off by at least an order of magnitude, in large part due to
lacking documentation.  Lacking either because it didn't exist, or
because it was inappropriate for beginners (despite the fact that
everyone would point beginners at these documents).  The documents
that did exist would often waste my time on stuff like autotools,
intltool, popt, gobject, compiling from cvs, etc.  Just give me enough
info to get started on creating *something*!  (I can learn how to
generalize the thing later to handle a11y, i18n, u7y, a1t, portable
building, source control...but let me start by being able to create
something simple I can see now!)  At some point when I (and others)
were complaining about this, Luis suggested that I write such a
document.  Sure, it took me a while to be able to do so as I had to
learn some stuff, and the document I wrote was pretty simple and far
from complete (http://www.gnome.org/~newren/tutorials/developing-with-gnome/,
and is now a little bit out of date too) but I had LOTS of people
thanking me for writing it and saying that it was VERY helpful to
them.

Someone else needs to pick up the torch and write more.  But please
don't waste the time of beginners at the start by making them learn
every possible technology that might be used.  Help them make
something simple.  Then extend it a bit.  Let all the general stuff
come later.  Putting it up front just means  they'll either give up or
take *far* longer to become a useful contributor.

   * It is sometimes hard to grok how an application or lib is
  internally structured. While
  http://library.gnome.org/devel/platform-overview/stable/ goes some of
  the way describing the platform as a whole, the internal structure of
  apps and libs are sometimes elusive.

 you have the code. if the application/library is complicated pester the
 maintainers for explanations and submit a patch documenting the nasty
 bits. or removing them, if possible.

I had the same difficulty as Mikkel, and believe that several people
do.  After learning metacity, I added some documents to try to fix
this.  See

http://svn.gnome.org/viewvc/metacity/trunk/HACKING?view=markup
http://svn.gnome.org/viewvc/metacity/trunk/doc/code-overview.txt?view=markup

Comments I've heard since that time seem to suggest that these
documents have been very helpful for others wanting to contribute.  I
meant to add such documentation for libwnck and bugzilla as well; I
wrote a little bit of information for both (though I only committed
the libwnck stuff; and lost my preliminary bugzilla docs at some
point).  It'd be great to find other volunteers willing to learn a
module and write up such documentation.


Just my $0.02,

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Mikkel Kamstrup Erlandsen
On 10/11/2007, Emmanuele Bassi [EMAIL PROTECTED] wrote:

 On Sat, 2007-11-10 at 15:06 +0100, Mikkel Kamstrup Erlandsen wrote:

   * GObjects are conceptually difficult when you have standard
  knowledge of C# or Java

 you know you don't have to use GObjects with C, right? you can write
 native C# and Java applications.


I realize that I could have been more clear here. What I find problematic is
that the barrier to contributing native code is to high.

I have been putting a lot of time into deskbar in the past and I can not
tell you how many times I've heard oh, great - yet another Python daemon,
or why did you not wrote it in C?.  Setting up a PyGTK project with Python
distutils is extremely easy, and about as low barrier to entry as humanly
possible.

  * Autotools are exceptionally hard to work with

 they are not exceptionally hard. they require documentation, and we
 don't provide pointers to it in the right places. autotooling an
 application or a library takes ten minuts in a basic setup, and if you
 require more complex handling then you'll find that all the replacements
 will not handle the environment as well (if at all).


To me, personally, they where exceptionally hard. My teaching experience
from uni tells me that if one  person thinks something is hard - so do at
least 50% of the class.

Yes, it takes ten minutes to autotool a *basic* setup if you know how to do.
But doing things that are expected for packages like, passing make
distcheck, building gtk-doc, build a few test/examples, install headers or
other files correctly takes a long time if you are not comfortable with
autotools.

  * Some parts of the Gnome API are just plain hard to use. Ever tried
  implementing a panle applet? Wonder why we have to many apps using
  tray icons?

 from a cursory glance in my chat logs of #gnome on irc.gimp.org and
 gtk-list archives it seems that everybody start with panel applets; I
 started with those as well. it's not hard to write a panel applet: it's
 hard to *debug* a panel applet - but that's because of the way panel
 applets work.


Yes, everybody starts with panel applets - but I can name three projects of
the top of my head that ended up resorting to tray icons even though an
applet would be the right solution. I shall not point any fingers though.

this doesn't mean that the panel applet API is easy. or, for that
 matter, that the entire platform API is easy; we are still missing bits
 and pieces (lockdown? desktop state? document models?) and we are still
 paying the price of having cruft lying around.

   * General API docs are not as good as they could be. Compare QT4
  documentation with GLib to see the point.

 maintainers in glib and gtk+ have been incredibly responsive in pushing
 documentation patches; people rarely have to wait a day for a commit
 authorisation (insert kudos to Matthias and Tim here). we need more
 people fixing the documentation and attaching patches to bugzilla. it's
 quite easy.


Yes it is quite easy. GLib and Gtk  docs are quite good actually, but they
are not exceptionally good. I am not complaining; I am only trying to hash
out a strategy for making the learning curve less steep.

  * It is sometimes hard to grok how an application or lib is
  internally structured. While
  http://library.gnome.org/devel/platform-overview/stable/ goes some of
  the way describing the platform as a whole, the internal structure of
  apps and libs are sometimes elusive.

 you have the code. if the application/library is complicated pester the
 maintainers for explanations and submit a patch documenting the nasty
 bits. or removing them, if possible.


Yes that is obviously a solution to the problem - but exactly the solution I
claim have failed (to some extent at least) hitherto.

That is why I suggested the alternative route in my Points of action which
have now been snipped from the mail history. Autogenerate UML and have the
some dev in-the-know write half a page about the structure.

  * Write a GObjects for Java/C# Developers document (or maybe two
  separate docs) meticulously explaining the concepts of classes and
  object instances compared to Java/C# objects for the lay hacker

 this is a false problem: since you can avoid writing GObjects in C and
 use native data types instead, what you need to do is refresh the
 GObject tutorial.


I do not understand what you are trying to say here. That people can just
use plain old structs or that they can use bindings like Java, Python, Mono?


Assuming the latter - that is not the point I am trying to address. I want
to make it easier to hack on the C libraries. Consider for example Gtk's
recent call for extra man power.

Myself coming from a Java background, I can tell you that it was non-obvious
to me how GObjects worked with my (very) limited knowledge I had when
starting getting interested in this whole Gnome business.

  * Make Anjuta better at GObject/Ginterface and Autotools handling. It
  is already good, but make 

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread James Doc Livingston

On Sat, 2007-11-10 at 14:41 +, Emmanuele Bassi wrote:
 On Sat, 2007-11-10 at 15:06 +0100, Mikkel Kamstrup Erlandsen wrote:
 
   * GObjects are conceptually difficult when you have standard
  knowledge of C# or Java
 
 you know you don't have to use GObjects with C, right? you can write
 native C# and Java applications.

While you can write native non-C application, that only applies to new
applications or one already written in such a language. The platform and
many applications are already written in C, so having a document we
could point potential contributors to would be useful.


Cheers,

-- 
To bowl a maiden over:
i. Remove Cover and Extra Cover.
ii. Move fine leg to square leg.
Hmm, I can't seem to think of a way to finish this. -- Sid on RHOD

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Who
On Nov 9, 2007 11:43 PM, Matteo Settenvini [EMAIL PROTECTED] wrote:

 I would like to discuss with you where we could act seriously in this
 direction. I've got some comments to make:


It sounds like at this stage some input from people who have found the
learning curve prohibitive might be useful - so I'll chime in. My
ideas will not be as technical as many people's because I am not far
up that curve, they are more practical suggestions for getting people
at the lowest level - I hope they are useful anyway. My actual
suggestions are prefixed with '***' so you can find them if you just
want to skim :)

Maybe context helps to interpret what I'm writing: I am doing an
Engineering degree, and I have a huge interest in and enthusiasm for
FLOSS. I spent my gap year working writing automation software in C#,
and I have a lot of ideas for things I'd like to try to write for
GNOME. I report bugs when possible and make feature requests, but each
time I do it I wish I could help more. During term I have little time,
in the holidays more, but still limited.

Here are my thoughts:

1. What do you use to code!? What do I need on my system to do
this?--

Coding on Windows makes you soft, especially if you used something
like Visual Studio. There will be a huge number of people in this
position (many CS course teach on Windows), all who could contribute
valuable things to GNOME, I think. One of the first things that
surprised me when heading GNOMEwards (and while trying to avoid Python
and Mono) was that it wasn't clear what kind of workflow people used
for designing and compiling their projects.
Is there an 'agreed upon' workflow - or do people all have different
ideas? A wiki page describing a 'conventional' and successful workflow
or two would be really nice. At my Uni when they teach us to code (ok,
we are only Engineers, not CS students) they give us a fairly
proscribed environment because it makes things faster (it's a little
front-end to gcc that calls emacs for editing called xccmake, if
you're interested :).

*** If someone wanted to make things really easy an IDE with
documentation, assitance debugging and compiling all in one place
could significantly lower the barrier. Failing that a package that
installed all the tools you need (and led you to them), as well as the
very up-to-date dependencies would be nice. It's not clear sometimes
how much of the system you might need to have built from the bleeding
edge to get the bit you are interested in to work properly.

Many times I've thought if I could just get a computer that someone
had compiled this on before I'd be able to get going much quicker! -
why is it not JUST a case of getting then editing the source and
recompiling - because it's never seemed to be that simple

2. Fear of asking questions/uncertainty where to direct
them.--

Though I'm ruining all my effort in this department by writing this, I
think that one aspect limiting my involvement is the feeling that I'm
dumb - that I missed some important page somewhere where it was all
made clear (I didn't, right?) and that I couldn't ask people simple
stuff because the would not take me seriously in the future. Whether
this is right or wrong, I think it is a fear that does exist.

If you're serious about getting new people involved I think a facility
for 'hand holding' could be helpful - especially if some sort of
gradation was possible - naturally people are likely to move from
needing much help to being in a position to give out the same help
they've received. ***'#Gnome-School', anybody? I think one of the
successes of Ubuntu is the way it has provided a more hospitable
environment for newbies.

*** In the case of 'Gnome Love' bugs - perhaps people people could
offer to 'mentor' on them, so anyone needing to ask questions in
attempts to fix them can have a ready contact. I understand, of
course, that time is important and it may well be quicker for that
mentor to fix the bug themselves - even so, perhaps it is worth it?

3. Autotools 

Mikkel is right, it's just not easy! Especially for someone who has
had the details of compiling hidden to them in the past (like many
people who have only worked on Windows)
Anecdotally, when I actually _did_ do some development (not that I
submitted...) I did it on a Compiz plugin and the time investment of
getting auto-tools to compile it (so, not starting from scratch, just
correctly modifying a working system) was more than what I spent
coding.

4. Knowing which examples to use. --

This one I can be less sure of as I don't know enough - but in the
past I have found there are so many examples around it is hard to know
which ones are 'right' - just because something works it doesn't
necessarily mean that I, as a yoing developer, should copy/use it.

*** I wonder if there could be one project (or a few, to cover 

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Emmanuele Bassi
hi;

On Sat, 2007-11-10 at 23:33 +0100, Mikkel Kamstrup Erlandsen wrote:
 On 10/11/2007, Emmanuele Bassi [EMAIL PROTECTED] wrote:
 On Sat, 2007-11-10 at 15:06 +0100, Mikkel Kamstrup Erlandsen
 wrote:
 
   * GObjects are conceptually difficult when you have
 standard
  knowledge of C# or Java
 
 you know you don't have to use GObjects with C, right? you can
 write 
 native C# and Java applications.
 
 I realize that I could have been more clear here. What I find
 problematic is that the barrier to contributing native code is to
 high.

if by contributing native code you mean contributing to the platform
then yes: the barrier is high. the required quality is also high. if you
want to start contributing you might *not* want pushing patches to, say,
gtk+ or evolution, but maybe start with something easier, to get
acquainted with the platform, the policies and the libraries.

that's why we have GNOME Love, with bug days, an IRC channel and a
mailing list.

 I have been putting a lot of time into deskbar in the past and I can
 not tell you how many times I've heard oh, great - yet another Python
 daemon, or why did you not wrote it in C?.  Setting up a PyGTK
 project with Python distutils is extremely easy, and about as low
 barrier to entry as humanly possible. 

not every application has to be in the desktop. writing python (as well
as C++, Perl, Java, C#, Ruby, Ada, whatever) applications is encouraged
nevertheless.



 Yes, it takes ten minutes to autotool a *basic* setup if you know how
 to do. But doing things that are expected for packages like, passing
 make distcheck, building gtk-doc, build a few test/examples, install
 headers or other files correctly takes a long time if you are not
 comfortable with autotools. 

then I guess what you need is getting comfortable with autotools,
instead of avoiding them.

when I say basic setup I mean a basic setup for a GNOME library or
application: gtk-doc, distcheck, examples, tests, pkg-config, etc.. it
takes me now less than 10 minutes because I created a set of templates,
which I guess is what happens with every tool. I usually don't fight
with autotools unless I need to port some arcane setting.

   * Some parts of the Gnome API are just plain hard to use.
 Ever tried
  implementing a panle applet? Wonder why we have to many apps
 using
  tray icons?
 
 from a cursory glance in my chat logs of #gnome on
 irc.gimp.org and
 gtk-list archives it seems that everybody start with panel
 applets; I 
 started with those as well. it's not hard to write a panel
 applet: it's
 hard to *debug* a panel applet - but that's because of the way
 panel
 applets work.
 
 Yes, everybody starts with panel applets - but I can name three
 projects of the top of my head that ended up resorting to tray icons
 even though an applet would be the right solution. I shall not point
 any fingers though. 

if a project chooses to use a tray icon is usually because we don't have
an inter-desktop standard for panel applets, and not because
libpanel-applet is hard.

writing a panel applet requires some magic incantations (mostly, putting
an XML file in the right place), and libpanel-applet is severely
underdocumented.

   * Write a GObjects for Java/C# Developers document (or
 maybe two 
  separate docs) meticulously explaining the concepts of
 classes and
  object instances compared to Java/C# objects for the lay
 hacker
 
 this is a false problem: since you can avoid writing GObjects
 in C and 
 use native data types instead, what you need to do is refresh
 the
 GObject tutorial.
 
 I do not understand what you are trying to say here. That people can
 just use plain old structs or that they can use bindings like Java,
 Python, Mono? 

no, I mean: since people can avoid thinking about GObjects at all and
use native data types in their language of choice, the only time they
need to know how a GObject works is because they are writing something
in C. this means that the GObject native C tutorial must be fixed,
expanded or clarified. if you do not know C, or don't use it, then
there's no need to write a document for understanding a GObject from a
Java perspective - simply because a user of the Java bindings will be
exposed to Java objects.

if you want to contribute to platform libraries you need to understand
of GObject works, not how GObject compares to Perl blessed types, or C#
objects: a GObject is a GObject, it's a different implementation of a
OOP environment.


 I think there is no denying that Gnome development (in native C) has a
 high barrier to entry, and from this thread's subject I think that is
 what we are trying to lower.

yes, it's high. for what I'm now - after three or four years - able 

Re: Lowering the barrier (was: Re: build systems)

2007-11-10 Thread Braden McDaniel
On Sun, 2007-11-11 at 00:37 +, Who wrote:

[snip]

 Here are my thoughts:
 
 1. What do you use to code!? What do I need on my system to do
 this?--
 
 Coding on Windows makes you soft, especially if you used something
 like Visual Studio. There will be a huge number of people in this
 position (many CS course teach on Windows), all who could contribute
 valuable things to GNOME, I think. One of the first things that
 surprised me when heading GNOMEwards (and while trying to avoid Python
 and Mono) was that it wasn't clear what kind of workflow people used
 for designing and compiling their projects.
 Is there an 'agreed upon' workflow - or do people all have different
 ideas? A wiki page describing a 'conventional' and successful workflow
 or two would be really nice. At my Uni when they teach us to code (ok,
 we are only Engineers, not CS students) they give us a fairly
 proscribed environment because it makes things faster (it's a little
 front-end to gcc that calls emacs for editing called xccmake, if
 you're interested :).

Nontrivial development with C or C++ on POSIXy systems practically
demands that you learn emacs or vim. Neither of those editors is
particularly friendly to novices.

My own workflow involves an emacs window with a compilation mode buffer
at the bottom and the top split into two or three panes (depending on
the width of the monitor I'm using). One of those top panes is often a
shell. When I'm debugging, the lower pane is instead used for the
debugger prompt.

Novice developers who aren't ready to bite off emacs or vim can get by
with GEdit, NEdit, or similar. And some may prefer an IDE. (Though my
experience with IDEs, even as a novice, was that I spent more time
fighting the quirks of the IDE than I cared to.)

 *** If someone wanted to make things really easy an IDE with
 documentation, assitance debugging and compiling all in one place
 could significantly lower the barrier. Failing that a package that
 installed all the tools you need (and led you to them), as well as the
 very up-to-date dependencies would be nice. It's not clear sometimes
 how much of the system you might need to have built from the bleeding
 edge to get the bit you are interested in to work properly.

Doing that and maintaining it to be in a useful state takes a *lot* of
effort. More than most persons are willing/able to sustain, I suspect.

 2. Fear of asking questions/uncertainty where to direct
 them.--
 
 Though I'm ruining all my effort in this department by writing this, I
 think that one aspect limiting my involvement is the feeling that I'm
 dumb - that I missed some important page somewhere where it was all
 made clear (I didn't, right?) and that I couldn't ask people simple
 stuff because the would not take me seriously in the future. Whether
 this is right or wrong, I think it is a fear that does exist.

Feeling dumb is a normal part of exploring a new domain. :-) While such
a feeling can reasonably compel you to look for answers on your own (as
well it should), it shouldn't compel you to give up.

Obviously, you don't want to develop a reputation as someone who does
not consult available reference material. But in general, you will be
taken as seriously as your current apparent competency indicates that
you should be. No one (whose opinion you should care about) is going to
hold the occasional naive question against you.

 If you're serious about getting new people involved I think a facility
 for 'hand holding' could be helpful - especially if some sort of
 gradation was possible - naturally people are likely to move from
 needing much help to being in a position to give out the same help
 they've received. ***'#Gnome-School', anybody? I think one of the
 successes of Ubuntu is the way it has provided a more hospitable
 environment for newbies.

If there are persons available to staff such a thing, it's a fine idea.

If such a channel winds up being devoid of knowledgeable individuals, it
would likely be counterproductive.

 *** In the case of 'Gnome Love' bugs - perhaps people people could
 offer to 'mentor' on them, so anyone needing to ask questions in
 attempts to fix them can have a ready contact. I understand, of
 course, that time is important and it may well be quicker for that
 mentor to fix the bug themselves - even so, perhaps it is worth it?
 
 3. Autotools 
 
 Mikkel is right, it's just not easy! Especially for someone who has
 had the details of compiling hidden to them in the past (like many
 people who have only worked on Windows)
 Anecdotally, when I actually _did_ do some development (not that I
 submitted...) I did it on a Compiz plugin and the time investment of
 getting auto-tools to compile it (so, not starting from scratch, just
 correctly modifying a working system) was more than what I spent
 coding.

A huge part of understanding the autotools is just 

Lowering the barrier (was: Re: build systems)

2007-11-09 Thread Matteo Settenvini

Il giorno ven, 09/11/2007 alle 16.58 -0600, Jonathon Jongsma ha scritto:
 On 11/9/07, Lucas Rocha [EMAIL PROTECTED] wrote:
  - Are the current drawbacks of using autotools in GNOME so so so
  annoying that it would be really worth the effort of migrating to
  something else?
 
 The only reason I could imagine migrating to something else at the
 moment would be if it lowered the barrier to contribution so that we
 got enough new contributors to offset the amount of work it required.
 I'm doubtful that this would actually happen though, and we'd need to
 be 100% sure that the system we were moving to was an improvement.
 

Changing subject since I think that the problem of lowering the barrier
of contribution is crucial to the success of any free software project.

I would like to discuss with you where we could act seriously in this
direction. I've got some comments to make:

* The GNOME love bugs weren't a bad idea, the only problem with some of
them was they were boring and you didn't learn a lot from fixing them.
For example, fixing include file order in headers isn't exactly what I'd
consider exciting if I were to hack on some part of GNOME. I want
action! Challenging ideas (but still, feasible ideas)! Furry little bugs
squashed! Anyway, I'd like to see more bugs marked with the gnome-love
keyword, and the most popular/new ones should deserve a window in the
wiki, updated every week for major visibility. Make it a challenge, let
the agonism arise between teenagers with too much testosterone!

* The first time I tried to write something with the GNOME stack of
libraries, I was baffled by ORBit. I simply wasn't able to get anything
clear out from its documentation. I even didn't understand exactly what
it was for. Three years, my first year as a CS student, and some beers
later, I stumbled upon the DBUS specification. It was clear, concise,
and explained very well to me what DBUS was for. After reading the
*DBUS* document, I started understanding *ORBit* (which is different,
obviously, but that gave me the insight). Following Murphy's law, now
ORBit is being put in a corner :-).
What I'm trying to say, is that we need some proper documentation
explaining how the GNOME stack is built, and what components fulfill
what need, bringing in concrete examples in the discussion. New hackers,
especially if young and inexperienced like me, really need this sort of
things to avoid going on a wrong path for months and then discovering
that what you wrote was already there. That discourages anyone to
continue.

* Proper API documentation is still more important. I think that having
100% symbols documentation should be a priority. I know that no-one
likes writing it, but it's necessary for all the people out there who
don't have the willingness to read the code. By the way, the Mono
library documentation is frankly quite incomplete. Also the Gtkmm one. I
know of at least three separate CS programming courses in C++ at
university that chose to use wxWidgets over Gtkmm just because of their
better documentation (I prefer Gtkmm, but I don't have a problem to
search also the Gtk+ docs as a fallback).

* Code a lot of times isn't commented enough. Also static functions in a
compilation unit should have at least a line explaining why they're
there and what they're about.

As you see, most of my problems go with the documentation, and not with
the code, which usually I find well written - at least, the code *I*
have read.

A more strict policy about API documentation would be good news, and
more abstract (vision, architectural) documentation 'd be wonderful
news.

Cheers,
-- 
Matteo Settenvini
FSF Associated Member
Email : [EMAIL PROTECTED]


-BEGIN GEEK CODE BLOCK-
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++ 
P?++ L+++$ E W+++ N++ o? 
w--- O- M++ PS++ PE- Y+++ 
PGP+++ t+ 5 X- R tv-- b+++ DI+ 
D++ G++ e h+ r-- y?
--END GEEK CODE BLOCK--


signature.asc
Description: Questa รจ una parte del messaggio	firmata digitalmente
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list