RoboJackets / apiary

A web app to support RoboJackets internal operations
https://my.robojackets.org
Apache License 2.0
20 stars 5 forks source link

Add Graceful Fallback for JS disabled browsers #196

Closed ryanstrat closed 5 years ago

ryanstrat commented 7 years ago

If JS is disabled, display a message instructing the user to enable JS.

jgkamat commented 7 years ago

Are the users who cannot enable javascript SOL? That's pretty user hostile behavior IMO. If facebook can have a full featured no js mode, I see no reason a tiny webapp can't as well.

ryanstrat commented 7 years ago

Javascript is the only way we can provide realtime features such as instant validation and saving, searchable/sortable/filterable tables (without a reload for every change), and typeahead for user lookup and selection. It certainly isn't possible to be an admin without javascript, but perhaps we could make it possible to be a member without Javascript. However, the dev team for this project is 2.5 people. We don't have the resources to build a second, less functional version of the same application.

Using Vue.JS on the front-end allows us to write a UI that utilizes the same RESTful API that is being made available to any other developers in RoboJackets, without having to spend additional time writing more controller classes and more permissions guards. As with all technical decisions, the requirement is a trade-off, one that we deemed acceptable, given the benefits to reactivity and development speed.

I firmly believe that we do not need to cater to every possible audience with internal software. As it stands, we do not currently test on Internet Explorer, Edge, Safari, or Opera, we do not support languages other than English, and we do not support browsers without Javascript. These are decisions made based on an evaluation of the resources we have and the task we have been charged with.

This is an open source project, and we will gladly work with anyone willing to put the time in to build a fallback version of certain core features. But at the current time, the existing Apiary team cannot devote resources.

jgkamat commented 7 years ago

I firmly believe that we do not need to cater to every possible audience with internal software.

Last year, I met two brilliant freshman in RoboCup training (both of whom were much smarter than me when I was a freshman), who I really hoped would remain in the club. However, one actively used NoScript and the other used a text based web browser, and that made it impossible to view the slides I prepared for meetings (since I had decided to make them in javascript at the time). In order to accommodate these members, I produced markdown and documentation exports, which could be viewed in both plaintext and web (with no javascript) transparently, with no missing data.

However, they both eventually left the club. While I was not sure why at the time, I think I understand why now, as I have become much more similar to these new members than I ever expected. I find that similar people make similar choices for the same reason.

  1. RoboJackets moving away from simple, easy to understand, and open communication methods such as email, and towards complicated, closed systems that have vendor lock in, and force users to use particular software (slack, github, trello, requiring clion, orgsync).
  2. The general lack of transparency of core RoboJackets towards incoming, non-core, and potential RoboJackets members (this was a problem which I accepted when I joined)
  3. The lack of acceptance of (read: embracing) diversity, in favor of a mono-culture, which is traditionally defined by the older members in RoboJackets
  4. The /implicit/ (non-intentional) "superiority" that older members are granted with, simply because they have been around longer (not enough is done to ensure all new members can have an impact on major decisions)
  5. The elitism that RoboJackets currently has over other clubs and organizations. ("Apiary is a tool for managing organizations that actually do things.")

I really hope those two members found something awesome to work on, because they have enormous potential to change the world if they apply their skills in a productive way. Hopefully, I'll be lucky enough to meet them again in the future someday!

As it stands, we do not currently test on Internet Explorer, Edge, Safari, or Opera, we do not support languages other than English, and we do not support browsers without Javascript. These are decisions made based on an evaluation of the resources we have and the task we have been charged with.

That's very disappointing. RoboJackets doesn't seem like a good club anymore for anyone who values the openness of the web, who's first language is not English, or who highly values security and privacy. When I joined the club 3 years ago, this was definitely not the case, but now I find myself in a position where I would not join the 'new RoboJackets' if I was a freshman once again. Decisions like this cause the people who disagree to simply leave the club, leaving an echo-chamber which leads people to believe that more people are in the same category as you than there really are. I don't really see a reason to pay dues for an organization actively working against my core ideals, when that money (which is not insignificant) could be much more efficiently used by other projects (who honestly need it a lot more). The only reason I'm still here is because I was incredibly naive as a Freshman.

Using Vue.JS on the front-end allows us to write a UI that utilizes the same RESTful API that is being made available to any other developers in RoboJackets, without having to spend additional time writing more controller classes and more permissions guards. As with all technical decisions, the requirement is a trade-off, one that we deemed acceptable, given the benefits to reactivity and development speed.

It seems like you chose a technology which dosen't support basic functionality of the web, that's not your member's problems, it's whoever made the decision to use that framework (and/or the framework's itself).

This is an open source project, and we will gladly work with anyone willing to put the time in to build a fallback version of certain core features. But at the current time, the existing Apiary team cannot devote resources.

All software will eventually die (perhaps only emacs and vim will survive until humanity goes extinct), and since contributors sadly have only a finite amount of free time, it makes sense to prioritize effort towards projects that have the biggest impact. The case for contributing to Apiary is extremely weak for any potential contributors because:

  1. The impact is limited to a club who's members are limited to a school, limited to a couple majors, and limited to a shared interest. (To fix this, make it easy and desirable for anyone to run this application)
  2. Self-Impact (how much it helps the person who's contributing) is limited to membership in the club (~4 years)
  3. (For RoboJackets members): Impact has nothing to do with the RoboJacket's mission of Promote, Educate, or Advance. Time could be better spent promoting Robotics, Educating new members, or building new robotics systems. (To fix this, change RoboJackets mission and advertising to something more compatible with your true goal)
  4. Impact does not break new ground - there are no 'new ideas' to introduce to the world here. (To fix this, demonstrate some of the new ideas that you are doing and why it's different from other previous solutions on your README)
  5. There already exist projects that do everything that you are planning to do with less opinionation and more flexibility, it makes sense to just contribute to and use that software instead. (To fix this, improve on an existing project that does most of what you want, don't fall victim to NIH)

In the interest of keeping this constructive, I see two options (since you outright rejected making this software properly accessible in many ways).

  1. Accept that RoboJackets will loose members who value the things you are discriminating against (which makes it harder to return to a more diverse state later on)
  2. Make this entire system optional, and said members will be able to participate in RoboJackets 100% without interacting with this system at all. While not ideal, this will allow persistent members to remain, although this will still scare off the majority of dissenting opinions if care is not taken.

I really would hope that the only requirement to join RoboJackets is a interest in robotics, but more and more, I'm seeing that's simply not the case.

What are your thoughts?