Comments (2)
I think I already addressed that question over here: AndyObtiva/glimmer-dsl-gtk#1
I am repeating again for convenience:
"I think Glimmer’s most important goals are high productivity and simple maintainability. Unification is not a very important concern by comparison. It is good to have multiple different tools available to be able to use the right tool for every varying job. Options are helpful to have."
To clarify further, if any of Glimmer's projects are enabling software engineers to write an application at a fraction of the time they could write it without Glimmer, I have succeeded in meeting my goals. In fact, that is exactly what Glimmer enables; that is finishing projects that take years in months, projects that take months in weeks, projects that take weeks in days, and projects that take days in hours.
Furthermore, given Glimmer's custom keyword support (like Custom Widgets and Custom Shapes as illustrated in Hello, Custom Widget! and Hello, Custom Shape!), it has no upper cap on productivity. You could always compose ever higher concepts that are simpler than lower more complicated ones, thus double, triple, or tenfold your productivity and more...
This also makes maintainability cheaper, meaning the work you needed to do before to add a feature is a lot less given you would have a lot less code to maintain with Glimmer DSL syntax. So, a project that took $100,000k per year to maintain now takes $50,000k or less to maintain (perhaps $5,000k) thus increasing profit by developing and selling multiple projects in the same time it would take to develop one project.
In the grand scheme of things, unification is not important at all except in cross-platform situations to make the same app run on Mac, Windows, and Linux or desktop, web, and mobile. Otherwise, I appreciate the competition that diversity brings to various projects. For example, GTK Cairo competes with Java2D, and LibUI competes with SWT. Diversity is good. It encourages different toolkit software engineers to innovate their own unique ideas that may not be available in other toolkits for a while. This ensures the entire ecosystem is thriving and growing. I wouldn't want to hold that back by trying to enforce one common unified platform on everyone.
But, as demonstrated by the Glimmer DSL for Opal project, I do see a benefit in unifying web and desktop as platforms to avoid duplicating wasted effort. That said, when people usually use a toolkit like GTK, they would not care that much about also supporting FOX toolkit. What they chose originally tend to be good enough to commit to in the long term. But, they might want to support Web in addition to Desktop, so the Glimmer DSL for Opal projects aims to provide adapters (Adapter Design Pattern) to enable the same desktop app code to run over the web. Furthermore, I added to TODO.md the idea of exploring building a Glimmer DSL for RubyMotion, which enables writing apps for mobile in Ruby. I could perhaps add another Adapter layer to this project to make the same desktop app project run on Mobile automatically (but I am not sure yet if this is a good idea given the varying screen sizes on Mobile.. I'd have to try it to find out)
Otherwise, to recap the grand vision of Glimmer, it is simply to enable higher productivity and maintainability everywhere it is needed.
For example, I don't care to support bad toolkits like Qt that are not even well supported in Ruby anymore.
But, I wouldn't mind supporting every GUI toolkit out there that has a large user base, like FOX and Swing in the future (even if generally GTK and SWT might be able to do everything they do, but better). After all, I respect people's choices for various toolkits, and I wouldn't want to hold that against them (assuming the toolkits are decent enough of course). If someone thought Swing was the best toolkit for their project, it wouldn't hurt to double their productivity and halve their maintainence time using Glimmer.
I would be willing to support every GUI toolkit that is worth its salt out there. I think FOX, Swing, and JavaFX remain as toolkits to support in the future in addition to all the current Glimmer DSLs.
I also added glimmer-dsl-specifications to TODO.md, which would be the first non-GUI DSL, made for writing better automated-testing specs than RSpec (which I think got diluted lately by many awful community ideas like switching to an imperative expect syntax that contradicts the original goals of RSpec's should syntax which I attended a talk for in Chicago when the project first started). To be honest though, I am not even sure if I need all the capabilities of Glimmer for this project. I might be able to build it without Glimmer. I'd have to start it out to find out.
I hope I answered your question. I am closing this issue for now. We could continue conversation while it is closed if needed.
from glimmer.
What if we could use glimmer a bit like rack, as a base for other projects, BUT also as an
abstract toolkit for rails-based projects? Perhaps even have direct support for javascript
as-is via opal.
What I mean with this is ... if we think about rails, we work with widgets too, sort of - all
the HTML5/CSS things, and the dynamic parts via javascript or some javascript-framework.
Wouldn't it be cool to actually describe this just once, e. g. in the glimmer DSL but have
it work "internally"? I am not necessarily saying to be able to do what ALL of rails can
do, but more like ... a bootstrap stage for minimal rails-like things. Like a web shop!
Concerning Rails, perhaps Glimmer DSL for XML & HTML (glimmer-dsl-xml) could be leveraged on the server-side as a pure Ruby alternative to ERB. I definitely could see this improving productivity as one of the things I hate most about ERB is having to mix Ruby with HTML. With Glimmer DSL for XML, the problem is solved! You just write Ruby code for everything and the HTML part is a lot more concise and readable in Ruby anyways. I had this idea since 2007 to use Glimmer DSL for XML in Rails, but I never got around to executing it and now I think other competing projects already copied my idea and did it. Still, perhaps it would be valuable to offer as an option anyways since Glimmer often has unique productivity ideas and smart defaults/conventions not found in other projects.
Otherwise, Glimmer DSL for Opal already enables using Ruby code on the front-end in Rails.
from glimmer.
Related Issues (20)
- Glimmer "store"? HOT 2
- [Suggestion, low priority] Provide "statistics" and information about the whole glimmer suite in some way, or perhaps several ways HOT 1
- Glimmer gosu support? (This is more a question though) HOT 1
- [Idea, just as impetus, don't worry about implementing it and feel free to close it at any moment in time] "Automatic glimmer" or "Automated glimmer" - automatically generating a GUI for commandline applications HOT 1
- [Idea / Suggestion] "Glimmer components": the idea is to have different glimmer widgets, no matter the style, that could be integrated / included and re-used. For instance, rubio-radio to be embedded in a tabbed notebook with a weather-displaying widget HOT 3
- Battleships - a few not-so-important comments/suggestions, please feel free to ignore/close at any moment in time HOT 6
- [Small idea / question] Customizing Glimmer Tetris? HOT 1
- [Related to the RubyConf 2022 Talk in about 3 months] If you have time during the talk, could you also mention future ideas and goals for glimmer? HOT 1
- [Minor suggestion for future video content] A video in regards to "workflow use" / computer setup, from the point of view of glimmer, but also aside from glimmer HOT 5
- Glimmer Video Request +1 - a dedicated video for "styling glimmer" applications HOT 3
- [Idea, please close as desired] Glimte-Glimmer for Everyone \o/ (GUIs everywhere) HOT 1
- [Idea] glimmer + curses / ncurses HOT 1
- [Idea] "Standardized" glimmer components HOT 3
- Glimmer statistics (aka overview)? HOT 1
- Enable GitHub Discussions on all glimmer repos HOT 2
- A few ~smaller suggestions, kind of; in particular 2-3 or so suggestions for expanding the FAQ entries HOT 1
- Glimmer support for jruby + SWING? HOT 1
- glimmer-meta-overview: Offer some (multiple?) way(s) to check on glimmer progress overall
- NixOS package
- [Proposal] A new glimmer FAQ repository to specifically answer FAQ-related questions from different users HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glimmer.