Is ATK4 in some stable state? - atk4

currently I am looking for a new PHP framework, with which I can create some powerful business logic applications. I stumbled over ATK4.
Since yesterday, I am trying to get a grip on this, but I must say it seems to me that the whole framework and its documentation is in some kind of unstable - or at least very beginner-unfriendly - state.
I mean I tried doing the DVD Rental example (with ATK4.2) and there are so many errors coming up (I did it all according to documentation). Then I realized that there is a new release, 4.3, which I tried then. But same problem here: The beginner documentation (the examples from the book) have so many errors in it or there are so incomplete.
Am I too dumb to find a decent example or is this really the way it is with ATK? I mean I really like the concept of ATK but with this kind of documentation I would think it will be very difficult for new developers to start using this framework for new projects.

Update 2017:
Several parts of Agile Toolkit (ATK4) have been refactored into stand-alone frameworks. The issues OP have outlined with poor code quality and lacking documentation have been addressed and explained in READMEs:
http://github.com/atk4/data - Refactor of Model from Agile Toolkit
http://github.com/atk4/ui - Refactor of UI widgets from Agile Toolkit
Both libraries can be used in conjunction with any other PHP framework.
As author of the original ATK framework and now Agile Data / Agile UI - I am always trying to support the core code and publish it under permissive license.

Related

In 2019, how much is it necessary to migrate a site from Angularjs to another framework?

I'm a project manager of a market place and I'm trying to find solution for my concerns. For two years a ago we decided to develop market place.
In front layer we decide to use angularjs and our team professional implement front layer using AngularJS. We add dependency injection for first time to angularjs 1.3 and solve google analytic crawling in SPA website.
But when google announce On July 1, 2018 AngularJS entered a 3 year Long Term Support period. As a project manager I have a big concern because We living in 2019 and after two years whats happen for our website ?
But my biggest question is how optimistic how long can we use Angularjs?
how much migration is necessary for this framework and
Is it possible that the sites written with Angularjs are not able to work after 2021?
Google announced:
All AngularJS applications that work now, will continue to work in the future. All published versions of AngularJS, on npm, bower, CDNs, etc will continue to be available.
For more information, see
Angular Blog - Stable AngularJS and Long Term Support
AngularJS Version Support Status
It’s out of date now, and new projects should absolutely not be built using it. This isn’t to say it was ever a particularly great choice. AngularJS came out of nowhere and became popular by default, rather than because it had particularly great design. It has a difficulty curve better suited to a great roller coaster than a decent framework, and a bunch of weird architectural and terminology choices. What the hell is a $scope, anyway? And what is a directive? What does transclusion actually mean? Meaningless terms that AngularJS has created. AngularJS does some things that are fundamentally wrong, such as creating invalid attributes on HTML markup. Even Google doesn’t use Angular for their own apps, like Gmail, and there’s a reason for that.
In fairness, AngularJS was always a poor choice. Its idiosyncratic code means that unlike other frameworks, it’s not good at implementing an agnostic, javascript solution. AngularJS code looks unfamiliar to anyone not super experienced with the weird intricacies of AngularJS itself.
Thankfully, this decision is well made for you – AngularJS is now quite thoroughly dead, and only legacy projects will continue to be using it. We should be grateful for what AngularJS has given us, and respect the position it held, but we should be just as pleased that it’s gone.1
The change is only about "support" and it means, no more bug fixes and no more improvements. Other than that, everything will be the same. Although, you should consider some disaster scenarios after LTS.
I saw some posts about running AngularJS and Angular side by side and I think it can be a good solution for your problem. Since you have enough time to migrate, your team can develop new features on Angular and you can also maintain your current AngularJS. Eventually you can get rid of AngularJS depending on your project size and development capacity.
Please check these scenarios.
Running AngularJS 1.6 in Angular 5 (side by side)
Running Angular and AngularJS frameworks side by side
For Angularjs support, you can find the previous discussion on this portal: angularjs 1.x support lifecycle and end-of-life
And the question regarding migration, in my personal opinion migration is a better option as the latest Angular version provides Boost in performance, Mobile-driven approach, code Maintainability & optimization, and most importantly Reduced development time and costs with better support.
And if asked about the migration approach, I would suggest a complete re-write that can be the most cost-effective strategy. If you’re a manager, put your team through Angular training (live, online, videos, books). Allocate time and budget for getting your developers up to speed with Angular as the learning curve is steep and prior experience with AngularJS is not overly helpful. Then your developers will write the new version of the app as per best practices recommended for Angular/TypeScript projects.
And finally, it’ll definitely pay off in the end. And, secondly, the newer versions of Angular won’t let you systems become outdated or irrelevant.
There is a team called XLTS.dev who are providing extended support for AngularJS beyond December 2021.
We have used Angular JS extensively in our company for enterprise projects, mobile applications and continue to use it. Google's decision to stop development of AngularJS and put it on a EOL will definitely make developers to panic. But 3 years to migrate away from it is a long time and you can plan accordingly.
If your plan is to migrate to Angular, then you can follow their official guide to upgrade using ngUpgrade. You can find numerous articles online that explain how they upgraded existing AngularJS apps to Angular.
If your plan is to consider migrating to a totally new framework, then this will involve some work. You should take a look Web Components spec. Your existing directives/components can be re-written, with less effort, as web components (shadow DOM) or custom components (without shadow DOM). There are libraries that help you write these generic components - supported on most browsers today - Stencil JS, lit element and a few others.
The advantage of using Stencil JS is that it provides tools to compile your web components to target different frameworks (Angular, React, Vue, Ember).
The latter solution seems feasible as it allows you to migrate directives one by one over a period of time, without having to re-write the whole application in one go. In the future you can also re-use your components in the framework of your choice.
As for your question about will it continue to work after 2021 - yes it will continue to work. The problems you might face might not really be of technical nature, but related to hiring resources to work on it or maintain it.
I am AngularJS developer and I do continue to use this framework for some of my projects. I am aware that in not too distant future this library will be completely outdated (as some of you can say it's the case now), however:
AngularJS ecosystem gives you still lots of choice/support (as framework is very mature)
my main libraries as ag-grid, highChart or others, help to build great apps out of the box with little time
I still do enjoy to work with this framework for it's simplicity and flexibility
If you should build brand new app I would recommend React or Vue (or other framework) especially if you do not have significant experience with Angularjs. However if Angularjs is not new for you, you need to go fast - just use your experience and go for Angular.
Taking into account what you wrote:
My main concern is after 3 years of support. Whether after the 3 year end of support, Angularjs sites can continue to work without problems
Angularjs apps won't just stop to work like that, from one day to another.
As your project requires long-term maintenance, needs to be built from scratch and will take lots of effort - Angularjs ecosystem is then probably not the best choice for you (I do insist "for you").

Is it better to start with Sencha Touch 2, or Sencha Touch 1.x?

I've recently built a demo application using PhoneGap, and I chose to try JQuery Mobile as a UI framework. It was... okay. I'd like to try out Sencha Touch now and see if I like it better.
As of now (mid-December '11), it appears that Sencha Touch 2 has been released as a preview, and has significant improvements in performance (which is a key ingredient for me). However, it's missing some features, and doesn't seem to have many demos / tutorials yet on the Sencha website.
In the valuable opinion of SO's seasoned Sencha Touch developers (and by seasoned, at least in the mobile realm, I mean that you've at least played with it for a week or so), would you recommend I start with Sencha Touch 2 from the get-go, or go through the motions of learning 1.x and just upgrading to 2 later on? What are the advantages / disadvantages of using "preview" versions of this and other frameworks, particularly when working within the ever-shifting world of mobile development?
Thanks for any input!
I created a few proof of concepts for my company in jQuery Mobile. While I personally love jQuery, jQM was not ready for a production environment if you wanted a slick, responsive, bug-free user interface. That was in the v1.0RC3 days. It is a stable release at the moment but I still feel the same way, hopefully future versions will address the shortcomings. I made this decision after running a number of benchmarks, a focus group and a pilot program(6 ppl). All said and done, I decided to evaluate ST.
Sencha Touch has the best UI, IMO. However, there is a strong learning curve with this framework. API documentation is complete and while there are tutorials lurking here and there, there is NOTHING that spells out the ST framework from start to finish. I often find myself searching in the depths for a brief glimpse of an explanation with no resolve. I find it frustrating that the Sencha team hasn't addressed this. I hear a lot about brushing up on EXTjs first as that is the placenta of ST's birth. (yes, I just said that) Truth is, if one has to learn another framework to utilize the one you are interested in, just to understand how it works, its a major fail. I'm not learning EXTjs just for ST...
For Sencha Touch, you should be versed in MVC, object oriented programming, debugging web technology and have a solid understanding of JavaScript.
Now the real question is 1.x or 2.x. Situations like this are highly debatable. Resource and cost analysis should be done on both versions to show how your development time increases if you were to port 1.x code to 2.x and any other overhead associated with learning curves, etc. So instead of give you my biased opinion, I'll just tell you what I did for my company (7k + employees).
My project needed to be at a certain milestone by a certain date and I certainly can't deploy something that isn't in production status. Simply meaning I cannot use a beta for anything substantial. As ST2.x is in the PR3 stage, it isn't ready for production. Not to mention a lot of key features of ST are currently missing from the ST 2.x release, though will be added in future releases as they progress to production stable.
I developed my app in 1.x because it was stable, has numerous examples and documentation available so I could produce an app TODAY. If I started in ST2, I wouldn't be able to finish the app. The API is not frozen, lacking full documentation, sparse examples, limited community resources and missing features. I can't wait for ST2(going to be great!) but can't risk my project over it.
Bottom line... if you need an app today, go with ST1, if you can hold off for another few months and have the time to make updates to your app as the ST2 API is frozen and features are added back in, then I would go that route. Cheers.
I would suggest learning Sencha Touch 2. I wasted a lot time working with Sencha Touch 1. Just before giving up - decided to try Sencha 2 - devel release 4. Much much easier to work with and learn.
Good luck
JRS

Agile Toolkit, worth using?

I'm considering using the Agile Toolkit, ATK4 to upgrade a number of web projects that I'm working on. I really like the idea/paradigm that the Agile Toolkit presents, but I'm worried about documentation.
The agile website's documentation is sparse, in broken English, and seems to 'paraphrase' the symfony documentation.
The agile toolkit alleges to have been in development/production since 1999, yet there are only a handful of StackOverflow.com posts regarding agile, and next to nothing comes up in Google searches...
In short is it worth spending time learning the Agile toolkit, or would my time be better spent on a framework that has more of an active support community? I've tried a few other frameworks, but ATK's implementation really stands out...
Initially ATK was born as an internal tool from Agile Technologies (.ie) so that has been conceived in 1999 but it was recently launched as dual licensed framework.
That's why it lacks some documentation and has not a huge community nor appears Googling.
I was amazed at first sight by its working way proposal so that I engaged it. The documentation has been already improved and over the time it will keep getting better and community will grow.
I had the chance to get in touch with the lead developer and trust me, it will get better and better.
Even, as an example all the ATK4's site is developed with the toolkit and the code is short and pretty easy to read.
Good luck!
ATK4 does have many examples, and code is concise and clear. It accomplishes the goal of wrapping server-side and client-side into one comprehensive framework via php. Plus it looks nice. It does appear that documentation is improving.
Yep - agree with what the others are saying - Romans is doing a great job of getting the documentation updated. I started writing an application in straight php but realised i was going to need to use jquery to get a nice, cross browser compatible front end and wanted a php framework that would support that.
I looked at Yii, Cake and CodeIgniter but ATK4 really seems to do what i wanted. Like anything, it takes a bit of getting used to and i'm still relatively new to both php and ATK4 but i've rewritten what i already had for my application in the framework and the code is so clean - all the html and css are separate and the page code is really compact. The integration with Jquery is great and i've just written a plugin that i needed to get jqplot working for nice looking graphs.

Easy to use/learn PHP framework? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I need to build a php app, and I was thinking about using a framework (never used one before). I've been browsing around some but most of them seems kinda complicated, I really liked what I saw about Symfony, but it looks like I will have to spend like a month until I really understand how to use it, and in one month I could code the app I have in mind 5 times without a framework. But I want to use one to "standardize" my code and prevent bugs.
So I was wondering if someone could share with me which php frameworks you think are easier to learn how to use.
My application will use mysql, and it will have some sort of "search engine" to search data that will be populated on the database using a few "scraper scripts" (that I also wants to code using the framework).
There are many questions answering this question here on StackOverflow and I was recently just in your position researching many different frameworks as I want to standardize my code as well.
I ended up choosing Codeigniter because I wanted something with good documentation, and that was very light (lighter == easier to understand IMO), and something that was not too strict. In Codeigniter if you really want to you can just code regular PHP and it lets you do that. I like this option because if I really get stuck on something, I just code it in raw PHP the way I know I can. I've only been using Codeigniter for a few weeks but the learning curve isn't too difficult and this is my first framework I've used.
Read through some of the previous discussions, and look out for ease of use advises:
https://stackoverflow.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why
https://stackoverflow.com/questions/249984/php-framework-decision-analysis-paralysis
Why do I need to use a popular framework?
https://stackoverflow.com/questions/717836/kohana-or-codeigniter
If you want something easy to get started, you might want to look into the minimal frameworks:
https://stackoverflow.com/questions/694929/whats-your-no-framework-php-framework
https://stackoverflow.com/questions/141945/lightest-possible-php-mvc
https://stackoverflow.com/questions/3023818/any-procedural-non-oo-php-framework
But actually the big dozen are advisable if you want good documentation. Symfony and CakePHP are complex, CodeIgniter and the newer Kohana fork are beginner friendly. While there are many more to choose from. Pick a nice API, and maybe look out for one that explains the difference between MVC and MVP. Also for a lengthy list: http://matrix.include-once.org/framework/
My first choice would be cakePHP. Easy to learn, great documentation, api and a few good books:
Beginning CakePHP: From Novice to Professional – David Golding (good; start with this one!)
Super Awesome Advanced CakePHP Tips – Matt Curry (good and free :-))
Refactoring Legacy Applications Using CakePHP – Chris Hartjes (not read yet)
Practical CakePHP Projects – Kai Chan, John Omokore & Richard Miller (not so usefull)
CakePHP is the best solution with a small learning curve.
I was in your shoes just 2 years ago. I personally chose to use Zend Framework. It's important to understand that ZF is built by the same guys who maintain and improve PHP itself! Just that gives it a lot more credibility.
When choosing a framework you should consider the following:
Size and Quality of the community - Being one of the most widely adopted PHP frameworks, Zend Framework (aka ZF) has the biggest PHP framework community; hence, most of the problems you will encounter will have already been answered. There are frameworks out there that are supported by just a few developers and if they happen to quit working on it, you're stuck with the latest version of the framework. This not likely to happen with ZF.
Documentation and Beginner Friendly - The ZF docs are pretty good, full of examples and beginner friendly. There's also a ton of tutorials and [quick start guides][2]. It's extremely easy to start up a new ZF app.
Investment - Sure you have to invest sometime learning how it works, but everything's like that in the software engineering world. You have to understand [OOP][3] and [MVC][4] before hand as well. Many people don't understand that using a framework to develop procedural-like code (instead of OOP) is defeating the purpose of... using a MVC/OOP framework! Therefore, it's important to grasp and master these concepts so you develop the best code possible. And by best code I mean
a) code that works
b) code that's easy and fast to understand and maintain.
This investment is well worth it since it will drastically increase
a) speed of development
b) speed of debugging and maintenance.
Also, take advantage of this moment in your programming career to also adhere to other common best practices (if you haven't already done so) by using:
a) Unit Tests - incredibly easy to integrate within ZF. Look into [Test Driven Development][5] as well.
b) An IDE - VIM, [Netbeans][6], etc
c) [Design Patterns][7]
d) Source Control - [Mercurial][8], Git, SVN, etc
e) Finally, keep yourself in the loop by [following what's going on the PHP world][9].
You'll thank yourself yourself in your near future! I know I did.
As no-one has voted for Symfony here i will and here's why. There are two types of frameworks, well a whole range actually but in the PHP/MVC area which is where we are in this thread there are Glue and Full Stack frameworks.
Zend and CodeIgniter are Glue and Symfony and Cake are FullStack.
Glue are the ones where you can pick and choose which components you can use and how much "standard" code you can use. These tend to have a gentler learning curve as you can pick the bits you like that help and fill in the more difficult bits with code you know.
FullStack means you need to use the lot and so the learning curve can be quite steep. Also with FullStack there can be a tendency to balk against the way something is implemented rather than just accept and flow with it.
Coming from a write everything myself background i initially favoured the Glue's but have now migrated to FullStack using Symfony 1.4 and 2 and Sinatra and Padrino. The extra speed and power the fullstacks give is not something i would like to give up.
One downside of CI is that it is built for php4 compatibility and so does suffer in a number of structural ways when you come to push the framework, Kohana is a fork that addresses this issue. And i dislike Zend because there are so many ways of doing the same thing that after a while the Framework seems almost irrelevant (Sorry personal rant)
At the end of the day use of a Framework is good because it adds a structure and can be a great aid to learning and the one to choose is the one you feel comfortable and are productive in.
There are many frameworks and several really cool frameworks.
After trying so many of them I think you should not start using any of them before finding best suitable to your needs.
You may find any other after choosing one so do not act quickly before choosing right one.
Before creating an application with a framework you should make exercises.
For me I started with CodeIgniter created one application and left second one in the middle, then passed to Kohana and started second application according to the needs.
CodeIgniter is the one that I prefer
The framework must have little learning and easy to expand. I am using http://sourceforge.net/projects/naanalframework/ for all my projects. There is no installation. Just has to point the frameworks naanal.php in your application's index.php and run it. The framework will guide you what to do. For the beginer, this framework is very useful to develop PHP applications. A sample application also available at http://sourceforge.net/projects/naanalframework/files/sample%20applications/wordpress_plugin_builder.zip/download

What new features and improvements does Lithium provide over CakePHP?

I've used CakePHP on several projects in the past, and have more recently started using Ruby on Rails, but there's a new project I'm about to start that will require PHP. While refreshing myself on CakePHP I learned that there is a new framework called Lithium that is essentially what CakePHP 3 was going to be. It's being developed by a group of former core CakePHP devs.
I haven't found a whole lot of information about it since it's still under development status, but I was wondering if anyone knows (or has a link to) some information on what benefits it provides over CakePHP. Hopefully something a bit beyond the quick overview shown on the official site. I'm trying to decide whether to use CakePHP for my upcoming PHP project or to wait a bit for Lithium to release a non-development version and try that out.
Hope this answer doesn't come too late, (and as the lead developer of Lithium, I'm a little biased :-)), but I will say that this is a hard thing to sum up. Lithium is the culmination of over 4 years' experience building and working with CakePHP, and while it retains many of the same designs and conventions, it was built to correct CakePHP's many architectural flaws.
In brief:
Framework features are grouped into loosely-coupled "packages" that are easy to use independently.
Tangentially, everything in Lithium is a "library", including your application, and Lithium itself. Support for integrating 3rd-party libraries is vastly improved, and all classes are namespaced, so you can finally have a model called File.
It is very easy to swap out core classes with your own custom implementations.
Lithium has a unique "filter" system that allows you to hook into many methods in the framework, which allows you to design your applications in an aspect-oriented fashion. These features work together to make Lithium the most flexible PHP framework, bar none.
Everything is lazy-loaded, and the architecture has been designed for maximum performance.
Lithium supports the latest tech, especially new databases like CouchDB and MongoDB.
I could go on for a while, but that's the gist of it. If you have any more questions, feel free to drop by #li3 on Freenode, and someone will happily give you a tour.
There is very little documentation so far. Here are some brand-new slides from gwoo though, that might be a good overview:
http://www.slideshare.net/gwoo/li3-ocphp
See the Lithium about page in their wiki. It lists all the features it will provide.
http://rad-dev.org/lithium/wiki/about

Resources