News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Re: Editing someone else's post

Started by Suki, September 05, 2013, 09:44:50 AM

Previous topic - Next topic

Suki

Quote from: Arantor on September 04, 2013, 05:59:29 PM

Do it. It needs it. The entire structure of SMF being monolithic templates is very bad. Make every content unit a template and display a list of them and then this becomes a template block too.

That's the thing, I really don't think they want such a change, even my futile attempt to add some hotspots to the Display.template wasn't well received or rather wasn't even received.

My idea was mixing templates and add as much hotspots as possible (for every block there should be at least 2, above and below and preferable 2 more, left and right), set unique templates like a message template and re-use it. The template shouldn't have to be aware of whos calling it, the template will only need a var or vars passed as params, (or even keep using globals) and work with the data provided. Helps to stop putting logic in views as well since you're forced to use only what it was given to you, if you want more then make the model fatter.

Sadly, it's a theme thing we're talking about, no one will ever be satisfied by it.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Arantor

Hmm, that sounds like it would become very messy very quickly.

A better approach would be to stop the current mentality of one dimensional nested layers and instead have arbitrary layers and blocks, much as Wedge did.

The distinction is not great, the idea is that you have layers which act as containers, and blocks which are items inside those containers. For example in the post area, you could create a layer containing just the editing stuff and each component of the editing stuff is a separate block. Have the list be malleable so plugins can inject items into that list, as well as being able to move items around and/or even replace chunks.

This way there's no concept of a 'main subtemplate' or such because intrinsically you're dealing with a list rather than a single item with wrappers around it.

You can quite happily tweak this structure to allow templates to be pure data receivers, too.

Suki

And each layer would be a function or a file? 

That can become messy too, themers will surely complain about not having the entire page displayed in a single template like current system does.

Does the place items are listed counts?  that is, if I list the "footer" layer before the "menu" one, does the footer will be showed first?

How exactly does the model will call the view? by calling each layer/container or by calling some class/function with a generic call like printTemplate('post', var); ?


Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Arantor

NB: I'm talking about how Wedge *does* it, not what a hypothetical iteration on the concept *might* do.

Each *layer* would be a pair of functions, the classical _above and _below (and both are actually optional, the layer can just be a semantic construct to encapsulate a series of blocks without actually outputting any content), with each *block* being a function.

However that function gets defined is irrelevant to the template system.

The place listed typically would count. If you have multiple blocks in, say, the sidebar layer, they're rendered in that order and thus that's the order they would be displayed. Of course, that doesn't account for cases like using floats to reorder content stylistically and otherwise out of flow.

The way Wedge does it is with a class that has the list of things to be called, and it just calls the functions, it's still SMF-like in that respect, so there's no delegation of content to the template from the parent, but a hypothetical evolution on the system could certainly set up layers and push the variables to them.

However I'd wonder if that was really a good idea for the most part or not, because that would require pushing a lot to the stack and a lot of stack churn as things go in and subsequently out of scope, which means you have a lot of transient content and a lot of stuff marked as freeable for the GC which may or may not deal with it there and then. Cleaner for the coder, sure, and it certainly means you get to separate presentation, but there are some uses to having things in global scope to pull from.

Lastly, seems to me that themers complain about everything. The only solution that doesn't really involve themers complaining is the WP method where you put as little logic as possible in the template. Aside from performance considerations, aside from security considerations, this doesn't actually leave you with that much flexibility to style anything other than the overall look, unlike what can be done with other systems - and generally WP sites are much simpler with fewer interfaces to everything anyway.

Suki

Well, it is hypothetical to me :P thats why I'm still don't get the full picture of it.

OK, one last question, how does that class knows what to load?

Does that class is independent from any sources file/model, thats is, it gets called along with the model or does the source file/model calls it?

I don't doubt passing vars as the only method to interact between models and views would be problematic, specially in a forum context where there's no real definition of model and view in the first place or rather there is just soo much stuff going on that the whole MVC thing gets completely obsolete/override very quickly.

Oh, and I realize this means completely re-design the default theme on it self, the current one depends on itself just too much. Lots of work just to be ignored, sounds fun! :P
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Arantor

QuoteOK, one last question, how does that class knows what to load?

It doesn't. It has absolutely NO responsibility for loading anything. As I said with: "However that function gets defined is irrelevant to the template system." The template system is solely responsible for *calling* the functions in the right order and whatnot.

OK, practical example. Board index is where the info centre section is added (it's an entire layer with several blocks in it), the board index is not only responsible for adding it to the skeleton, it's also responsible for loading the info centre template file too.

Quotewhere there's no real definition of model and view in the first place or rather there is just soo much stuff going on that the whole MVC thing gets completely obsolete/override very quickly

Well, you could hammer it into an MVC like pattern, it seems to work for XenForo well enough, however I'd argue that it's not really ideal for the same reason. MVC is a structure and it works well for certain applications but as you intimate it doesn't work for a forum. It's more than that, though, MVC is really designed around a single purpose application with multiple facets, not potentially multiple bits of applications tied together in a single base like a typical SMF install is.

QuoteOh, and I realize this means completely re-design the default theme on it self, the current one depends on itself just too much. Lots of work just to be ignored, sounds fun!

Only to a point. The refactoring of chunks of content into separate templates is not an enormous task though it is rather tedious. But once it's done you start to realise just how flexible it is as a system.

emanuele

Quote from: Suki on September 05, 2013, 09:44:50 AM
That's the thing, I really don't think they want such a change, even my futile attempt to add some hotspots to the Display.template wasn't well received or rather wasn't even received.
Considering your PR was #578 and there were still 12 older than it not included, neither closed (neither much commented), it doesn't seem you should be any worried about not receiving feedback, maybe in a couple of months it may be included.
And if you didn't like my comment, you can just ignore it, because I'm not the one that as any authority to say anything about SMF development in general terms. ;)

ETA: BTW, some actual code I tried to wrote, but dropped because...I didn't like it that much.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Arantor

Quoteit doesn't seem you should be any worried about not receiving feedback, maybe in a couple of months it may be included.

You mean like the bug I fixed 15 days ago in the bugs board that no-one's even downloaded yet? :P (Look for the thread about the calendar holidays being wrong. I even fixed all existing branches of SMF in that.)

I'm not going to get into the slugging match about developers, who has responsibility and who should be doing what. My thoughts on this should be clear.

Suki

Like all the other commits I've done, that was just a trivial 2 minute change, theres a difference between blindly sent a 2 minutes PR and sending a re-structural of the template system, the later does need some kind of guidance, the former could just be happily be sent blindly.

Thats actually the reason why I only committed small, trivial things so far. I have no idea what you guys are up to and as time goes by I will continue to be further and further away from the SMF way of doing things, making it even harder to actually contribute something meaningful beyond adding a couple of hooks here and there.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Arantor

Suki: I haven't contributed anything to the Github repo, partly because I hate Git as a whole but mostly because there's not a lot of point.

You've made it clear that Git contributions aren't really being looked at, I've seen first hand that my contributions aren't being looked at, I have no idea what leadership the lead dev is bringing to the table, other than his own contributions which seem to be only partially tested if at all.

I'm aware we're getting off topic but it's been clear for a while that the development process here is in trouble.

Suki

Quote from: Arantor on September 05, 2013, 10:52:19 AM
QuoteOK, one last question, how does that class knows what to load?

It doesn't. It has absolutely NO responsibility for loading anything. As I said with: "However that function gets defined is irrelevant to the template system." The template system is solely responsible for *calling* the functions in the right order and whatnot.

OK, practical example. Board index is where the info centre section is added (it's an entire layer with several blocks in it), the board index is not only responsible for adding it to the skeleton, it's also responsible for loading the info centre template file too.

I might need to see it at first hand to get a clear picture :( right now my head can only process the typical template engine, twig, smarty, scurvy, they are all work the same as SMF's.


Quote from: Arantor on September 05, 2013, 10:52:19 AM
Well, you could hammer it into an MVC like pattern, it seems to work for XenForo well enough, however I'd argue that it's not really ideal for the same reason. MVC is a structure and it works well for certain applications but as you intimate it doesn't work for a forum. It's more than that, though, MVC is really designed around a single purpose application with multiple facets, not potentially multiple bits of applications tied together in a single base like a typical SMF install is.

Thats something I've been wondering for a while, why hasn't emerge something different than MVC?  I mean, yes of course there are multiple variants and mutations but the principle is the same.

Are forums the only complicated system that doesn't really fit into MVC? si that the reason why most forum systems are trying to fit in MVC rather than funding their own solution?

The very core principles of MVC doesn't really fit within a forum environment, a forum as a whole is not something you can just simple re-use with something else.

I dislike the way the "cool guys" are heading with forums, things like discourse or Lithium's Sphere are pushing forums to fit something forums aren't designed to fit it.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

bloc

Quote from: Suki on September 05, 2013, 12:44:25 PM
Are forums the only complicated system that doesn't really fit into MVC? si that the reason why most forum systems are trying to fit in MVC rather than funding their own solution?

The very core principles of MVC doesn't really fit within a forum environment, a forum as a whole is not something you can just simple re-use with something else.

I dislike the way the "cool guys" are heading with forums, things like discourse or Lithium's Sphere are pushing forums to fit something forums aren't designed to fit it.


I agreed - the way SMF is built really doesn't lend well to a MVC, not without a total rewrite from scratch - but I'll stay out of that discussion since I am no guru at MVC/non-MVC anyway. :P

What I do know is that forums in its pure form are "out" nowadays, its just the way it is. And to re-boot forums we have to think in new ways with the existing ones. For me that means re-using the basics of a forum(specifically SMF lol) and utilize all the benefits of it right now - but make it more interesting and extend it. Protendo is the answer to that. And hopefully theme-inclined people will find it easier to work with than SMF..but I have my doubts.

Suki

Well, by pure I understand a system that is omnipotent, handles everything and everything else must be either plug in or integrated with it. By that context, yes, pure forums are out.

My solution, well, wasn't even mine anyway, it was first stated by Fustrate, was to use an already existing and well know framework, leave the back end stuff to the framework, user system, security, testing, i18n, etc and only concentrate on the implementation of said resources. If you only concentrate on the implementation you eventually will find a way to efficiently display the enormous amount of data a forum handles.

The basics of a forum can still be there and be used either as a stand alone platform or be integrated with something else.

If for some reason you refuse to use a framework, the main idea behind it is still the same, build the very own core components as generic and re-usable as possible and then work around that, thats what smCore was all about but as you can see, that idea was promptly dismissed due to the several inconvenient of trying to re-invent the wheel.

Going the "solo" and isolated approach really is what is out and dying. Not because is bad per se, is just a path only a few can actually afford to do, either by man-power or by been the defacto and unquestionable leader in X area. SMF has neither.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

bloc

Well..I don't agreed fully on just assembling the best parts and suddenly you got a good base. SMF is fast despite it many features mostly becasue its coded just for itself. A framework don't do that, you get all kinds of extras you netiher want nor doing YOUR system any favors. Even rudimentary stuff as a JS framework needs tweaking for any particular project.

But I am not sure we talk about the same thing..coding practice/structure is one thing, the limit here is how much you want to invest in good servers, then your code can as massive as it wants..but what I meant was the IDEA of a forum is "out". Social networking has taken over, made place for discussion within itself, pushing out the pure forums. And those that are left try new ways, IMO often making things worse in regards to efficiency.

Thats why I think current SMF is actually a good starting point- but you can't go too far. Go beyond a certain threshold and its tipping over into a massive can-do-anything-but isn't- excellent-in-anything software projects.

SmCore became dormant mostly because the creator(s) stopped believing in it, instead of being prepared to code the modules themselves, they anticipated others would..which was of course an utopia.Lesson learned? SMF only become of from 3 that sticked with it until it got so big it ran itself(and pushed them out sadly) so if something similar was to happen with any post-SMF project/fork one cannot leave, and one cannot loose the dream. Otherwise..well, its got very little chance of doing anything IMHO.

emanuele

Quote from: Bloc on September 06, 2013, 11:58:44 AM
SmCore became dormant mostly because the creator(s) stopped believing in it, instead of being prepared to code the modules themselves, they anticipated others would..which was of course an utopia.Lesson learned?
Nobody ever said anything like that.
smCore was intended as a framework and SMF was a module, but nobody ever said that "other" would have developed SMF.
smCore died for many other reasons (i.e. those able to develop it left and most of those remained don't want it to begin with or don't have the competences to build it), but not for that.

I suspect that at that point it's better to split the topic.

ETA: too lazy to change the subject.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Suki

But we re thinking about the same thing, how are you going to provide all those new bells and whistles of social networking with a system that is isolated and just not designed for it? you will end up taking a very weird route and adding patches and workarounds all over the place, believe, I already did that and is not a pleasant work on any level.

The current SMF is a good start if you want to build for it alone, continuing extending it until you can, you can build a social network, a gallery, a blog or just turn it into a full cms, the base is there, an obsolete but rather solid base. Of course when someone else will try to use the forum and integrated to something else, you will tell them to integrate that something else into SMF instead or use some of the "homemade" solutions available. Thats pretty much what they are actually doing right now.

As time goes by you will have to release patches so your current codebase can still be run on newer PHP versions, each time those patches would be bigger and bigger and more complicated to test and be sure that nothing else was broke by your change. Something thats already happening BTW.

A framework is just a tool, you take what you need, nothing else, nothing more, using a framework doesn't mean you have to use all their components, no one does that, you take what you want to use, PHP frameworks are very different from JS ones. PHP frameworks are basically lose classes and libraries that share some common ground but still can be used independently by not only the same framework but other frameworks as well.

SMF is already a framework on itself, big mods use its core parts to suit their needs, they don't use the full power or load all Sources dir.

And again, the idea of being generic and modular doesn't need a framework behind to make it happen,  you can take the current user system in SMF and make it modular and generic, make it so SMF use it rather than being embedded on SMF itself. An user API if you want to call it that way, the same for other core parts.

If you're so adamant on keep using the current codebase, at least re-arrange it so it becomes easier to maintain and improve.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

bloc

So why isn't there any projects that have survived and surpassed SMF? There have been attempts.

What you describe is the recipe for any budding starting project, and its nothing wrong in it..but how many get to be as popular as, among others, SMF is?

I see that you are dispelased with the SMF structure - I don't argue against it, I have already changed many things myself, on my level anyway lol - but whats your goal? A new social facebook clone? Start fresh, no doubt about that. A new contender for pure forums, but coded in OOP? Start fresh, again. But what if you make something similar to SMF, and wants to continue its (mostly) range of features? Code new then too?.. well, its an option, but not the only one. And yes, adding to, patching etc, might prove fatal in the future, but IMHO its a question of thresholds here: how far you can go before its getting too tangled.

Code can never be "perfect". Its like painting, theres different styles everywhere and quailty can be very subjective.

But I am not out to change your mind, Suki, you got your own dreams and goals. You should just follow them. :)

Arantor

You forget, SMF is 10 years old. None of the derivative projects have had 10 years to mature to the point where SMF is now. Mind you, none of the derivative projects have as yet managed to make a proper public release, which might have something to do with it...

A new contender for pure forums, coded in OOP... that's called XenForo.

The bottom line is that SMF does not have the developer resources, enthusiasm or drive to push it too hard; too many people want SMF to stay 'just a forum' because that's what it's known as, that's what it's good at. If you make SMF into something that isn't a forum you can't even keep the name, can you?

The biggest problem with smCore was the 'OMG we need to rewrite everything' problem. phpBB has done much the same now that phpBB 4 is being rewritten using Symphony.

emanuele

Quote from: Arantor on September 06, 2013, 12:59:38 PM
The biggest problem with smCore was the 'OMG we need to rewrite everything' problem.
I'd argue it was more "OMG you are changing what we know!!". :P


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Arantor

Nah. If you start from scratch, you have a much larger mountain to climb than not because you have to reinvent the wheel as opposed to reimplementing it. Can SMF be converted to an OOP structure? Sure. Can it be done faster than building it from scratch? SURE. See, that's mostly a case of refactoring, not writing code and then testing it, retesting it etc.

SMF is 10 years old. In most cases the foundations are solid, and more importantly tested and bug-hunted. You don't get that with reinvented wheels.

Advertisement: