News for hackers. Stuff that matters.
Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @04:29AM (#12699299)
Just like the web platform, Android is hugely improved when you leverage the community libraries and tools they provided. Gradle actually helps a lot with that, since its clear dependency management makes use of external libraries a breeze.

If in 2016 you're still complaining about AsyncTasks and its management, you certanly have missed a lot of progress in the last few years. It's not unlike having people complain about JavaScript issues without ever looking at jQuery, React or newer tooling.

The most useful things you can do for yourself currently are:

* Adopt Kotlin as a language. It's not all that different from Swift, comes with IDE support, tiny standard library and really fixes the pain of Java 6.

* Use MVP patterns and its friends. There are a few libraries which take most of the pain of lifecycles away.

* Use RxJava, Retrofit, Glide, etc. libraries that make your life easier with concurrency. A lot of these tools are better and easier to use than what even exists on iOS. Using AsyncTask in 2016 is just silly, it was never a good API.

* Use Gradle! Driven by its scripting language, you can do so much to script and automatize your build.

Other than that, I agree, after years of development:

* Some Android APIs just aren't well thought out.

* Gradle badly needs performance improvement.

* State of NDK is just sad. Fixable, but sad.

* MultiDEX is a result of a very very dumb decision in Android 1.0 and it's going to hurt us for a long time :/

All-in-all, I honestly think the author didn't really look into Android all that much to have complaints that he had. The blog post is somewhere on the level of someone complaining about IE6 JavaScript bugs when we've already moved on to React and are dealing now with very different issues.

(And no I'm not saying Android is great or even a great platform. It's not. It's just that, just like on Web, you can do a lot to fix major pains.)

Re:It’s Been Real, Android: Why I’m Retiring from Android by exDM69 on Thursday October 13, 2016 @06:25AM (#12699694)
> It's not unlike having people complain about JavaScript issues without ever looking at jQuery, React or newer tooling.

But this is exactly what makes being a Javascript developer a miserable experience.

And I can give Javascript some benefit of the doubt since it's a multi-vendor language with complex standardization processes and all the stakeholders have their own interests and limited financial backing. By contrast, Android is a single vendor platform with practically infinite financial and labor resources behind it.

It's just a mess. I'd expect a relatively painless experience: install dev tools, start a new project, build and go! But no, it's jumping through hoops, requires understanding a myriad of different SDK/platform versions and a constant churn in keeping your apps up to date with new versions while trying not to break backwards compatibility.

And a big part of this mess comes from the fact that device manufacturers and mobile operators are unwilling to keep old devices up to date (and Google can't force them, while I think they should with some kind of licensing contracts), leaving customers exposed to security flaws while keeping the developers churn high with multiple versions to be supported.

Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @08:35AM (#12700283)
You can open Android Studio, create a new project and "Go!". It'll work. Then you can add a single line of code to dependencies and you get even better APIs!

I also have no idea why are you mixing the device updates into the developer tooling argument. New apps are (should be - and the tutorials tell you so) developed with API 19+ in mind which means that you'll have to work for quite a while to get any problems with fragmentation and updates. You can even start development on API 21 and ditch support libraries all together and STILL not shed significant amount of userbase.

Re:It’s Been Real, Android: Why I’m Retiring from Android by 27182818284 on Thursday October 13, 2016 @11:07AM (#12701208)
>You can open Android Studio, create a new project and "Go!". It'll work

I tried this after their 1.0 release and it crashed. Mileage varies from person to person

Re:It’s Been Real, Android: Why I’m Retiring from Android by V-2 on Thursday October 13, 2016 @11:45AM (#12701513)
I believe you, but Android Studio has come a long way since.

I agree it was abysmal at first - when it didn't crash, every new update would break compatibility and your projects wouldn't build anymore etc.

Right now it's pretty decent, considering, although I'm not a fan of Gradle either.

By the way, even though it's a fork of IntelliJ Idea, it's ultimately shaped by Google which has sort of a tradition of realeasing alpha-stage software into the world. Remember first releases of Chrome? I do; they crashed like crazy and lacked basic functionality such as printing.

Re:It’s Been Real, Android: Why I’m Retiring from Android by gsmiro on Thursday October 13, 2016 @07:11AM (#12699864)
> It's just a mess. I'd expect a relatively painless experience: install dev tools, start a new project, build and go! But no, it's jumping through hoops, requires understanding a myriad of different SDK/platform versions and a constant churn in keeping your apps up to date with new versions while trying not to break backwards compatibility.

> And a big part of this mess comes from the fact that device manufacturers and mobile operators are unwilling to keep old devices up to date (and Google can't force them, while I think they should with some kind of licensing contracts), leaving customers exposed to security flaws while keeping the developers churn high with multiple versions to be supported.

Is it only me or there are tons of similarities to C# and the .Net environment?! More and more I feel Google just ends up with the same solution MS came up with in order to handle the diversity of vendors using its platform and their conflicting interesse.

Re:It’s Been Real, Android: Why I’m Retiring from Android by retox on Thursday October 13, 2016 @08:18AM (#12700198)
C# is as easy to get started with as I've seen for any language. I don't see the comparison?
Re:It’s Been Real, Android: Why I’m Retiring from Android by moron4hire on Thursday October 13, 2016 @09:47AM (#12700715)
ASP.NET used to be difficult to configure and deploy (just some things like basic defaults being pretty bad for real apps), but even then I'd say the alternatives at the time (EJB, Spring, etc.) were significantly worse. For all other uses, I've had zero tooling problems. Oh sure, there were times I painted myself into a corner with regards to my app design, but that will happen in any language. I've never found any platform as easy to get up and running as .NET.
Re:It’s Been Real, Android: Why I’m Retiring from Android by randiantech on Thursday October 13, 2016 @10:39AM (#12701027)
Hey, Im a Javascript developer and my experience es far from 'miserable'. Anyway, I see your point, and makes sense. I think node and npm helped a lot to actually achieve the flow you mention ("install dev tools, start a new project, build and go!").
Re:It’s Been Real, Android: Why I’m Retiring from Android by majewsky on Thursday October 13, 2016 @05:05AM (#12699411)
I think you just proved the point of the author. I haven't done any app development yet, but from how you describe it, it seems to be as hard to keep up with it as with the JS ecosystem. No wonder then that the author has trouble keeping up with two entirely distinct ecosystems, and chooses to focus on only one.

(That said, I'm very glad that this is the top-voted comment, since it looks like a very valuable resource for lurkers who want to get into the topic.)

Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @05:25AM (#12699493)
IMO it's really not (but I might be biased by experience) - the library churn is nowhere near the speed of the JavaScript world. All the libraries I mentioned are a few years old, battle tested and any larger conference or a resource (Android Weekly, Fragmented podcasts, etc.) will have numerous articles and talks on how to use them.

The only exception is Kotlin as a language, which is pretty new and the tooling is still improving. You're not going to hurt TOO much if you stay with Java6 though.

Remember, we at the end of the day we're all just old Java farts and we like our stability ;)

Re:It’s Been Real, Android: Why I’m Retiring from Android by dmix on Thursday October 13, 2016 @11:38AM (#12701437)
I'm not super familiar with the Java world. Will eventually adopting Java 8 improve the experience developing Android apps where you might not need Kotlin?
Re:It’s Been Real, Android: Why I’m Retiring from Android by pjmlp on Thursday October 13, 2016 @05:09AM (#12699430)
> Just like the web platform, Android is hugely improved when you leverage the community libraries and tools they provided.

Which speaks a lot about the quality of work provided by the platform owner, when the community needs to step up.

Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @05:29AM (#12699505)
Uhh, is there a platform there that isn't greatly improved by community libraries? At PSPDFKit we use a lot of additional third party tools and libraries on iOS as well, C++ practically needs community libraries to be usable, Python's biggest strength is in its excellent OSS library community, Ruby as well...

I mean, yeah, in perfect world we'd all have neatly packaged by Google, we'd write 6 lines of code and have the greatest app ever. But software development never kinda worked that way for me and I have a feeling it never will :/

Re:It’s Been Real, Android: Why I’m Retiring from Android by pjmlp on Thursday October 13, 2016 @05:35AM (#12699521)
C++ isn't a platform with a platform owner.

Python's biggest strength that lead to its adoption was being a language with "Batteries Included".

Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @05:52AM (#12699584)
I'm not sure about the meaningful distinction here. Programming on any platform will be greatly improved by using good (preferrably opensource) libraries. What difference does it make who made them and why? It's such a strange nitpick.
Re:It’s Been Real, Android: Why I’m Retiring from Android by samastur on Thursday October 13, 2016 @06:37AM (#12699731)
Difference is at the beginning. When I started using Python I absolutely loved that stdlib covered almost everything I thought I could need. These days packages I use mostly come from elsewhere, but at the beginning it was great.

I'm fine with Javascript development these days because I built my fundamentals years ago. I am not sure how comfortable I would be otherwise and when I meet people who are where I used to be, they often look lost.

I am also thinking about learning Android development and don't really know where to begin.

Re:It’s Been Real, Android: Why I’m Retiring from Android by pjmlp on Thursday October 13, 2016 @06:52AM (#12699776)
Because outside the startup world, in many enterprises developers are only allowed to use sanctioned libraries outside what the platform owner advises as best practices.

So everyone suffers when anything more complex than hello world already required third party libraries, specially ones that aren't even acknowledged by Google.

Re:It’s Been Real, Android: Why I’m Retiring from Android by Klathmon on Thursday October 13, 2016 @07:34AM (#12699952)
A self inflicted restriction doesn't make a language bad.
Re:It’s Been Real, Android: Why I’m Retiring from Android by pjmlp on Thursday October 13, 2016 @07:56AM (#12700073)
It is not self inflicted, rather imposed by customers.

Also the Android operating system isn't a language.

Re:It’s Been Real, Android: Why I’m Retiring from Android by Klathmon on Thursday October 13, 2016 @08:15AM (#12700185)
Regardless, it doesn't reflect on the language/os/ecosystem/platform/system/library/runtime

If a company wants to vet all of their software, good on them! But that doesn't mean that anything that's not vetted by them is somehow worse for the majority of users, just that they haven't vetted it yet. So any arguments about how "library x" isn't usable by them won't apply to the vast majority of people, because most don't have that issue, or have no problems vetting that library as well.

Somewhat off topic. Is there a word that encompses the langauge, platform, runtime, etc...? I hate the word "ecosystem", but it seems like the best bet. And using any one of the others brings out comments of "well it's not a language" or "it's not a framework it's a library" or something else.

Re:It’s Been Real, Android: Why I’m Retiring from Android by orangecat on Thursday October 13, 2016 @10:04AM (#12700809)
If you're using N separate libraries, that's N times the likelihood of breaking changes that force you to migrate at inconvenient times, and O(N^2) opportunities for bugs caused by incompatibilities.
Re:It’s Been Real, Android: Why I’m Retiring from Android by hinkley on Thursday October 13, 2016 @12:35PM (#12701995)
Two libraries can misbehave because they share a common dependency.

If you assume a roughly logarithmic intersection of shared dependencies that's O(N^2 log n) chances for a bug. But in some communities I'm sure even that is optimistic.

Re:It’s Been Real, Android: Why I’m Retiring from Android by rubber_duck on Thursday October 13, 2016 @11:06AM (#12701200)
Python biggest use case is a scripting language - you don't want to bother with dependency management and all that stuff when you're writing scripts.

When you have a more complicated project it's fine to rely on repo packages (Python does as well for eg. web frameworks like Django aren't in the core). In fact python std lib is hugely inconsistent stylistically as a result of needing to keep it stable over the releases as people expect it to be backcompatible and package versions are tied to language versions. If it had proper versioned dependencies doing breaking refactoring over the years would be really easy and non-intrusive.

Re:It’s Been Real, Android: Why I’m Retiring from Android by hyperbovine on Thursday October 13, 2016 @07:58AM (#12700087)
Python is a very well-designed language and always has been. The batteries wouldn't have ever existed without that fact.
Re:It’s Been Real, Android: Why I’m Retiring from Android by Kudos on Thursday October 13, 2016 @08:41AM (#12700315)
No it doesn't it's the same on iOS.

Apple didn't come up with dependency/package managers like Carthage or Cocoapods, the community did. There's just enormous amounts of OSS libraries provided by the community too, with ones like Alamofire smoothing out the rough edges of iOS's networking APIs.

Re:It’s Been Real, Android: Why I’m Retiring from Android by kitsunesoba on Thursday October 13, 2016 @12:15PM (#12701787)
The difference to me is that under iOS, you can go without these things (third party libs, Cocoapods/Carthage) and still be OK — you'll be at a relatively minor inconvenience, not ripping your hair out. Particularly with your example of Alamofire/AFNetworking, there's not a ton of functionality you're missing out on if you instead use NSURLSession, since they're both just light wrappers around it. This wasn't always true, but Apple recognized the gap in functionality and fixed it.

I have multiple personal Obj-C/Swift projects on iOS and macOS that don't use any kind of dependency management and use very few third party libraries and working on them has never been an issue or source of pain.

Re:It’s Been Real, Android: Why I’m Retiring from Android by janekm on Thursday October 13, 2016 @12:56PM (#12702168)
Actually, I make a point in my iOS projects to avoid third party libraries wherever possible. The first-party SDK is good enough that the dependency cost of libraries like Alamofire is usually not worth it. I had to do some Android development not too long ago, and I felt like I had entered some crazy la-la land until I found a bunch of third party infrastructure like Kotlin, RXJava and a pile of libraries to make life bearable.
Re:It’s Been Real, Android: Why I’m Retiring from Android by cloudjacker on Thursday October 13, 2016 @02:15PM (#12702817)
> Actually, I make a point in my iOS projects to avoid third party libraries wherever possible.

Thats not a bragging point.

Re:It’s Been Real, Android: Why I’m Retiring from Android by PopsiclePete on Friday October 14, 2016 @04:26PM (#12710836)
DRY can be taken to extremes. It is ok to sometimes write code yourself than to tie yourself and depend on some other library by "some guy". The whole NPM "left pad" debacle is proof of that.
Re:It’s Been Real, Android: Why I’m Retiring from Android by pjmlp on Thursday October 13, 2016 @10:04AM (#12700812)
What matters is the out of the box experience.
Re:It’s Been Real, Android: Why I’m Retiring from Android by FrozenCow on Thursday October 13, 2016 @06:07AM (#12699643)
IMO, this is exactly right. Not only is the quality of APIs often a disaster, the recommendations/best practices that Google is broadcasting have been way off in the past.

Rememember that Google has been advocating AsyncTask in the past. You could use something else or roll your own, but it doesn't make sense to do that when AsyncTask is being communicated as the way forward. They should've embraced third-party libraries, but instead they still communicate how to use AsyncTask. Example: last March 2016 they published a video on how to use AsyncTask [0]. They do highlight the red-flags around it, but do not mention any of the third-party libraries that are considered standard for a lot of Android developers already.

The same goes for Fragments. It is still being advocated as the right way, but I have some doubts. I imagine they will be advocated against in a couple of years. They help at the time, but are far from logical/simple when you don't know all of the crooks and crannies (and there are quite a few).

Another API that needs serious work is the Storage Access Framework (SAF). Previously Android applications could use the Java File API to access files. With recent Android versions this has been closed off with good reasons and intentions. Instead of using the File API directly, you now need to use SAF. SAF doesn't support all operations you could do with the File API. I would say this is a regression and existing applications that relied on these features are now broken and unrepairable. In addition, applications now needed to explicitly ask the user for permission to specific directories or files. This was so badly implemented that every file manager needed to instruct the user on how to use the directory picker of Android using screenshots before showing the picker. This is still a problem and even if it is fixed, it will still be a problem for years due to phones being unable to update.

To give you an impression on how those APIs are designed: many calls of SAF will return null to indicate something went wrong. No exceptions or error-codes. There is often no indication why a certain file cannot be retrieved. It could be non-existing, it could be denied permissions, it could be some strange behavior in the rom. There is sometimes a way to find out why this returned null and that is looking through Androids global log. I've implemented this in the beta of my app so that I could find out why files weren't accessible on some devices.

Also, because of the slow adoption of Android versions, your application needs to support both SAF and the Java File API. The support library has wrappers for Java File API that works like SAF, but it's still a downgrade to use this API as exceptions from the Java File API are just ignored [1].

For me Gradle is actually a step in the right direction. Builds seem to be more reproducible and do not fail randomly compared to the Eclipse/Ant days. The performance is however awful. Incremental builds take 30 - 60 seconds. When comparing this to building pure Java projects it shows that it is an Android-only issue and not one with Gradle.

[0] https://www.youtube.com/watch?v=jtlRNNhane0

[1] https://github.com/guardianproject/android-support-library/b...

Re:It’s Been Real, Android: Why I’m Retiring from Android by cageface on Thursday October 13, 2016 @05:40AM (#12699537)
This is also very much the case with iOS. If you just stick to what Apple provides you're going to suffer a lot more than necessary. Libraries and tools like Snapkit, R.swift, Fastlane, and Alamofire sand off so many rough edges on the APIs and Xcode.
Re:It’s Been Real, Android: Why I’m Retiring from Android by cableshaft on Thursday October 13, 2016 @10:42AM (#12701049)
Trying not to add dependencies after being burned in the past (cocos2d-swift disappearing was a particularly harsh one), but they all look interesting. R.swift in particular I might have to add. Autocomplete and compile time checking of resources is something I wish was more common in other environments.
Re:It’s Been Real, Android: Why I’m Retiring from Android by cageface on Thursday October 13, 2016 @01:12PM (#12702331)
R.swift is brilliant. Apple should just write them a check and make it part of Xcode instead of playing cute games with rendering tiny images inline with code.
Re:It’s Been Real, Android: Why I’m Retiring from Android by jimbokun on Thursday October 13, 2016 @01:23PM (#12702424)
"All-in-all, I honestly think the author didn't really look into Android all that much to have complaints that he had."

The author states pretty plainly the biggest reason for leaving Android development was he didn't have time to keep up with all the developments in both Android and iOS communities.

Re:It’s Been Real, Android: Why I’m Retiring from Android by odbol_ on Thursday October 13, 2016 @03:24PM (#12703353)
Then he's not a very good programmer. This is technology: at the rate it's advancing, even tools from 5 years ago are out of date. You have to constantly keep up with the latest advances in programming if you want to stay relevant.
Re:It’s Been Real, Android: Why I’m Retiring from Android by jimbokun on Thursday October 13, 2016 @11:37PM (#12705984)
Hahaha, no. I'm not buying for a second that you are proficient and current in every kind of programming there is.
Re:It’s Been Real, Android: Why I’m Retiring from Android by chx on Thursday October 13, 2016 @04:25PM (#12703754)
But do you want to do that on every platform?
Re:It’s Been Real, Android: Why I’m Retiring from Android by smrtinsert on Thursday October 13, 2016 @01:03PM (#12702242)
The gradle and multidex complaints are spot on. Even as an enthusiast developer making my own personal apps for myself, I see this as true. I'm ok with Fragments, Rx makes everything nice.
Re:It’s Been Real, Android: Why I’m Retiring from Android by on_and_off on Saturday October 15, 2016 @08:49AM (#12713768)
Agree. I was expecting the author to lament on something like java vs swift. Even that would not be the best argument ever since you can write your android apps entirely in kotlin and it is vastly similar to swift. A real downside of kotlin is that it complexifies your build (but only the first time you have to setup a complex project with kotlin, dagger, databinding, etc) and that the tooling is not on par with the base java one.

Multidex ? it is far from perfect but it is not a day to day issue. I work on a 200k methods app and multidex actually makes it almost entirely painless.

Gradle ? Nobody can seriously say that builds have gotten worse with gradle. Before it, we had no way to hook up libraries with resources (aar). Now we just have to 'import libname:version' The complaint on the build times is very fair though. The solution is easy though .. just use an high end computer

I use a mid 2015 mbp, it can handle an huge android app without any issue (except that build times are only acceptable, not great).

It really looks like he has been submerged with having 2 platforms to learn at once and has not been able to tackle the basics.

Re:It’s Been Real, Android: Why I’m Retiring from Android by ilogik on Thursday October 13, 2016 @07:38AM (#12699974)
Is there a tutorial or book that you can recommend for a newbie to get started with Kotlin,MVP, etc?
Re:It’s Been Real, Android: Why I’m Retiring from Android by on_and_off on Saturday October 15, 2016 @09:22AM (#12713834)
There is a great google repo with many architecture samples, including some MVP ones : https://github.com/googlesamples/android-architecture

For kotlin, no book needed. Go to the language website, read the introduction, maybe a couple of pages on the language features and then complete the kotlin koans. It will give you an overview of most of the language features.

After that, find an android project written in kotlin. Here is one : https://github.com/LostInContext/LostContext-App (there are many others) . Configuring an android project in kotlin the first time can be painful, especially if you have some code generation (dagger, databinding, ...) , so it is way easier to have a working sample to work with.

Re:It’s Been Real, Android: Why I’m Retiring from Android by lucasarruda on Thursday October 13, 2016 @08:52AM (#12700377)
I guess his point is not that Android platform hasn't improved, but the effort itself to develop for it versus developing for iOS platform.

Cost benefit also is probably lot better on the iOS side ($$$ you get to develop an app / time to develop it).

Re:It’s Been Real, Android: Why I’m Retiring from Android by signal11 on Thursday October 13, 2016 @06:39AM (#12699739)
> Gradle badly needs performance improvement

gradle --daemon is a hack, I guess, but I always use it for my builds (even aliased gradle to gradle --daemon). It's far too slow otherwise.

On newer gradle releases I believe the daemon is enabled by default.

Re:It’s Been Real, Android: Why I’m Retiring from Android by foobarian on Thursday October 13, 2016 @08:15AM (#12700186)
My problem with gradle is the built in Java dependency resolution is way too aggressive. If you change a class with a static constant it recompiles everything. Even if you don't, it will compile the whole dependency graph to handle some theoretical edge case when it would be enough to compile just the modified file 99% of the time. Oh well.
Re:It’s Been Real, Android: Why I’m Retiring from Android by Sagiri on Thursday October 13, 2016 @03:20PM (#12703317)
Personally, I would rather builds be slow than have my build mysteriously break when I'm in that 1%.
Re:It’s Been Real, Android: Why I’m Retiring from Android by foobarian on Thursday October 13, 2016 @11:38PM (#12705988)
For me it depends. If I'm in a development session with lots of iterations where build speed is the bottleneck, I'd take my chances (I do anyway, have to resort to manually compiling individual files). For production/CI/other builds it's a different story, although those usually get built clean so it's not even a consideration.
Re:It’s Been Real, Android: Why I’m Retiring from Android by on_and_off on Saturday October 15, 2016 @09:25AM (#12713842)
if you are on a dev session with a lot of iterations, you really want to go the InstantRun (or JRebel) route.
Re:It’s Been Real, Android: Why I’m Retiring from Android by rkapsoro on Thursday October 13, 2016 @10:38AM (#12701023)
Hey, what libraries for assisting with MVP/etc. patterns did you have in mind?

Incidentally, our Kotlin-based app actually has a completely custom one that an opinionated product guy wrote that works reasonably well, but it still needs a lot of work and probably to be fully extracted for an OSS release. We also have some Kotlin delegated properties and other magic for cutting down on lifecycle & state management boilerplate.

Re:It’s Been Real, Android: Why I’m Retiring from Android by mmargerum on Thursday October 13, 2016 @08:54AM (#12700394)
> you certanly have missed a lot of progress in the last few years.

I think that's kind of his point. He was spreads too thin.

Re:It’s Been Real, Android: Why I’m Retiring from Android by swsieber on Thursday October 13, 2016 @10:49AM (#12701097)
And Gradle 3.0 does have some major speed improvements. Though if that's not enough, then I'd probably suggest Buck as build tool.
Re:It’s Been Real, Android: Why I’m Retiring from Android by raverbashing on Thursday October 13, 2016 @04:51AM (#12699362)
* and its friends

* and its management

* by its scripting language

Re:It’s Been Real, Android: Why I’m Retiring from Android by izacus on Thursday October 13, 2016 @05:27AM (#12699496)
Thanks! Fixed that!
Re:It’s Been Real, Android: Why I’m Retiring from Android by finchisko on Thursday October 13, 2016 @04:39AM (#12699329)
Exactly. Criticize is easy. That guy should stop whining and rather enlighten us with his home brewed platform, language, tooling, etc.
Re:It’s Been Real, Android: Why I’m Retiring from Android by hehheh on Thursday October 13, 2016 @05:30AM (#12699509)
You're allowed to point out a project's faults without having created an alternative version.