About DownQuark
Vision
To see an open web where languages and libraries are no longer competing, but work alongside each other, contributing to an overall concept.
The issue to solve…
In 2019’s State of JS over 30 frameworks were analyzed. This means that a large population has devoted time and energy into learning one of these frameworks while most-likely dismissing others that could be a better fit for their particular problem.
New issues arise and frameworks are created to address them. FrameQuarks are a vital part of development (especiialy in the Front End), and they are not going anywhere so we should embrace them.
However, the amount of overhead it takes to learn and analyze each framework would cause development to come to a standstill if you were to try to do so for any given project. Not to mention projects that have already begun.
Mission
To openly leverage individual efficiences from multiple sources thought to be incompatible while creating cohesive applications.
The envisioned result…
Unless specifially created to do so, frameworks rarely work hand-in-hand with one another. While this may help validate one framework over another for specific use cases, it could the overall product of an application.
Imagine a development process where:
- You did not have to choose the framework before you began the project
- You could choose the best framework for the project at any point during development
- You could even export to mulitple frameworks
- Run performance checks on each
- Then decide which to push to production!
Pretty cool huh?
But we can take that one step further!
Imagine a development process where:
- A framework is never specified
- Each framework’s efficiencies have been analyzed
- Each framework automagically compiles the parts of your application that it can render / parse the fastest or most accurate
- Multiple frameworks work cohesively in your application with no additional effort on you as a developer*
* - everything could work ”out-of-the-box“, but is also 100% configurable if desired
SPOILER: There’s more…
, when utilizing Concept Driven Development all of the following are supported:
- At any time during (or after) development you can specify your platform(s)
- IPFS and GraphQL
- PostgreSQL and Node
- Web3 and SparQL
- etc…
- If you’re not sure what you need, let our application decide, perhaps a Gatsby JAM stack will be suggested.
And, what may be the most popular feature of all, obtaining a high percentage of automated test coverage will no longer be a separate, at-times-tedious, process.
(keep reading to find out why)
Core
Understanding a concept in development is far more powerful than knowing its syntax
DownQuark’s promises…
Any project created at DownQuark will be fully open sourced, and will attempt to use only open sourced material from third parties. DownQuark will strive to keep all repositories populated with the most up-to-date code available. And all comments and (constructive) critisisms and critiques will be welcome.
Questions and comments may not be answered right away, but will be answered as soon as possible. If you think it’s been too long then please re-send it. Or try getting in touch through another channel.
Phew… With all of that out of the way, if you’re still with us, why don’t you take a look at how we plan on accomplishing this.
Concept Driven Development I
In addition to the features mentioned above there is one more aspect which is central to DownQuark:
We hold the belief that it is possible to create a framework that has virtually all syntax requirements removed.And what requirements do remain can be fluid in nature, built in a way that swaps errors with suggestions, replacing rote memorization of documents with helpful hints along the way.
And most importantly: ensuring that anyone who wants to build something for the web is more than capable to do so.
For the Newcomer
For the Developer
Concept Driven Development II
While standing firm on the belief that having a “close-to-syntaxless” framework will result in a better experience for anyone who wishes to begin exploring development, we realize it would most likely have the opposite effect on anyone with enough experience.
And luckily, the solution is simple:
Use the syntax.
Need two-way binding for a form field?
Use [(ng-model)] without hesitation.
There is also an unordered list on the page, and a state change will result in a change of half of the list items.
What Angular is lacking in memoization, React is more than capable of handling.
The same fluid syntax requirement mentioned above is what allows the code from multiple frameworks to run alongside each other.
For example, the following allows angular to create the initial loop leaving react to apply the needed memoization if the data were to change.<li key={item.id}*ngFor="item in items">{{item.name}}</li>
By allowing the syntax defined by other frameworks to be optional we gain more control over how the application functions.
Having the ability to choose when to adhere to pre-existing framework syntax means we can still eliminate side effects, lower BigO, and shave those milliseconds off of load time.
Flagship Projects
Core Applications
We have made some pretty large promises above.
How do we plan for our framework to be able follow through with them?
Simple: We don’t
(see below for what we do expect from the framework)
Concept Driven FrameQuark (CDF)
DownQuark’s flagship product, and the “bones” of the Concept Driven Development process.
A framework designed to be intuitive by nature; replacing syntax errors with well written code sourced from the most efficient aspects of other frameworks.
Read full details⋮
To help prevent a TLDR; it is recommended to read the Envisioned Result scenario from the Mission Statement above first. I will be releasing the notes and stages for this project at its associated github repository.
There are numerous stages planned to bring this to its full potential, and I have a feeling that many of those will change as development begins and concludes for the steps that come before it.
In addition to the github repository:A kanban board will be shared on Taiga.
Both subject to change.
IDE CoDEQ
The “Conceptual Development Environment Querier”.
This is the application that will allow the Concept Driven FrameQuark to function as described.
The CoDEQ acts as the “brains” beneath the ‘bones’.
Read full details⋮
As with the above I will be releasing the notes and stages for this project at its associated github repository.
The numerous stages will be mentioned there before hand to help gain a better understanding of how everything is to be integrated. But again, there are many unforeseen changes that are fully expected to come into play.
We will take a new approach to an IDE’s role in development, utilizing it in a way that allows the correct rendering of:
- code that is non-standard, almost without syntax
- competing frameworks
- high level functional programming
- most things in-between
There will be MUCH more information about this build as we proceed and the roadmap and kanban will most likely be more useful with this project than the FrameQuark. Because while the FrameQuark is the skeleton of the idea behind Concept Driven Development, this IDE integration is the brain.
Please browse the links below (as well as those from the FrameQuark above) to gain a better understanding of how the two projects will interact.
ConceptIt
It’s what you didn’t know was missing while planning the design and development of your app.
or
A tool that sallows designers and developers to speak the same language... at the same time.
Read full details⋮
What appears to be another standalone desktop markdown note taking / code organizing app is deceiving. Let’s be honest:
- If you have have long prose or need to take notes about something outside of the computerized creative fields you will be hard pressed to find a better solution that Boostnote
- If you need to keep reusable pieces of code handy then you wil be better off using a product such as Renfei.org’s snippets-lab or OKatBest’sBoop
- And to see what happens when you run that code, a more intensive product like coderunnerapp will yield much better results
Unlike all of the above applications, ConceptIt is meant to evolve alongside your project.
While assisting in any and all aspects of Ideation this will keep all project notes relevant and available at a glance.
When pre-planning it acts will help organize all notes hastily created during brainstomring sessions, unfinished stream of consiousness thoughts, or anything else in disarray.
Add (or import from your current workflow) any mind-maps, mood boards, style guides, and other creatives.
- watch as all relevant colors, fonts, logos, etc update to the most recent entries (warning of ay conflicts) as you do nothign but continue doing your normal planning and design routine.
As development begins, a quick sync of the public content and the developer has all the notees organized into a codebase ready to be integrated.
- A prepopulated style guide for example
As development proceeds any questions can be entered into the developer’s ConceptIt App, any relevant information flagged, one or more people specified, and a notification sent.
- All people notified receive the question along with all flagged information at a glance. No time wasted trying to understand the question.
- The questioned answered, the developer make the update, and all synced ConceptIt Apps reflect the change
One more aspect of this. Developers have their own scratch notes and snippets.
And this application allows those to be expressed as the develper desires.
After the project goes live the developer has an idea for a loading animation. So he creaets a markdown code block with the language specified and adds a flag that it should be run as code.
- Anyone that views that section sees not only the markdown code block, but also the rendered/returned output from the snippet.
(more features will be added as developemt continues)
The final aspect that makes this application unique is what happens when design is approved and the developer creates a new project.
ALL information created in the planning phase is delivered to the IDE CoDEQ and applied to the empty application.
- Everything from styles to routes, from javascript methods to page content, is written to the project’s initial codebase awaiting further updates.
- (at this point CoDEQ treats the framework as the Single Source of Truth and will only make updates from the framework to the ConceptIt App)
Style GUIIDEER
Style GUI + IDE + Explanation Resolver.
Render components that follow the Atomic Design principle by describing the end result.
Read full details⋮
An IDE that allows you to write the following:First Name form field with a disabled gray button that becomes enabled and blue when there is at least one letter entered.
Will render the correct code to deisplay the elements and functionality described.
In addition to creating the end result the application will work backwards, deciphering where each piece of the given explanation would belong within the Atomic Design Pattern.
Along the way it compares values to previously defined variables to create or reuse consise, consistent Design Tokens.
When the organization of the rendered components has been solidified a Style Guide with custom GUI will be available allowing for additional tweaks or updates to be made within a bespoke IDE
Micro-Builds
Build Process
To successfully develop all the pieces mentioned (and those that aren’t) we will be treating the CoDEQ not as a single project, but as a series of microservices.
The projects below are not to be thought of as fully ideated in any sense. They are, and will continue to be, our "best-guess" but always subject to change without notice.
The DownQuark website (and graph below) will also likely fall out of sync with what is currently happening.
The Taiga Tree will be what we consider the Single Source of Truth and will be the best place to get current information.
A roadmap and Gantt chart will be coming soon.
Any time a link mentioned in the project’s description (clickup, githhub, etc) updates, a link will be created in Taiga to prevent unnecessary seraching to find out about the status of a project.
Prerequisites
Initial Builds
The projects in this section are mainly for utility purposes. They will not directly affect the end user but will help with the development of subsequent builds in the application.
ProtoSnippets
Creating a commonly used set of functions that also signals the official start of DownQuark’s commitment to Open Source
overview⋮
An open source snippet manager utilizing javascript's prototypical inheritance that allows immediate integration into projects.
- Create a snippet that modifies a string
- Require and use the snippet immediately
'MySring'.mySnippetFunction()
- Share your favorite snippets by making a Pull Request and see them in the next version of this package!
javascript
Gitlates
A collection of auto-running git templates
overview⋮
Helping ensure consistency a set of rules will automatically validate the format of the string created when: committing code, creating or handling Pull Requests, or cutting new branches.
More information: coming soon
rustN0de Modules
Frees diskspace due to multiple installs of identical `node_modules` dependencies.
overview⋮
Continuing where NPM leaves off
Outside of an agency or development shop this may not result in an issue. If you are in a position where you rely on many node packages then the amount of storage occupied can get out of hand pretty fast.
$ find </Path/to/Development/Directory> -type d -iname node_modules -prune -exec du -hc -d=1{}+The above code there were hundreds of `node_modules` folders returned. Taking up 5.6GB of memory.
NPM does a great job managing and distributing node packages, but I want to handle them differently when they are installed locally.
In a nutshell this will keep track of what projects use what packages from npm. It will then compile them into a centralized location and remove any redundancies while versioning correct updates as needed.
More information: coming soon
javascriptDependencies
External Builds
The projects in this category will be deployed separately, allowing easy re-usabily among the upcoming Core Concept Services section
PseudoMocks
overview⋮
Fraudulent Data that is auto-mocked whithin the CoDEQ.
More information: coming soon
SMC(CMS in Reverse)
overview⋮
The CoDEQ will have the ability to create and define the backend CMS mappings as you write the frontend code…
More information: coming soon
FrontEnd Auto Checklist
overview⋮
The CoDEQ will monitor the FrameQuark Use the template from frontendchecklist.io and automatically keep the items in sync as development proceeds.
More information: coming soonrustwasm
Concept & Service
Core Concept Services
These builds are going to be the majority of the work.
Although modeled off of microservices they will be full fledged components when completed.
A somewhat extensive overview of each component exists as markdown, and can be seen on github by clicking the octocat () or the progress completed by clicking on the Taiga logo. ()
FrameQuark Dependency Options
FrameQuark Static Build
ConceptIt Architecture
ConceptIt Multi-Sync
ConceptIt CoDEQ Entanglement
CoDEQ CLI Init Menu
CoDEQ Pop Over Creation
CoDEQ Routes FabricationStyle Guide
CoDEQ Analytics
Miscellany
Unrelated to Concept Driven Design, the following are a select sampling of some open source projects and video lectures that I feel should be showcased.
Web3 & Crypto
View works⋮
Coming Soon
Tutorials & Resources
View tutorials⋮
Preparing submission for:
- Conceptually driven AI & Game Engine development
- Free and Open Source Software builds of applications that currently have no “Free Tier”