Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.6 Roadmap #518

Open
trabisdementia opened this issue Mar 4, 2017 · 7 comments
Open

2.6 Roadmap #518

trabisdementia opened this issue Mar 4, 2017 · 7 comments
Labels

Comments

@trabisdementia
Copy link
Contributor

I think Xoops could do so much more if it was using a MVC or ADR design. Blocks as Widgets, namespaces for modules, URL rewriting, this are all features that, IMO, require a shift to a new design.
I think we should not attempt to write this design from scratch and I also think that picking a library from here and another from there is not a good solution.

In the past we agreed on using Zend framework as the backbone of Xoops but, for several reasons, it did not worked well.

Today, and after much reading, I think Yii2 would be a good fit for Xoops. Not for 2.6, but for the next major version that would follow it.

What I am trying to say is that, if we do implement MVC in 2.6 series, we should first agree with which Framework we are planning to use in the future. For example, if we choose to use Yii2 (which I vote for), we should built our MVC using the same interface as Yii2.

I also would like us to consider releasing 2.6 without making any more drastic changes and remove the above mentioned features from the roadmap.

We should design Xoops 3 not having backward compatibility in mind, with the exception, perhaps, of the database structure.

@redheadedrod
Copy link
Contributor

redheadedrod commented Mar 4, 2017 via email

@alain91
Copy link
Contributor

alain91 commented Mar 5, 2017

There is a difference between MVC and framework. Xoops has some kind of MVC but the core is not fully based on a Framework. The 2.6 introduce Symfony component and if we want to modify the core I suggest to use Symfony component too.

@geekwright
Copy link
Contributor

Interesting thoughts.

One flaw in some of the thinking is that backward compatibility is optional. It is not going to be 100%, but it needs to be enough to allow a great portion of existing modules to work with minor changes. It is a pain in the ass. But, it is our saving grace:

Customers are more valuable than code.

The customer base, user base, or however you want to describe it, needs function. We will loose if we forget that.

We will use a generational approach. "2.6" will only be tuned to work with code which already worked well with 2.5.9. I'm not suggesting anything further than one generation back, but there has to be continuity. Modules need time to grow, just like core does. There has to be a path forward.

I also noticed the idea of "start from scratch" in there somewhere. Not going to happen (see customers > code.) Even without that constraint, the start from scratch approach is more likely to result in failure. Continuous refinement is more likely to produce positive results. Yes, we have some enormous technical debt, but when you scrap it all you end up with zero technical equity and zero market equity.

Starting to discuss which framework/libraries we are or not going to use is a bit premature. The question needs to start is what we want to accomplish. What are the requirements? Good design doesn't start with the libraries; the libraries are chosen (or written) to implement the design. If your requirement is you want Symfony, Yii, Zend, Drupal or whatever, there is a much shorter path to implementation than incorporating it into XOOPS.

Symfony makes some awesome components. I like to look to Yii and Aura for ideas. I am always on the lookout for quality reusable components. But those components fit into a design. If they prove limiting or problematic, they can be replaced. Eventually, I'd like to see XOOPS components in wide use.

I've been absorbed in making sure that the 2.5 series doesn't stop working before we get a new generation out. I've always had 2.6 in my mind, but to keep any semblance of market relevance we needed something that users can deploy now on a current stack. XOOPS 2.5.9 is just about to go RC, and my full attention will be back here.

I've got some very specific goals developed over time. I'll get some details out for discussion. I'll always be happy to listen to ideas, and give them consideration.

Let us consider what features we think XOOPS needs, and start the discussion from there, instead of picking a solution and then back fitting.

@trabisdementia
Copy link
Contributor Author

trabisdementia commented Mar 6, 2017 via email

@geekwright
Copy link
Contributor

If not to late ...

It should already be possible.

One way would be to just use the Smarty::register_function(). That or one of its relatives should work in Smarty 2 in 2.5, or registerPlugin() is the equivalent in Smarty 3 for 2.6.

Or if a directory is a better fit, you should be able to add a plugin directory on the fly, too. The $plugins_dir is a public array in Smarty 2, so something like $tpl->plugins_dir[] = '/my/plugin/path'; should work. In v3 there is an addPluginsDir() method.

@trabisdementia
Copy link
Contributor Author

@geekwright Great, thanks! I had the idea that plugins_dir was a private method.

@redheadedrod
Copy link
Contributor

redheadedrod commented Mar 6, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants