How hard is it to build/edit a module?
For my charity social network site (http://drupal.org/node/69729 for more info, or check the project blog www.makingthesite.com) I'm thinking about editting or perhaps even making my own module. I have some basic skills in PHP, but never built a big robust site or something with php. I'm also just figuring out Drupal. I'm wondering how hard it is to build and/or edit a module.
For example, in the buddylist module, I'd like to see the picture of someone with their name.
Another thing is that I probably need to build my own content type 'the charity page' that looks and works a lot like a personal page', but is in some other ways more like a groups page. A charity page needs to be made by a person, but it must have 'buddies' of their own. If you are 'buddies' with a charity page, that would mean you are a supporter.
So the question is, how hard do you think are these kind of problems to fix? I have about three weeks, is it reasonable to learn myself how to work with this and be able to make these and more fixes properly?
Julius

Avoid it
Unless you're really into it, it's really much better to avoid creating any custom code of your own. Even after learning how to properly design Drupal modules, your life will turn into one of watching for updates to Drupal code (bugfixes, security updates, required version updates, etc) so you keep your codebase and module up to date.
You're much better off finding a way to do what you need using a core Drupal module. Unfortunately, you can't include unofficial modules such as CCK in this list, since they are subject to changes and the core Drupal developers don't take any responsibility for them, but spend some time reading and asking questions and you may find you can do what you need without having to dedicate a large part of your life to becoming a Drupal coder.
Thanks for the feedback.
Thanks for the feedback.
"..without having to dedicate a large part of your life to becoming a Drupal coder."
It's a proof of concept kind of test version. The idea is that if it works, I'll try to get it built from scratch (not perse in Drupal) to make it really solid and scalable for large numbers. For this same reason I don't worry about the update problems. If it works ok for a couple of months there should be enough to learn from.
How could I find these unofficial modules? I really would like something like pictures with the buddylist for example, how could I find a module that might contain that?
If you just want a proof of concept
I'd just modify core modules as required. You won't be doing proper Drupal development, since the proper way is to leave the core alone, but it will get your code done quickly (though you'll probably experience the joy of adjusting for new versions if you're leaving it online for months). You could use this to add pictures to buddylists.
Unfortunately, there's really no cohesion between taxonomy and profiles so you'll have to hack something together for that too.
"Unofficial" modules are any modules (or themes, etc) that do not come with the core drupal release, http://drupal.org/project/Modules for example. Of course, even core features may become unsupported.
charities == groups
From your description above, it would seem that you could just use the organic groups module for the latter functionality? If you want to change the terminology (group -> charity), use the locale module to substitute in your preferred text: http://drupal.org/node/58610
(though take note that you may want to apply this patch (which should be included in 4.7.3), or download the 4.7-CVS tarball: http://drupal.org/node/65801 )
I'm not sure if groups can
I'm not sure if groups can do everything I like it to do. I'm new to Drupal, so maybe I don't understand everything yet.
The idea is that persons can write evaluations on charity pages (groups) that leads to a average score for that charity. Also it should be possible to see who is supporting this charity, and for the charity to also support other charities. This supporting == buddies, but I thought (and I hope to hear that I'm wrong) that is not possible for groups to have buddies.
Well the overall problem is perhaps that I'm very new to Drupal and find it a little bit hard to estimate what is possible at what time scale. I'm playing around with Drupal and learning how the modules work, and I see it has great potential.
I say go for it....
Of course, if you can do what you want within a core module, that is your first choice. If not a core module, a contributed module. Only then should you decide to build your own.
However, building your own won't necessarily mean building your own "from scratch". The way that the Drupal hook system works makes it particulary convenient to take a given module and then using find and replace change the name of all the hooks (and the module) to something of your own choosing. Bingo! A custom module.
As far as the buddy page concept goes, that seems like it is built into the category module. Once you assign a category for each charity, then if somebody adds an item which is linked to the container which holds your charities, they merely (multi) select the charities at the time the content is created. Again, Bingo, the charities are linked to that item. For example, imagine a structure like:
Container: Charities
Category: Salvation Army
Category: United Way
Category: Girl Scouts
Then, when establishing the Charities container, you select that the container can "hold" content type of type = page (or, if you want to build your own, type = "yourownspecialcontenttype"). Make sure you do NOT check free tagging.
Then when somebody adds a page (or a "yourownspecialcontenttype") one of the choices on the screen will be Categories. Dropping that down, they will find a list of the Categories (charities) they can associate that page with. Select one or more.
Let's assume that the "yourownspecialcontentpage" is something close to, but not exactly, the profile information. That is, everybody is expected to have one and only one of these (you can look for, I think, the BIO module, which already does something like this - that is, it limits each user to exactly one item of type = BIO).
Then you can use the Views module (which will also create menu items at the same time) which display these items as per their associations.
If you don't want to hardcode the views, you can install the category_browser module, which is a sort of "make category views on the fly" type of module.
Again, for example, you could have a view that says: Display all BIO's associated with charity type = Boy Scouts or charity type = Girl Scouts.
In other words, I think Drupal can do what you want almost out of the box. Just have to set things up "the Drupal way" (which I admit I don't totally understand yet) and then let the power of the system work for you.