
Developer, Implementor
IXIAM
I'm spent a lot of time in project of civicrm and i think that i can contribuite in bugs and development. I see that this weekend is "Bug Smithing Weekend", I will try to collaborate.


Implementor, Developer
Pogstone, Inc.
I have been involved in the CiviCRM community for over 5 years, and enjoy implementing and programming CiviCRM for a variety of non-profits. I have been amazed at the rapid pace of innovation delivered with each new release, and CiviCRM's flexibility in being able to accommodate a variety of requirements. I have learned a lot about CiviCRM by participating in CiviCon, online forums, and CiviCRM book sprint.


Administrator, Implementor, Developer
The Bible Society of South Africa
We are currently migrating to civiCRM. We will be using civiCRM for back office to record contributions, manage donor communication and report on contributions received.
CiviCRM is perfect for us because it is based on contributions


Implementor
BackOffice Thining
CiviCRM is one of the core offerings of our company. Remaining close to the CiviCRM community is important to us, as it keeps us close to new developments in the tool, and allows us to offer our feedback for new releases.


Implementator End User
Green Geeks
Civi is the best! All my non-profit and community outreach activities are well supported by the platform. I love to help others benefit.

Developer & Implementator
IXIAM
It's all about community. I love the CiviCRM philosophy and in IXIAM, we are trying to expand the spanish speaking community in Spain and Argentina


Implementor, Consultant
iXiam
We help organizations with their CiviCRM Projects. From Business consultancy to custom CiviCRM development.


Developer / Contributor
Drastik by Design
CiviCRM has one of the best open source communities out there. It's always a blessing when I get the opportunity to do my next project in CiviCRM.

Developer
Semper IT Inc.
I help non-profit organizations optimize workflows by creating interactive Drupal/CiviCRM websites for them.

End-user, Administrator
City Bible Forum
City Bible Forum is an Australian not-for-profit Christian organisation. We need to communicate effectively with our constituents, and CiviCRM gives us a comprehensive set of tools for managing relationships. Interestingly, we often find that new features are being added just as our need for those features is becoming apparent. It's the right fit for us.


Administrator
Medecins Sans Frontieres Argentina
with the translation Spanish-English of the module and with the up-to-date upgrade of the modules e.g. peer to peer and campaigning


Implementor, Administrator, end-user, Trainer
MC3
I've been working with CiviCRM since 2006 or thereabouts. The community is outstanding in providing support and sharing expertise, which combines with a strong product to enable me in turn to deliver better results for the organisations that I work with. I only hope that over time I will be able to repay the debt by supporting other newcomers to CiviCRM.


Comments
Tim - sounds like a great
Tim - sounds like a great idea - although I'm miles behind you (as usual) on this & haven't even got my head around the new packaging!
We might be in the same spot
FWIW, we might be in the same spot -- we know a bit about the Drupal approach to modules, and a bit about the CiviCRM approach to core code, but this approach is somewhere in between -- it's a new mix of mostly old pieces. It's useful to figure out how common use-cases (eg "declaring a new page" or "adding a new table") play out with this new mix. That requires some reading/thinking/testing. As I started down that path, I wanted to record the results/lessons.
My thinking with "civix" is that the results should be recorded as little metaprograms rather than wordy explanations. The little metaprograms ("civix add-page ControllerName web/path") should be simpler to understand than the explanations ("Update this XML, and create these 2 files, and make sure 5 things match up.")
The approach isn't unique -- I think a lot of frameworks (Rails, Symfony, etc) have new developers get started with similar code-generators. I don't think this feature would ever be as robust with civix as with those those frameworks, but (for the near term) it could be useful in bridging some gaps in our development resources.
Is there a way to port
Is there a way to port existing "drupal but civi only" modules?
It depends on how strictly it
It depends on how strictly it's "only civi". Some expectations:
[Edit] Lobo can probably give some better comments on that... he's been porting "cividiscount" which was a Drupal module.
What if 90% similar?
Hi,
That looks awesome. I was wondering if it's possible to put some CMS specific code too and still benefit from civi extensions?
if it's a function, I can always wrap if into a if function_exists ('drupal_specific') {} ...
that would allow to add elsif function_exists ('joomla_equivalent') by the author of the one wanting to run it on J!
(or implementing a common parent class being overrided by the CMS specific class in the init, like civi does in the core)
For the hooks, is there a way to easily expose some D6/D7/J!/WP specific code containing the hooks to the CMS?
"For the hooks, is there a
"For the hooks, is there a way to easily expose some D6/D7/J!/WP specific code containing the hooks to the CMS?"
That is an interesting challenge. I don't think there's an "easy" way. Some ideas (of varying quality):
I think that's solvable, but it feels like a lower-priority issue -- though I'd be happy if someone proved me wrong.
Let's keep it simple
Agree, way easier to say that it's separate modules.
Would be nice to put in place a convention already. ie. generate a folder CMS (whatever the name) with a README
"Put inside this folder your folders containing Drupal6 Drupal7 Joomla & WP modules that are needed in conjonction of this civicrm extension if needed.
The installation of these modules into their CMS will not be automated but is likely to need symlinks. Please add here the specific instalation instructions"
It is not solving the problem automatically, but at least the specific is going to be stored in the same way by different modules and might make easier the manual steps.
Is it possible to define dependencies (either a version of civi, or module(s) installed on the CMS?
hooks
Hooks are normally prefixed with the module name. How does that work in civi extensions?
Almost the same. Hooks are
Almost the same. Hooks are still implemented as stand-alone functions. The only difference is that you can choose the prefix. Specifically, in org.civicrm.module.cividiscount/info.xml, there's a configurable element:
Did think about it ...
But decided that making it as close to a drupal module (since thats a large part of the developer community) seemed a better decision. A bit easier for those folks to write the drupal extension :)
lobo
extensions have a name also
So the hooks are prefixed with the extension name. so for the cividiscount extension, the
name is cividiscount and its packages under org.civicrm.module.cividiscount (though u could also package it as cividiscount.zip also)
lobo
Support the MIH needed for this!
totten, this is great work - thanks very much.
For others reading this, you might want to help out with the Make It Happen initiative that enables totten's approach to be really useful - http://civicrm.org/participate/mih#cmsagnostic. My company put up $2k as the lead sponsor for this MIH, and only $660 more is needed for it to be fully funded. Developers and consultants in particular should consider contributing since it will make it much easier to get a larger takeup on custom modules and thus share the support needed for them. As well, I see this as a good way to start making more custom functionality available for WordPress and Joomla! installations without having to learn their programming models.
Url:
Followup: Wiki documentation
Just a quick note: The material covered here has been extended on the wiki:
http://wiki.civicrm.org/confluence/display/CRMDOC42/Create+a+Module+Extension