We create a lot of extensions. Most are small-time plugins or modules for clients, but we do the larger component releases every few months (or try to at least).

Since there is a lot of 'required, but same' code across a component, we created an internal tool to create the framework/skeleton of a component for us. We can input a table name, columns, and a few other niceties and the basic output will be the front-end and admin table, model, and view files which allow for listing and editing the rows in a table. The next step is then to gut this code and start making it do what we want it too.

Our generator is useable to 'us', but not to the rest of the world in its current state. Not sure if anyone would want it anyways. We've also be recently investigating Nooku as it cuts down a lot on the required 'standard' code for an MVC development. However, with library frameworks, there's other concerns we have, though it's very impressive in its current state.

Anyways, really just trying to figure out what other people's best approach to starting a new extension is? Start from scratch, modify something existing, other?

Views: 39

Replies are closed for this discussion.

Replies to This Discussion

Hi Alex,

I also implemented a skeleton for the extensions. I found this is the most easy way to explain the required work also to others. The issue I see with generators is that they work for a specific scenario but if you don't know the background or underlying concepts you might still fall into a trap. As I need the skeletons also for trainings the generator makes to many things that the students need to learn.

I need to do some cleanup for our skeletons but will soon publish them too

Alex
Well, I think we are speaking about 2 different things: "code generation tools" and "rapid application development systems, e.g. Nooku". And I must say they both are necessary and helpful. Having code generation tools don't release you from many headaches while creating your extensions and vice versa, having for example only Nooku in your arsenal don't release you from doing many repetitive tasks with files, packages, etc. Though, if you have at least one of them this is definitely a good help.

Like many of you I have my own library which help me with extensions development, with many files, classes and code. However after discovering Nooku I decided to move on it.

This year I was a mentor and ideologist of Google Summer of Code project called "JDevTools — automated scripts for Joomla developers". This is a code generation tool. The goal is to create a system which can help developers to make many operations with Joomla files, packages, setup tasks and allow them to write their own tasks. I can't describe it better than this presentation: http://community.joomla.org/blogs/community/977-jdevtools-the-way-i... . The development is frozen, because both Jonas (the developer) and I don't have much time now, but we are not going to throw this project out. I'd like to involve more people to it. If you have thoughts/ideas or want to help coding — feel free to contact me at [nesterov.oleg _at_ gmail.com]. Let's make our lives happier :)
Nooku was developed after Joomla! 1.5 was released. It will certainly at least help influence future releases. When developers have had an opportunity to work with software, improvements start to surface. And, essentially, that's the focus of this thread - how can it be easier, still? Nooku helps address that, as do other improvements proposed. I'm still pretty impressed with Martin's approach, too. Looking forward to seeing Alex's work and I still need to check out the GSoC project.

Also, wanted to share another approach from Rodrigo Smania Spillere who joined us today. He is responsible for the JoomGen project and it appears that he automates the development of components, as well, from UML diagrams. It will be helpful to get JoomGen's documentation into English for broader use. Would be nice to find someone interested and able to help with that.

What I hope, very much, is that we can start looking at all of these community driven contributions, find what works and doesn't work as well, and collaborate. If we can, it's pretty obvious the talent is there to do some amazing things.
The people who developed Nooku Framework was not part of the Joomla development team. The framework grew out of a translation component, Nooku Content. Not being part of the core gives more flexibility to set whatever requirements you want to, use cutting edge features from for instance PHP 5.2-5.3, and not have to address backwards Joomla compatibility in the same degree. Alot of people and their extensions depend on the Joomla Framework, so just overhauling it over night would be unrealistic. It's a much larger beast to handle :)
Jonas (the developer of JDevTools) is a former employee of ours that sadly left to go to university. Anything Jonas does will be fantastic indeed and we are exited to see the final result. I just hope that some effort is put into documentation as no one will adapt it without.

We are also the developers of Joomla Component Creator. A very popular scaffolding tool with pure 5 star reviews on the JED. You can see it here: http://www.notwebdesign.com/joomla-component-creator/index.php

But as a scaffolding provider I too much agree that all it does is "copy and paste" the code for you. You still end up with loads of repetitious code that can be a nightmare to maintain.

We have recently joined the secret society called Nooku (you can apply too but beware of the hazing rituals) ;-) And I must say that what little I have seen and experienced so far is very impressive.

If we can deploy (especially the admin part) our components much faster and at the same time keep code to a minimum I am all for it. But there must be excellent documentation and very fast bug fixing response times and flexibility is a must.

All in all it seems to me that there is a huge need for making extension development faster and easier to do.
"All in all it seems to me that there is a huge need for making extension development faster and easier to do."
Very true, the slowdown in the development of the Joomla! framework is perhaps one of the reasons why developers are experiencing this need.
I don't create a new extension every week, so I don't need a generator. Anyway, I don't trust code generators, I only trust my code ! ;-)

I don't have a skeleton of a component, I just take a component I made and copy one model, one view, one controller, one table... and do a find & replace for the extension name, model name etc. Maybe I'll get tired of that method over time, but for now it does the job. It's not very long to do and I don't have a generator or a skeleton to maintain.

For the package, I create a bash script that to the archive.

About Noooku, I never used it. I don't want to relearn how to code an extension, and I don't want to depend on a library. What if there's a bug in the library ? You wait after the Nooku team to fix it ?
If you don't want to relearn code, then perhaps this isn't the industry for you. You can't survive as an web developer if you think you wont ever need to acquire new knowledge.
By using Joomla you're already depending on a library, the difference is these guys fix bugs in hours, not months.
If there's an bug, you report it, if you know how to fix it, you fix it and submit the patch.
That's how the ecosystem works, if you don't like it fine. Don't use it.
I think your method of development is pretty normal. I do that, too. I'm looking for better ways, mainly because it's interesting to me to see what improvements can come. Good point about how interdependent it all starts to get. I think as our architecture becomes more integrated, that will become more of a challenge.

One issue I have noticed with Drupal is it takes awhile for some of the Extensions to be upgraded. If there is a Security upgrade and an Extension is holding you back, then patching becomes a requirement. The beauty and danger of better integration. Always ying and yang, isn't it?
Hazing? lol! Good to hear your feedback, thanks Soren. Have not yet looked at JDevTools, need to do that. Where does the time go?
I never said I don't want to learn anything new ever! I just say I don't want to learn an alternative way of doing an extension that is not the "official" way. I don't say Nooku is bad, but I don't want to rely on a third party extension for making my extensions. What if they decides to stop development? Or charge to use it?

...and I know how the ecosystem works, that's exactly why I don't want to use Nooku. I don't feel like reporting bugs to another team and wait for the fix, don't want to debug their code either.

Don't feel like it's a personal attack, it's just my opinion! :)
Exactly, and I know one day a release will break backward compatibility and that will be a nightmare! Anyway that project is still very young. Maybe future will show I'm wrong, then I'll start using it!

RSS

Badge

Loading…

© 2012   Created by Amy Stephen.

Badges  |  Report an Issue  |  Terms of Service