Comments (9)
OK, that's fair enough. Thanks.
from polylith.
I'm also going to add a note here, reflecting the discussion on Slack that @jasonjckn and I had:
Having migrated to the new EDN file organization at work, I do not like having 20+ separate files to check for poly
tool configuration (esp. the per-project aliases), and it's not a great experience in an editor that shows just the filename when you have lots of config.edn
files loaded and you can't easily tell which project they belong to.
Just from an overview p.o.v., having to now consult multiple files to look at how the workspace is organized -- or being forced to run a command to get that overview -- is suboptimal.
Having the same name for all these new config files when they have different EDN schemas also feels "wrong".
Also, at work, we've renamed all the generated/migrated config.edn
files to polylith.edn
so that it is clear that these scattered EDN files belong to the poly
tool and not some random per-project configuration/tool.
from polylith.
This change sounds cool and reasonable! It would also be great if these project.edn
and brick.edn
files remain open for any custom metadata (extra key-val pairs) that Polylith users are willing to add for their projects.
from polylith.
Yes, we need to figure out where custom keys/data should live. A reasonable solution could be to reserve a key, e.g. :custom
, where users could put their custom data.
from polylith.
My only concern is that in large projects, you are now going from reading one EDN file at the root to potentially hundreds of EDN files spread all over the repository and that's going to have a performance hit I think...
We have ~200 deps.edn
files and several operations that poly
performs have definitely slowed down as our project has grown.
from polylith.
It's true that each project will get another config file, and for you @seancorfield it means 21 more files to parse. When creating a component or base, my idea is to not create a brick.edn
config file. The only functionality that needs extra configuration per brick today, is when we add :ignore-files
for a brick. When we need that, we will also have to create a new file. This is not so common, so I think the extra config files shouldn't be a performance problem.
from polylith.
The latest 0.2.19-SNAPSHOT release tells people to put their custom data in a :custom
key @marksto-workshub.
from polylith.
The
test-runner-orchestrator
component will be updated, and this change will not affect external test runners.
I'll just note that this wasn't true: external test runners were broken by these changes (the changes to the internal structure were reasonable, and both existing external test runners have been updated to work with both internal formats, but more care is needed in the future, as more tools start to depend on the internal workspace data structure).
from polylith.
As I answered in the thread in slack, I think we should consider rolling parts of this back, if it makes the user experience worse. We didn't have automated tests that executed the External and Kaocha test runners, and that was why I by mistake introduced a breaking change. Now we have tests in place, that will hopefully stop it from happening again. With tests in place, I guess would not have introduced that breaking change. The reason we continue by fixing the test runners was that it had some value to support the new cleaner workspace structure, where test configuration is stored per project. It will also make it slightly easier to implement test runners in the future.
I will ask the community to see if they want to roll back the use of separate config files per project and brick.
from polylith.
Related Issues (20)
- Build docs/example code should not use build-clj HOT 1
- NPE when importing Java sub namespace
- Don't validate data_readers.clj files
- Use cljdoc for the poly tool documentation
- Warn when there are deps with the same keys and different `:local/root`s HOT 1
- Consider making stand-alone installation easier on Linux & Windows HOT 1
- doc: minor update reminders HOT 1
- Support updating libraries to the latest version HOT 6
- When creating a workspace, honor user git config for default main branch name
- Cannot invoke "java.lang.ClassLoader.loadClass(String)" because "class_loader" is null HOT 1
- Add support for multiple workspaces HOT 6
- Update Edamame dependency to 1.4.25 HOT 1
- Switch workspace via shortcuts
- Support scanning tests in src directories HOT 7
- Support snippets of test configuration to be merged into settings HOT 2
- Add a validation that gives an error if we depend on bricks from a brick
- brew upgrade poly currently stuck on 0.2.18 version HOT 2
- Make sure :keep-lib-versions works when updating libs
- Cannot run poly tool in folder containing deps.edn (but no workspace.edn) HOT 2
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 polylith.