Open nils-werner opened 11 years ago
Agreed,
furthermore, things that should be considered:
Am 13.04.2013 um 11:19 schrieb Nils Werner notifications@github.com:
Just a list of things I think Next (and the framework it is based on) should have. Feel free to append anything you think is important
PSR-0 compliance composer.phar package ORM Ability to swap out the templating layer Builtin DB migrations — Reply to this email directly or view it on GitHub.
We should finally drop the current technical separation between the frontend and the backend. Which means to still have a backend, but:
This would mean having one account for everything. Another advantage would be that backend code can be re-used by developers to build "interaction" in the frontend.
I have built a rather advanced administration area in my web app's frontend, so I know what I am talking about. Maybe — depending on a major rewrite of my own utilities — I could contribute XSLT code to auto-generate publishing forms, including field-level validation. This layer should be super-elegant in the end, so it won't be a simple task. But it might be a killer feature if the provided XSLT code could be used in the backend and in the frontend, simply because HTML forms are the pest, and validating data is even worse. So, add another point:
By writing this layer in XSLT exclusively we would follow @nilshoerrmann's proposal from the forum, making XSLT the "pro choice" for the frontend and the sole backend template language. I like this proposal.
RESTful architecture
@iwyg I'm so glad you said that, excited even. I've been drafting my version of a proposal for a couple of days, and that word, REST, features very heavily in it.
I'd like to second Michael's proposal to consider the administration area just another frontend of a site. This would also make the backend a blueprint for complex web apps that could use Symphony as a starting point for their own service.
Using Symphony to build Symphony will also make sure that the API is tested and working and not lacking features as it currently does. In this context, we should make sure that the visual interface is representing all functions available in the API. As a designer, I don't want to leave the UI and touch PHP files (something you even have to do for simple negations in Data Sources right now).
Furthermore, we should consolidate fields. I hate the concept of "core extensions". We are either dealing with the core or with extensions - there is no middle ground. Things considered essential should be part of the core itself, the rest should not be bundled with a release. From my experience, "core extension" fixes have only landed short before a Symphony release or even required a Symphony beta to work, so we should not make things harder by separating stuff. We should rethink the most essential fields and make sure they share the same settings (requirements, uniqueness, multiple values). The core field's UI should be kept simple but not dumb. Symphony 1.7 bundled a really simple, really nice calendar - I did never understand why it was dropped because it ensured valid dates. We really should look at some lovely ideas that existed in earlier versions.
Ah and finally, to not look stupid here, we should make sure to base everything on ROTFL and WTF to make things more ROLEEYESful.
Addendum: Regarding the interface, we should make sure to not reinvent the wheel. The should have a look at existing JS plugins and professional web app libraries like backbone.js and the like.
We already have an interface, so we should use the same markup, js and css to save time for the first release IMO.
It would save us a lot of time thinking about the UI organisation now and not later. Symphony 2.3 is quite messy due to compatibility decisions. It would not steal us any time by the way because those working on the UI are not the ones working on the underlying PHP core.
We already have an interface, so we should use the same markup, js and css to save time
Nope. I am with Nils here: Do it right if you get the chance.
I'm sorry, I don't understand. What compatibility issues were there? We dropped support for older IE in 2.3, so I thought all of the issues were taken care of?
We have left a lot of things the way they were in order to keep extensions up and running. Think about Duplicators, localisations etc. The way we handle backend views in admin.js is not very professional.
By the way, rewriting the backend in a new envirinment is a great moment to think about a few essential interactions: Do we really need a dedicated section editor or couldn't this be better handled inline, within the content area? Why do I have to reorder a table to change the backend navigation and navigation groups, if I also could do editing in the navigation directly?
Agreed.
Am 14.04.2013 um 12:36 schrieb michael-e notifications@github.com:
We already have an interface, so we should use the same markup, js and css to save time
Nope. I am with Nils here: Do it right if you get the chance.
— Reply to this email directly or view it on GitHub.
Maybe a bit premature, but building the backend UI on a Javascript MVC framework could save a lot of time and effort. A RESTful application architecture (think of laravel's Resource controller) would give us the tools at hand to do so.
This also may drop the necessity for a dedicated templating language for the backend since all or most rendering would be client side.
Am 14.04.2013 um 13:05 schrieb Nils Hörrmann notifications@github.com:
By the way, rewriting the backend in a new envirinment is a great moment to think about a few essential interactions: Do we really need a dedicated section editor or couldn't this be better handled inline, within the content area? Why do I have to reorder a table to change the backend navigation and navigation groups, if I also could do editing in the navigation directly?
— Reply to this email directly or view it on GitHub.
But this would make @nilshoerrmann's (and my) arguments useless:
This would also make the backend a blueprint for complex web apps that could use Symphony as a starting point for their own service.
Using Symphony to build Symphony will also make sure that the API is tested and working and not lacking features as it currently does.
Both would be a big plus.
I'm not a fan of building the backend using JavaScript only.
+1 for a fresh start with the backend interface. I imagine there will potentially be quite a few fairly fundamental changes made in underlying functionality/approach, such as the one @nilshoerrmann outlined, and we don't want to have to worry about fitting in with a previous version's markup structure, CSS and JS. There may also be improvements/changes in structure the UI people want to make to CSS, etc.
But maybe this is a topic for another issue/thread, with this issue being more of a broad list of features it should have rather than implementation details? I have some questions/suggestions to pose/make on the admin area, which I'll probably start a new issue or two for.
BTW, can we move the discussion to something other than e-mail?
Am 14.04.2013 um 13:42 schrieb David Oliver notifications@github.com:
+1 for a fresh start with the backend interface. I imagine there will potentially be quite a few fairly fundamental changes made in underlying functionality/approach, such as the one @nilshoerrmann outlined, and we don't want to have to worry about fitting in with a previous version's markup structure, CSS and JS. There may also be improvements/changes in structure the UI people want to make to CSS, etc.
But maybe this is a topic for another issue/thread, with this issue being more of a broad list of features it should have rather than implementation details? I have some questions/suggestions to pose/make on the admin area, which I'll probably start a new issue or two for.
— Reply to this email directly or view it on GitHub.
@iwyg, this discussion is already at Github: https://github.com/symphonycms/symphony-next/issues/1
m( vanish
I threw together the beginnings of a project proposal.
PSR-0 compliance
Why no PSR-2 compliance? Or at least follow Laravel's guidelines, which include PSR-1.
The goals for Symphony 2.4 (structure stored in files, only content in the database) should remain intact.
Apparently, nowadays you don't save the actual DB structure but only its changes (migrations) from one version to another in your files.
The first migration creates the table, all following ones only change or drop it.
The first migration creates the table, all following ones only change or drop it.
Not sure if I get this. Like Database Synchroniser?
Laravel 4: Migrations and Seeding. It lets developers and sysadmins easily update database structure based on version controlled code.
But I haven't got my head round whether or not Symphony's sections could/should use this...
The gist of it: For each change to the DB structure you create a "migration", identified by a date (and inherently its place in the ordered list of migrations). The database knows which migration ran last and your migration script can find out if there are any new migrations available. Only those will be applied (in the right order, obviously) when you migrate.
So instead of having a smart algorithm that knows how to manipulate your table to end up with what you want you tell it exactly what to manipulate.
Another benefit of using Laravel 4: Migrations and Seeding is that it allows you to rollback if needed.
Yep, just like Database Synchroniser, only cleaner. You don't need to store the actual SQL commands themselves, instead a meta language describing the process e.g. "Add column "title" to Posts".
After having used Rails for a year, if I returned to using Symphony daily I'd miss:
I'm sure there are more but this is my starter.
Some other ideas:
There are two "backend UIs" for Rails. I forget their names. But they provide a super easy DSL for defining your UI. Just add anew rules to your models (sections) and you get a sortable, filterable table UI. I know Symphony is more than this, but I think they're good inspiration for the power that code-only affords. Lets you focus on Symphony being the UI for content management, not Symphony being the UI to build the UI for content management :-)
@nickdunn I agree. That's why I suggested to do scaffolding first, then take a hard look if we need UI for structure-maintenance at all (and if somebody wants them, keep them separate from the scaffolding).
Ah ok, didn't see the other thread. Yup.
@nickdunn: Nice to see you. And thank you for your insights.
I didn't dare to suggest the "no UI for DSs, events etc." thingie, but I am glad that you mentioned it, because I agree with what you say. If I could only code my ideas in a straight and simple way, I wouldn't even miss the UI.
Looks brilliant. I agree with @nils-werner and @nickdunn
Who's that Dunn and what's he doing here? :)
Just my two cents: I'm not a developer. I'm an author and designer. So I don't want to code, I don't want to leave the user interface. I want the backend make me forget that there is PHP at all.
Symphony attracted a lot of designers in the old days. If we need to start coding for a simple DS or event, we are off. Don't forget about us. I have cursed Symphony more than once because I had to edit PHP files to not execute a DS if a parameter was present. If Symphony doesn't provide an outstanding UI for this, good bye.
I don't think that this is entirely true. Symphony's attraction comes from "making it super-simple (to define sections, fields, datasources etc.)" Does this necessarily mean "having a GUI"?
Only if it's hard to code it (like it is currently, and it has always been) Symphony should have a GUI. But imagine a simple syntax to do your things — you might be more productive, and you wouldn't hit the GUI barriers. Compare it to XSLT — you wouldn't want to have a GUI for that, would you?
[@nils-werner's proposal]((https://github.com/symphonycms/symphony-next/issues/1#issuecomment-16400838) is great. If we do it that way, we will learn a lot. I am rather sure that we will be tuned to the same wavelength then.
If I'd want to write code, I'd use Laravel directly and would build a frontend form for those areas I'd need it. Templating and settings are two different things in this context in my eyes.
Removing DS and events from the interface wouldn't make a difference for programmers: they write custom code anyway and Laravel will make that easy. For everyone else things get worse: another thing to learn, another barrier. It's like telling the baker to raise his wheat first: that's not what he want's to do.
Please just don't forget that you are a small group of euphoric webdevs seeing a new perspective for Symphony. And don't forget that there are a lot of users with other needs and different knowledge.
And by the way: we don't need to recreate Rails - it's there, just use it!
I just say: Wait until we see it. :-)
That's why I suggested to do scaffolding first
I agree.
Yes, we have to very careful not to build another framework on top of a framework.
@nilshoerrmann I understand your worries, but wouldn't it be pretty much the same than it is now with symphony and the DS Editor? Sometimes you just have to hit your editor of choice and start hacking because you can't get certain things done due to the UI restrictions (think of the most video converter GUI's, there'e almost all crap because they really just hit the surface of what you could really do with e.g libvpx, ffmpeg etc.).
I think we are just trying to make things more easier and cleaner when it comes to coding. But don't worry, we also can do amazing things that are GUI based using scaffolding and stubs (just like it is now, but maybe a bit more sophisticated and more flexible).
I'm not talking about complex requirements, I'm talking about trivial things like negations etc.
If it will be easy to write custom DS and events, it will be easy to create an UI for it. We don't know how both sides will look but we should not abandon the UI because most participants here don't think they need it. You (the devs) can ignore it for know and it's up to us (the designers) to imagine it but the UI is an important selling point of the system.
Yes, that's true and I fully agree.
You (the devs) can ignore it for know and it's up to us (the designers) to imagine it but the UI is an important selling point of the system.
Agreed. Form follows function.
You (the devs) can ignore it for know and it's up to us (the designers) to imagine it but the UI is an important selling point of the system.
I love the xslt side of things with Symphony, but I would get rid of that way before I got rid of the UI for datasources, events, etc. And that's considering that you'd have to pull my teeth to get rid of xslt. No UI would kill it for me. I wouldn't be able to use Symphony without it.
the UI is an important selling point of the system
I never showed the datasource or section editor to my clients. Did you do this? (Please keep in mind that @nickdunn was talking about the developer stuff, not the authors' "publish" stuff.)
Anyway, please slow down. @nils-werner's proposal was to do other things first. He is right. @nickdunn tried to help us by giving us valuable insights (of a "developer", maybe). And all I say is: Assumed that writing code would be as simple as clicking around, I wouldn't miss a GUI. But this point doesn't need a consensus now. On the contrary, we would be fools to have one, because nobody can foresee what we will actually build (and what will be possible). So let's stop this discussion, please, we are wasting our time.
I'm going to throw 2p into this one if that's okay?
While I agree that a code-driven framework for things like datasources should be the first aspect of them to be developed, I understand where Nils is coming from here. Code can be intimidating, even if it's actually super simple once you do some research on the API.
One of the benefits of having a GUI is that you can start playing around without having to do much in the way of that research. All the options are presented to you to examine visually.
Having said that, as long as there is a solid foundation in the datasource API in code when it is developed, shouldn't it be straightforward to drop a GUI on top of that, even if it is limited when compared to the full code version?
Thanks, I agree with everything. (I myself was attracted by Symphony's GUI possibilities many years ago. I didn't know anything about PHP at that time.)
We should just build the foundation first. Make coding as simple, powerful and enchanting as possible, then try and build the best GUI for it!
yep
Agree with everything. Just adding my thoughts on GUI:
GUI gives inherent structure to configurable controls, which is a great benefit for users that are either new or developers returning to Symphony after being away for a while without having to depend entirely on reference material.
Just a list of things I think Next (and the framework it is based on) should have. Feel free to append anything you think is important
Granted, those are all features I've seen in Laravel. I am just blown away by the possibilities they offer.