[Fwd: [Inkscape-tracker] [ inkscape-Patches-1591723 ] patch to access potrace parameters within inkscape]
Heya, all, this is why it is so good to keep our trackers nice and flowing...check the comments below...and I would like to say a big thanks to Alan and Bulia for spending so much time on cleaning up our trackers...
Keeping the patches flowing is so helpful to bring in developers...
Jon
-------- Forwarded Message --------
From: SourceForge.net <noreply@...34...> To: noreply@...34... Subject: [Inkscape-tracker] [ inkscape-Patches-1591723 ] patch to access potrace parameters within inkscape Date: Fri, 10 Nov 2006 15:40:07 -0800
Patches item #1591723, was opened at 2006-11-07 01:00 Message generated for change (Comment added) made by sgimenez You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=604308&aid=1591723...
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Other Group: None Status: Open Resolution: None Priority: 8 Private: No Submitted By: Stéphane Gimenez (sgimenez) Assigned to: Jon Phillips (kidproto) Summary: patch to access potrace parameters within inkscape
Initial Comment: hi,
I wanted to specify my own parameters when using potrace within inkscape, so i did this patch.
I guess it could be useful to everybody.
note: this patch contains new translatable strings: labels and tips.
Comment By: Stéphane Gimenez (sgimenez)
Date: 2006-11-11 00:40
Message: Logged In: YES user_id=727197
Ok,
- I've added authoring info.
- I put self-explained parameter titles, and parameters labels.
- and I killed unrelated cosmetic diff-hunks from the patch.
Also, I plan to
- provide a rewritten rgb quantization algorithm, cause i
found the current one a bit slow and not enough accurate.
- apply the "turn to monochrome" pass before the
quantization pass in TRACE_QUANT_MONO mode, for improved results.
- find a way not to apply the quantization pass twice (for
the preview and the result) when OK is pressed. But after that, I'd like to help with cleaning up the dialog and do the "advanced" thing :)
And Thank you for such an enthusiastic feed-back ;)
Comment By: Jon Phillips (kidproto) Date: 2006-11-09 19:59
Message: Logged In: YES user_id=914868
Cool, this patch looks awesome! A couple of things...could you add your copyright and real name/email to each file that you touched please. Also, please add your name to the AUTHORS file and include this in your patch.
Also, please add tooltips for the text labels for the 3 items.
After you do this, I will commit the patch...cool! It works great!
Also, I would like to encourage you to submit more patches...also, we would love to expose more features for potrace and include other tracers...would you like to help with this?
We usually take 2 patches and then add a developer, you in this case, to have full SVN access to our project...
Cool?
Comment By: Jon Phillips (kidproto) Date: 2006-11-09 19:43
Message: Logged In: YES user_id=914868
Applied and am testing this one out...looks cool...we can promote the advanced idea after the commit, but more interested in getting it in...
I like the variable names "TurdSize" hahahaha
Comment By: Alan Horkan (horkana) Date: 2006-11-08 16:10
Message: Logged In: YES user_id=402612
while it will be good to make these things possible adding many more controls in the user interface complicates things for ordinary users
any chance the advanced options could be hidden behind a disclosure triangle?
(there are quite a few more things which could be done to clean up the dialog but for the purposes of this patch I dont want to overcomplicate matters)
You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=604308&aid=1591723...
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&da... _______________________________________________ Inkscape-tracker mailing list Inkscape-tracker@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-tracker
One thing: please don't forget to update release notes with anything notable you commit from the patches.
On Fri, 2006-11-10 at 20:07 -0500, bulia byak wrote:
One thing: please don't forget to update release notes with anything notable you commit from the patches.
What I have been doing is applying the patches, and then requiring the patch submitter to write up the release notes before closing the patch. That way, they learn the process...otherwise, I write them a few days later and close the patch...shhh...don't tell the patch submitters ;)
Jon
On Fri, 10 Nov 2006, Jon Phillips wrote:
Date: Fri, 10 Nov 2006 16:00:07 -0800 From: Jon Phillips <jon@...235...> To: Inkscape Development Mailing List inkscape-devel@lists.sourceforge.net Subject: [Inkscape-devel] [Fwd: [Inkscape-tracker] [ inkscape-Patches-1591723 ] patch to access potrace parameters within inkscape]
Heya, all, this is why it is so good to keep our trackers nice and flowing...check the comments below...and I would like to say a big thanks to Alan and Bulia for spending so much time on cleaning up our trackers...
bulia is a little less pleased about the quality of some of my comments but I'm not entirely pleased about the quality of the reports either, especially the anonymous ones, reports with no repsonses at all, or the inherent flaws in the tracker itself like how it doesn't require/encourage duplicate reports to be cross referenced like bugzilla. the erratic quality of my reports is usually due to the mistake of going to the tracker when I'm tired and having no idea if comments will ever be read by reports create a strong disincentive to put more effort in. a short note of thanks from Jon has been a huge incentive to continue. if more people get active in the trackers and help ensure users get some kind of a timely reponse I'll be happy to find something else to do, it does have the advantage of being a task you can spend a few minutes on here and there and still be helpful.
Keeping the patches flowing is so helpful to bring in developers...
The patch tracker in particular is the place to look for people who are already well on their way to becoming contributors. A timely response and more encouragement may be all that is needed to get more patches. A late response or allowing patches to bit rot is not good at all.
Going through the Request tracker and encouraging users can sometimes pay off too. Reports with detailed requirements (but not too many implementation restrictions) and clear examples can make it easier for outside developers to get involved.
In the following report I asked the user (no idea if he was the reporter too) just to try adding a new marker arrowhead.
[ 1576574 ] New marker : triple dashes/dots https://sourceforge.net/tracker/index.php?func=detail&aid=1576574&gr...
When asked for samples and screenshots he willingly made the extra effort to provide them. CVS (or SVN) may be second nature to developers and it might actually be easier sometimes to do it yourself but it doesn't hurt to ask users to try first. If you get lucky and find an interested users it can be better in the long run to explain and teach them a little as these tasks can be quite daunting at first. For very little effort we got ourselves a new contributor.
I'm not always in the best position to identify which bugs really are easy to fix, "low hanging fruit" some projects call them. If developers who do know could take a little extra time to explain how they might implement a solution it can really lower the barrier for new contributors. With projects like the Google summer of code there are clearly identified problems, and in a small way the roadmap helps do this too and indentify things new developers might tackle. Again the google summer of code required designated mentors, and some projects have tried to recreate the sense of mentors in an ongoing way for their project. Perhaps if there was some way I could check who was most familiar with certain areas of the code I could I assing them to certain requests (and when I say assign I would only expect a comment).
Inkscape has been pretty good at marketing and gaining attention but converting that attention into new contributors is a tougher trick and not something most projects are good at.
The list of "Help Wanted" items Aaron Spike suggested is a phenomonally good idea.
Sincerely
Alan Horkan
Inkscape http://inkscape.org Abiword http://www.abisource.com Open Clip Art http://OpenClipArt.org
Alan's Diary http://advogato.org/person/AlanHorkan/
On Mon, 2006-11-13 at 00:04 +0000, Alan Horkan wrote:
On Fri, 10 Nov 2006, Jon Phillips wrote:
Date: Fri, 10 Nov 2006 16:00:07 -0800 From: Jon Phillips <jon@...235...> To: Inkscape Development Mailing List inkscape-devel@lists.sourceforge.net Subject: [Inkscape-devel] [Fwd: [Inkscape-tracker] [ inkscape-Patches-1591723 ] patch to access potrace parameters within inkscape]
<snip />
Inkscape has been pretty good at marketing and gaining attention but converting that attention into new contributors is a tougher trick and not something most projects are good at.
The list of "Help Wanted" items Aaron Spike suggested is a phenomonally good idea.
I've been batting around a couple of ideas that we might be new ways to get developers involved in Inkscape.
I think we should ship with a basic task list and or add this to our about/help menu for easy access to new developers. Also, I wonder on what level we couldn't just say, "coming up next/soon in *THE NEXT VERSION 0.XX*, we need help with these 10 items on our roadmap, here is how you can help with these tasks.
Doesn't it seem like a great opportunity to put within our shipping software, requests for help, hooks for new developers, etc?
I think we should be looking at ways we can do what closed source apps can't do with these types of hooks.
What do you all think about these ideas?
Jon
Sincerely
Alan Horkan
Inkscape http://inkscape.org Abiword http://www.abisource.com Open Clip Art http://OpenClipArt.org
Alan's Diary http://advogato.org/person/AlanHorkan/
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&da... _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
(Please do trim the subject line when it gets ridiculously long)
On Mon, 13 Nov 2006, Jon Phillips wrote:
On Mon, 2006-11-13 at 00:04 +0000, Alan Horkan wrote:
On Fri, 10 Nov 2006, Jon Phillips wrote:
Date: Fri, 10 Nov 2006 16:00:07 -0800 From: Jon Phillips <jon@...235...> To: Inkscape Development Mailing List inkscape-devel@lists.sourceforge.net Subject: [Inkscape-devel] [Fwd: [Inkscape-tracker] [ inkscape-Patches-1591723 ] patch to access potrace parameters within inkscape]
<snip />
Inkscape has been pretty good at marketing and gaining attention but converting that attention into new contributors is a tougher trick and not something most projects are good at.
The list of "Help Wanted" items Aaron Spike suggested is a phenomonally good idea.
I've been batting around a couple of ideas that we might be new ways to get developers involved in Inkscape.
Mission statement isnt the right word for it but it would be great if the idea of "contributors wanted" could be pushed harder so that every user evangelising Inkscape by word of mouth understands that more users is a secondary goal, only as a means to getting more contributors and to a lesser extent promoting the SVG standard.
I think we should ship with a basic task list and or add this to our about/help menu for easy access to new developers.
Sure in debug nightly builds include as much of those sort of things as you want.
Release builds however have a much longer half life. Applictions require lots of testing and the latest versions miss out on distribution deadlines, and older get left in distributions for months, even years with boxed versions. At University things got upgraded about once a year (or worse) so very often we were stuck with versions of software that were in excess of two years old.
Also, I wonder on what level we couldn't just say, "coming up next/soon in *THE NEXT VERSION 0.XX*, we need help with these 10 items on our roadmap, here is how you can help with these tasks.
KDE approaches this principle by identifying Junior Jobs (marked JJ in their bug tracker), tasks which could be implemented by new developers. Abiword used to run what were called Projects of the Week (POW) where tasks where highlighted to encourage new developers to get involved. These survived long after funding dried up but the management overhead required was difficult, especially since it was almost always easier for developers to fix things themselves than teach a new contributor to fix them. These tasks were usually things developers intended to work on themselves but they would specify the requirements first in the hope that someone else might try it and come back to it later and either help the new contributor or do the work themselves as originally planned.
Identifying tasks we "would like to have" but are low priority and which could easily be carried out independantly of and in parallel to Inkscape would be nice. For example I'm talking about tasks like support for new file formats, which although nice are fairly low priority and easily workaround by users. Ideally we would have a list of potential side projects available all the time much like the list of projects for the Google summer of Code.
Doesn't it seem like a great opportunity to put within our shipping software, requests for help, hooks for new developers, etc?
I think we should be looking at ways we can do what closed source apps can't do with these types of hooks.
OpenClipart.org should probably take another look at hooking into inkscape for that other type of contributor. I tried before to create a very basic pattern to advertise OpenClipart.org within Inkscape but perhaps a peice of sample artwork (in the form of a poster or flyer) or some kind of clipart related tutorial would be a good idea. Probably best to wait for the current artwork competitions to finish before pushing ahead with new ones though.
Ubuntu makes a big deal out of including a Translate link in the Help menu of every program. The Uncylcopedia page about Gnome Localisation should be required reading for all. http://uncyclopedia.org/wiki/GNOME_Localisation Technically it is satire but you can read it as a straight damnation of the horrifically convoluted process of translation and how horrifically confusing it is for most users and would be developers.
Before people start gushing over Firefox extensions I have to point out that lopping feature off of Mozilla and hoping people would reimplement them was very poor management which has resulted in lots of mediocre half finished extensions, and they had the luxury of a large user base to throw at the problem. The GNU Image Manipulation Program has resisted the temptation to similar throw out unmaintained scripts and plugins but it has gradually accumulated a whole lot of third party tools because everyone wanted to be included in the main distribution. In theory some fixes can be applied across all plugins but mostly it seems to be a whole lot more maintaince hassle. Seperating out extensions in a managed way and building up a strong collection of third party tools would be great and give new contributors a relatively easy place to get started but I'm not entirely sure how one goes about creating such a thriving community like that. I guess a stable platform is part of it, and an easy delivery system is another.
What do you all think about these ideas?
Well worth discussing in more detail. Hopefully others have seen successful ideas for involving new contributors from other projects they will tell us about, or perhaps tell us what little bit of help pushed them to make some of their earliest contributions.
We've had todo lists, janitor lists, and a roadmap for a long time. They are all wonderful tools but from my point of view they haven't attracted many contributions. (Not to minimize the contributions that have come by way of these lists!) I'd like to do more to put these items in front of people. My first goal is to be more faithful in sumarizing happenings on the dev list in the inkscape.org news. My hope is that by increasing the techiness of the news we can attract more techies.
Does anybody have any idea how many places syndicate the inkscape.org front page news? Any ideas how we can up the count?
Aaron Spike
On Mon, 2006-11-13 at 08:21 -0600, Aaron Spike wrote:
We've had todo lists, janitor lists, and a roadmap for a long time. They are all wonderful tools but from my point of view they haven't attracted many contributions. (Not to minimize the contributions that have come by way of these lists!) I'd like to do more to put these items in front of people. My first goal is to be more faithful in sumarizing happenings on the dev list in the inkscape.org news. My hope is that by increasing the techiness of the news we can attract more techies.
Does anybody have any idea how many places syndicate the inkscape.org front page news? Any ideas how we can up the count?
Aaron Spike
Bryce can point you to it...yes, we need way more news and publicity (and more releases to garner more publicity IMO)
Aaron, would you like to help me on this "hook" strategy?
I think we need to be three-pronged:
1.) front and center on the inkscape.org site, list out top feature requests desired with various levels of skill required
2.) list this inside inkscape as well, or at least link to this list within the menu
3.) cross-promote Inkscape's needs on other sites (openclipart.org, scribus, etc)
Thoughts?
Jon
Jon Phillips wrote:
Bryce can point you to it...yes, we need way more news and publicity (and more releases to garner more publicity IMO)
Aaron, would you like to help me on this "hook" strategy?
I think we need to be three-pronged:
1.) front and center on the inkscape.org site, list out top feature requests desired with various levels of skill required
I'm going to try to write more news. I've got Verbs and PDF on my list. As you think of things throw them my way and I'll write them up.
2.) list this inside inkscape as well, or at least link to this list within the menu
Help -> Contribute
or since Contribute is a loaded word
Help -> Help Inkscape
We should create a page on the website that summarizes everything. I think we should take care to stress that inkscape is a great place to cut your teeth on OSS.
3.) cross-promote Inkscape's needs on other sites (openclipart.org, scribus, etc)
More than just on other sites, in other communities. We need an advocate or representitive in each of the communities we interact with. I think OCAL is already taken care of. It be nice to have a dual agent involved with at least Cairo, Scribus and GTK too.
Aaron Spike
On Tue, Nov 14, 2006 at 07:04:45AM -0600, Aaron Spike wrote:
Jon Phillips wrote:
Bryce can point you to it...yes, we need way more news and publicity (and more releases to garner more publicity IMO)
I've put a lot of thought into how we can increase the number of contributors to the project. I've got some ideas, which I'll enumerate down below...
But first I should mention that I think raw PR by itself - while important and useful - is not sufficient for getting development work done, and has some risk of being counterproductive. I actually think Inkscape has been doing fine at getting visibility (both with formal PR and word of mouth). But as a tool for getting contributors, publicity is sort of a two-edged sword: For every new contributor we get, we also gain increased usership with the correpsonding increase in labor to support them (answering questions, handling bug reports, etc.) Also, we can expect that new users will stick around and continue to require support, whereas new developers may or may not stick around; thus publicity could actually end up increasing the workload on existing developers, rather than offloading them.
I think that we probably actually get a fair amount of "passers by" who _could_ contribute, but for one reason or another don't. Some possible reasons they might have:
* Feel that they don't have... - adequate coding skill - knowledge of inkscape internals - time - authorization - an itch to scratch
* Perceive there is insufficient "ego gratification" - Want full authority over their work - Want recognition/respect
* Fear of having work critiqued/rejected/ignored - Embarrassment - Worry of being shut out - Risk of wasted time - Risk of arguments
* Assumption that other developers will get to it eventually - Feel their time is best spent on other priorities - Seems like an obvious need, surely someone will get to it - Posting a bug report seems "good enough"
So, the key to gaining more developers is to find ways to solve or work around these concerns. Fortunately, many are just misconceptions.
Here are ideas:
0. Invitation to participate ============================= The most effective way to get people involved is just to give them an invitation to try implementing it themselves. E.g., I often ask, "Can you code? Why don't you give it a shot?"
I thing this approach shortcircuts a lot of the above worries or something. In any case, it's easy to do, and it seems to work more often than not for Inkscape.
Be sure to make it a friendly, open ended invitation to do something they have a strong itch to do. Avoid pressuring them or imposing expectations - this can just scare them away.
Note that invitations can be directed at old developers as well as new ones. Sometimes expressing interest in something the old developer was working on, plus encouragement to continue can be enough to stimulate them to do more.
1. Newbie training program ========================== Organize a structured education effort where novices can learn and practice skills in a comfortable environment, where risks are low, and where they feel they are gaining something tangible for their time.
This would require core developers to devote some time to teaching, which includes preparing training material, designing projects, answering questions from students, and doing evaluations.
In exchange for the training, the student would be expected to complete one or two class projects. These projects would be geared towards solving real Inkscape bugs or rfes.
2. "Paint by Number" projects ============================== I think the reason our roadmaps, bug/rfe trackers, etc. haven't worked at getting more people contributing, is because oftentimes the procedure for doing the fix or implementation is extremely obscure.
From my own personal experience, the codebase can be quite difficult to
understand until someone gives you some clear guidelines. Sometimes 90% of the effort is just figuring out *what* to do.
But if an experienced core developer put in 1 hour just describing how to do a task, then later someone with less experience could use that description as a map to doing the solution.
It may seem that this would be inefficient - it may take less total manpower for the developer to just do the work directly. However, for the core developer, they could probably outline several tasks in the time it'd take them to complete one. Even more importantly, the end benefit is that the new developer gains expertise that may enable them to contribute more in the future.
IOW, "Give a man a fish, he'll eat for a day; teach a man to fish, and he'll eat for a lifetime."
An interesting experiment would be for a core developer to spend a day going through bugs or rfes and rather than investigate them, to simply describe the steps they themselves would take to do it, and encourage others to give it a shot. Then later look back and count how many of the tasks were able to be completed by someone else. I bet we'd see a large net gain.
3. Code documentation ====================== As mentioned in the previous item, just figuring out *what* to do can be the bulk of the challenge. Inkscape's rather sparse code documentation tends to contribute to this problem.
I make a habit when studying the codebase, to add comments for each function I go through, to describe what it does and what its inputs and outputs are. This helps me because I have such a crappy memory, but also it should end up helping decrease the amount of work others need to figure out what to do. Maybe reducing the effort from 90% to 80%. ;-)
4. Break functionality out into libraries ========================================== With any coding project, the sheer size of the codebase can pose a hinderance to looking under the hood. The more code, the more intimidating it must seem to a potential new developer.
A possible solution to this is to move core code out into separate (either new or existing) libraries. In addition to reducing our core linecount, libraries can have better defined interfaces. It can also be given sufficient independence from the core codebase that it satisfies the need for control that some desire.
A good general purpose library could be shared between multiple open source projects, and in theory would be able to pull in contributions (or at least ideas) from a wider group.
Of course, there are a whole host of trade-offs to having code in a separate library, so it is important that this be undertaken only if there are dedicated developers and clear boundaries.
5. Emergency calls to action ============================= I put this one last because while can work, it's pretty snarky. As they say, sometimes it's the squeaky wheel that gets the grease, so sometimes in order for a wheel to get greased it first has to get a lot squeakier.
Thus, sometimes putting out complaints about how terrible something is, and how it is being completely ignored, can be effective at drawing people in - particularly 'firefighter' style personalities who like being the hero. Or threaten to take some undesireable alternative action (like closing the project, dropping a buggy feature, etc.)
There is often some political price you must pay for taking this approach: Threats can engender bad will; forcing decisions can risk alienating key developers; making demands can make you seem like a tyrant. Also, there is always the risk you will be seen as "crying wolf", and future calls you or others make may simply be ignored.
Bryce
Bryce Harrington wrote:
- "Paint by Number" projects
============================== I think the reason our roadmaps, bug/rfe trackers, etc. haven't worked at getting more people contributing, is because oftentimes the procedure for doing the fix or implementation is extremely obscure.
From my own personal experience, the codebase can be quite difficult to
understand until someone gives you some clear guidelines. Sometimes 90% of the effort is just figuring out *what* to do.
But if an experienced core developer put in 1 hour just describing how to do a task, then later someone with less experience could use that description as a map to doing the solution.
It may seem that this would be inefficient - it may take less total manpower for the developer to just do the work directly. However, for the core developer, they could probably outline several tasks in the time it'd take them to complete one. Even more importantly, the end benefit is that the new developer gains expertise that may enable them to contribute more in the future.
IOW, "Give a man a fish, he'll eat for a day; teach a man to fish, and he'll eat for a lifetime."
An interesting experiment would be for a core developer to spend a day going through bugs or rfes and rather than investigate them, to simply describe the steps they themselves would take to do it, and encourage others to give it a shot. Then later look back and count how many of the tasks were able to be completed by someone else. I bet we'd see a large net gain.
This has been a huge help for me. Thank you to Bulia and every one else who has taken the time to explain projects to me over and over. I feel like I've gotten some really useful stuff implemented working off your notes and I've learned a lot in the process.
Aaron Spike
I could tell the same of you Aaron : oh not for the user_manual that i've begun the first days of Inkscape (bacause i was doing the one of Sodipodi) but on explaining some pythons extension rules, get some time answer my question, you gave the possibility to do some. Many devs behave as you (jon, Bryce, bulia,...) but some others are more elusive. And that is not enough for a beginner or a person that is feeling himself as a bad coder.
Other thing is that i agree core coding of inkscape a the most important thing, but we should not forget that Inkscape is made for users and that many contribution has to be done in that direction : - documentation (i do a french that i translate to english, but surely not well and it could made in other languages) : i'll recontact R. Joost (Gimps user_doc) that i met during LGM to know what we can improve in that - UI and translation - sample docs
In fact, as mentionnes by bryce, when the number of contributors is increased the time needed to manage them is also growing. If that is coming one day, may be we could take a look at OpenOffice management, because they're used to deal with many contributors of different kind.
pygmee
This has been a huge help for me. Thank you to Bulia and every one else who has taken the time to explain projects to me over and over. I feel like I've gotten some really useful stuff implemented working off your notes and I've learned a lot in the process.
Aaron Spike
Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=D... _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
On Tue, 2006-11-14 at 19:23 -0800, Bryce Harrington wrote:
On Tue, Nov 14, 2006 at 07:04:45AM -0600, Aaron Spike wrote:
Jon Phillips wrote:
Bryce can point you to it...yes, we need way more news and publicity (and more releases to garner more publicity IMO)
I've put a lot of thought into how we can increase the number of contributors to the project. I've got some ideas, which I'll enumerate down below...
But first I should mention that I think raw PR by itself - while important and useful - is not sufficient for getting development work done, and has some risk of being counterproductive. I actually think Inkscape has been doing fine at getting visibility (both with formal PR and word of mouth). But as a tool for getting contributors, publicity is sort of a two-edged sword: For every new contributor we get, we also gain increased usership with the correpsonding increase in labor to support them (answering questions, handling bug reports, etc.) Also, we can expect that new users will stick around and continue to require support, whereas new developers may or may not stick around; thus publicity could actually end up increasing the workload on existing developers, rather than offloading them.
Yes, this is true. I am not advocating raw PR, which is good to get us more visits and news, but not necessarily developers who want to contribute to the project.
I think that we probably actually get a fair amount of "passers by" who _could_ contribute, but for one reason or another don't. Some possible reasons they might have:
Feel that they don't have...
- adequate coding skill
- knowledge of inkscape internals
- time
- authorization
- an itch to scratch
Perceive there is insufficient "ego gratification"
- Want full authority over their work
- Want recognition/respect
Fear of having work critiqued/rejected/ignored
- Embarrassment
- Worry of being shut out
- Risk of wasted time
- Risk of arguments
Assumption that other developers will get to it eventually
- Feel their time is best spent on other priorities
- Seems like an obvious need, surely someone will get to it
- Posting a bug report seems "good enough"
So, the key to gaining more developers is to find ways to solve or work around these concerns. Fortunately, many are just misconceptions.
Cool
Here are ideas:
- Invitation to participate
============================= The most effective way to get people involved is just to give them an invitation to try implementing it themselves. E.g., I often ask, "Can you code? Why don't you give it a shot?"
I thing this approach shortcircuts a lot of the above worries or something. In any case, it's easy to do, and it seems to work more often than not for Inkscape.
Be sure to make it a friendly, open ended invitation to do something they have a strong itch to do. Avoid pressuring them or imposing expectations - this can just scare them away.
Note that invitations can be directed at old developers as well as new ones. Sometimes expressing interest in something the old developer was working on, plus encouragement to continue can be enough to stimulate them to do more.
Yes, this is great. Also, a nice personal touch to this communication helps, as Bryce and I have noticed...make sure to explain how to help rather than just a link dump or pointer to a sole wiki page...
- Newbie training program
========================== Organize a structured education effort where novices can learn and practice skills in a comfortable environment, where risks are low, and where they feel they are gaining something tangible for their time.
This would require core developers to devote some time to teaching, which includes preparing training material, designing projects, answering questions from students, and doing evaluations.
In exchange for the training, the student would be expected to complete one or two class projects. These projects would be geared towards solving real Inkscape bugs or rfes.
I could see how we could do this with extensions and some basic coding in the app. Is anyone interested in this and/or helping with this? This one has a larger time committment, but possibly higher returns.
- "Paint by Number" projects
============================== I think the reason our roadmaps, bug/rfe trackers, etc. haven't worked at getting more people contributing, is because oftentimes the procedure for doing the fix or implementation is extremely obscure.
yes, majorly!
From my own personal experience, the codebase can be quite difficult to
understand until someone gives you some clear guidelines. Sometimes 90% of the effort is just figuring out *what* to do.
Yes, especially with all the migration and refactoring going on...
But if an experienced core developer put in 1 hour just describing how to do a task, then later someone with less experience could use that description as a map to doing the solution.
Yes, especially with really big tasks...this outline would help many many people.
It may seem that this would be inefficient - it may take less total manpower for the developer to just do the work directly. However, for the core developer, they could probably outline several tasks in the time it'd take them to complete one. Even more importantly, the end benefit is that the new developer gains expertise that may enable them to contribute more in the future.
IOW, "Give a man a fish, he'll eat for a day; teach a man to fish, and he'll eat for a lifetime."
An interesting experiment would be for a core developer to spend a day going through bugs or rfes and rather than investigate them, to simply describe the steps they themselves would take to do it, and encourage others to give it a shot. Then later look back and count how many of the tasks were able to be completed by someone else. I bet we'd see a large net gain.
I agree...I wish I knew the complete codebase better, but will start to do more on the tasks I could do. Others, what do you think? Maybe we could make a day for this...like the day of painting by numbers and just use this as our general strategy for bugs for devs. Thoughts?
- Code documentation
====================== As mentioned in the previous item, just figuring out *what* to do can be the bulk of the challenge. Inkscape's rather sparse code documentation tends to contribute to this problem.
Yes, we need better documentation in our code...is anyone interested in helping with this?
I make a habit when studying the codebase, to add comments for each function I go through, to describe what it does and what its inputs and outputs are. This helps me because I have such a crappy memory, but also it should end up helping decrease the amount of work others need to figure out what to do. Maybe reducing the effort from 90% to 80%. ;-)
Yes, completely agree...this is a good guideline too...
- Break functionality out into libraries
========================================== With any coding project, the sheer size of the codebase can pose a hinderance to looking under the hood. The more code, the more intimidating it must seem to a potential new developer.
A possible solution to this is to move core code out into separate (either new or existing) libraries. In addition to reducing our core linecount, libraries can have better defined interfaces. It can also be given sufficient independence from the core codebase that it satisfies the need for control that some desire.
A good general purpose library could be shared between multiple open source projects, and in theory would be able to pull in contributions (or at least ideas) from a wider group.
Of course, there are a whole host of trade-offs to having code in a separate library, so it is important that this be undertaken only if there are dedicated developers and clear boundaries.
Yes, we need to re-examine this idea again...Bryce, you remember our inkcore concept? Yes, with lib2geom, cairo and more, it would be great to get our librarification plans sorted out again.
- Emergency calls to action
============================= I put this one last because while can work, it's pretty snarky. As they say, sometimes it's the squeaky wheel that gets the grease, so sometimes in order for a wheel to get greased it first has to get a lot squeakier.
Thus, sometimes putting out complaints about how terrible something is, and how it is being completely ignored, can be effective at drawing people in - particularly 'firefighter' style personalities who like being the hero. Or threaten to take some undesireable alternative action (like closing the project, dropping a buggy feature, etc.)
There is often some political price you must pay for taking this approach: Threats can engender bad will; forcing decisions can risk alienating key developers; making demands can make you seem like a tyrant. Also, there is always the risk you will be seen as "crying wolf", and future calls you or others make may simply be ignored.
Bryce
Yes, it is good to mention, but we should stay away from these because nothing nor person is dying, so its not really an emergency, right?
Ok, Bryce, this is an awesome list. Lets put some of these into a plan of action. What do others think?
Jon
On Tue, Nov 14, 2006 at 07:48:14PM -0800, Jon Phillips wrote:
- "Paint by Number" projects
============================== I think the reason our roadmaps, bug/rfe trackers, etc. haven't worked at getting more people contributing, is because oftentimes the procedure for doing the fix or implementation is extremely obscure.
yes, majorly!
From my own personal experience, the codebase can be quite difficult to
understand until someone gives you some clear guidelines. Sometimes 90% of the effort is just figuring out *what* to do.
Yes, especially with all the migration and refactoring going on...
But if an experienced core developer put in 1 hour just describing how to do a task, then later someone with less experience could use that description as a map to doing the solution.
Yes, especially with really big tasks...this outline would help many many people.
It may seem that this would be inefficient - it may take less total manpower for the developer to just do the work directly. However, for the core developer, they could probably outline several tasks in the time it'd take them to complete one. Even more importantly, the end benefit is that the new developer gains expertise that may enable them to contribute more in the future.
IOW, "Give a man a fish, he'll eat for a day; teach a man to fish, and he'll eat for a lifetime."
An interesting experiment would be for a core developer to spend a day going through bugs or rfes and rather than investigate them, to simply describe the steps they themselves would take to do it, and encourage others to give it a shot. Then later look back and count how many of the tasks were able to be completed by someone else. I bet we'd see a large net gain.
I agree...I wish I knew the complete codebase better, but will start to do more on the tasks I could do. Others, what do you think? Maybe we could make a day for this...like the day of painting by numbers and just use this as our general strategy for bugs for devs. Thoughts?
Ok, Bryce, this is an awesome list. Lets put some of these into a plan of action. What do others think?
Here's some thoughts on plans around the paint by numbers idea...
1. Select (say) 3 areas in the codebase to focus on, that + There are many bugs/rfe's of relevance + Core developers think are important to be worked on + Won't be too intimidating to novices + Several people already understand moderately well
2. Write up a few paragraphs describing what our objective is, and how to define a "paint by numbers" project.
3. For each area, create a short guide page that collects tips, tricks, links to more info, contact persons, etc.
4. Assemble listings of bugs/rfes in each of the target areas + Group by topic, filter out top priorities, sort by difficulty + Identify ones to be turned into "Paint by Number" projects
5. Recruit the people who understand the areas + Explain what the goal is - getting more developers involved + Email them the stuff from #2 + Ask if they could go through one section of the above list and describe the steps to be taken + Mark items as ready once someone's described them
6. Invite new developers to help undertake the projects + Write posts on our PR channels identifying cool tasks + Recruit from past patch contributors + Recruit from newbies on mailing list or irc channels + Point interested people at the info from #3 + Follow up with them to see if they've run into any issues you could help them with
7. Give thanks to each person who participates
Bryce
On Tue, 14 Nov 2006, Bryce Harrington wrote:
Subject: Re: [Inkscape-devel] Contributors, contributors, contributors.
On Tue, Nov 14, 2006 at 07:48:14PM -0800, Jon Phillips wrote:
- "Paint by Number" projects
============================== I think the reason our roadmaps, bug/rfe trackers, etc. haven't worked at getting more people contributing, is because oftentimes the procedure for doing the fix or implementation is extremely obscure.
Here's some thoughts on plans around the paint by numbers idea...
- Select (say) 3 areas in the codebase to focus on, that
- There are many bugs/rfe's of relevance
- Core developers think are important to be worked on
- Won't be too intimidating to novices
- Several people already understand moderately well
File format support is often a good target since they tend to be desirable but non-essential, and there tends to be an example you can reuse from the other file formats filters (harder to get people to reuse existing libraries though). Breaking down the task list further to very specific features could help, like how the desire for specifc PDF features inspired a lot of work in that area. "A good start is half the work", Bryce has said before that only when the groundwork was laid for a task did others seem ready to help out and we are looking at the same phenomenon again in different ways.
Those colour effects announce recently seem like the kind of feature that once one native version was implemented the work to add more would be incremental and potentially make good tasks.
- Give thanks to each person who participates
Saying thanks is cheap but of great value.
Not something we say often often so let me say again thanks for the software, and thanks to the developers for making this such a great place to puzzle over problems. I love how this project gets the "big ideas" and how discussions like these happen and are actually quite productive.
On Tue, Nov 14, 2006 at 08:39:38PM -0800, Bryce Harrington wrote:
Ok, Bryce, this is an awesome list. Lets put some of these into a plan of action. What do others think?
Here's some thoughts on plans around the paint by numbers idea...
- Select (say) 3 areas in the codebase to focus on, that
- There are many bugs/rfe's of relevance
- Core developers think are important to be worked on
- Won't be too intimidating to novices
- Several people already understand moderately well
In hopes of sparking some discussion, here are some different areas we could pick from:
* Guides, rulers, snapping, and grid * Inkscape Internal API - DOM/verb work * File format converters * Code cleanup - InkscapeJanitors * Gtk/gtkmm goofiness * Renderer bugs * Text and fonts * Whiteboard * Printing
Which three of these sound most interesting to make paint-by-number things around? All of these have a lot of bugs/rfes associated with them, and work in these areas would move Inkscape forward.
Bryce
On 11/17/06, Bryce Harrington wrote:
Which three of these sound most interesting to make paint-by-number things around? All of these have a lot of bugs/rfes associated with them, and work in these areas would move Inkscape forward.
According to my own experience of talking to users, these ones:
* File format converters (people are _begging_ for CDR import) * Renderer bugs (same) * Printing
As for file formats, we have a contributor who is working on an ai2svg Python script. One of core team members (don't remember who exactly) promised to have a look at it.
http://sourceforge.net/tracker/index.php?func=detail&aid=1533789&gro...
Alexandre
On Fri, Nov 17, 2006 at 02:32:30AM +0300, Alexandre Prokoudine wrote:
On 11/17/06, Bryce Harrington wrote:
Which three of these sound most interesting to make paint-by-number things around? All of these have a lot of bugs/rfes associated with them, and work in these areas would move Inkscape forward.
According to my own experience of talking to users, these ones:
- File format converters (people are _begging_ for CDR import)
- Renderer bugs (same)
- Printing
True, although I was wondering more along the lines of what would novice developers find interesting to work on.
Bryce
Alexandre Prokoudine wrote:
As for file formats, we have a contributor who is working on an ai2svg Python script. One of core team members (don't remember who exactly) promised to have a look at it.
http://sourceforge.net/tracker/index.php?func=detail&aid=1533789&gro...
That was me. I looked. I fixed a couple little bugs, but I got to one I'm not sure how to fix. Is the author still willing to work with me on this?
Aaron Spike
On 11/17/06, Aaron Spike wrote:
Alexandre Prokoudine wrote:
As for file formats, we have a contributor who is working on an ai2svg Python script. One of core team members (don't remember who exactly) promised to have a look at it.
http://sourceforge.net/tracker/index.php?func=detail&aid=1533789&gro...
That was me. I looked. I fixed a couple little bugs, but I got to one I'm not sure how to fix. Is the author still willing to work with me on this?
I bet he is :) CCing him this email to make sure.
Alexandre
I think that we probably actually get a fair amount of "passers by" who _could_ contribute, but for one reason or another don't. Some possible reasons they might have:
Good e-mail Bryce.
I think the things you mentioned are some of the really important factors about why people don't contribute. I've been using Inkscape for quite a while, but have never contributed any code to it. (yet) Partly that's because I started using Inkscape before I knew enough about programming to even write a shell script.
I think I just finished fixing a bug/feature and creating a patch today. With the patch, Inkscape automatically converts flowed text to non-flowed text when putting it on a path. I'll attach the patch to the bug tracker after this e-mail. :-) Here's what helped me get to this point and what would have gotten me here sooner.
++ Helped ++
1) Care enough to do it Most important was loving the project. I run Linux daily and use mostly OSS software, but I've never cared enough about any of the programs enough to do more than file the occasional bug report. If I didn't really like Inkscape, I would have just used Inkscape as-is and not worried about it. Inspiring people to care enough about a project to take the time needed is tricky though. :-)
2) Friendly developers community Even though I haven't contributed patches yet, everyone here was still friendly and answered questions. I was on the dev mailing list for a certain other project I like quite a bit, and asked a question about some of the art work which wasn't licenced in a GPL friendly way (it was for non-commercial use only). They practically bit my head off, saying that they didn't care. Needless to say, I don't ever plan on trying to interact with the developers of that project.
++ May have helped me contribute sooner ++
1) Better documentation, especially code comments. As I've poked arround the code for the last couple of months, I've had to use grep extensively and read through lots of functions to figgure out exactly what they are doing.
2) Developer directory Sometimes I've asked questions on IRC and no one online is *quite* sure about the answer to something. Having a sort of "Who's Who of Inkscape" page with a list of active developers, and what parts of Inkscape they work with would make it easier to know who to ask about different things. Even now, I know a lot of people by their handles, and know they're pretty involved in Inkscape but I have no idea what they do exactly. eg. Bulia, ACSpike, mental, rejon, Bryce, Alan (and others) -- I know you guys are always arround, but I don't know who to ask about what, and I don't know who's working on what. Apearantly ACSpike was working on the same thing I was.
3)"Paint by Number" My CS classes have taught me to be an good code monkey, so a paint-by-number type project where what needs to be done is mostly spelled out would have let me contribute a year or so ago. Most of my friends who 'program' are at the same stage. We can easily write the code if the specs are mostly cleanly laid out, but we have a hard time understanding the larger scope of the projects. I've probably been looking at the source code on and off for about 3 months now and was already familiar with Inkscape itself.
4) Some tutorials A newby training program seems to imply deadlines and such. For me at least, that doesn't work so well. Sometimes school and work are intense and I don't even turn on my computer for a week, other times I have a couple weeks of down time. What would work better for me is some tutorials. Basic stuff like how to get arround the SVG tree (access parents, siblings, children), how to manipulate node atributes, how to tell the screen to redraw (needed? I don't know yet), access the current selection, etc.
Thanks,
participants (8)
-
Aaron Spike
-
Alan Horkan
-
Alexandre Prokoudine
-
Bryce Harrington
-
bulia byak
-
cedric GEMY
-
Jon Phillips
-
Michael Moore