Comments (7)
These are good arguments. Thanks for mentioning Coursier's publish
command. I will see whether we can use it within Seed. I did not consider teaching Scala as a use case, though Seed might be a good fit here since sbt's syntax is too overwhelming for newcomers.
I can look into basic sbt support once some other more pressing issues have been resolved.
from seed.
I thought about this too. A problem is that Seed modules do not map well onto sbt. The resulting build file will not be idiomatic and use unmanagedSourceDirectories
for source paths, -Xplugin
for Scala.js etc. I am also uncertain how useful the generated build will be.
The following use cases come to my mind:
- Publishing libraries: This is the main reason I still use sbt for my libraries, though proper publishing support is planned for a future version of Seed
- Play support: We currently require some boilerplate code for Twirl and route generation which makes it hard to set up a Play project
- Regression testing for Scala.js/Scala Native: Bloop hardcodes the linker version, so comparing the performance or output of different versions is not possible
- Running Scala Native tests: I did not get around implementing it yet in Bloop, but it should not be too much work
We are best served with tackling those limitations directly in Bloop/Seed. However, if someone wants to contribute additional generators, I am happy to provide some pointers.
from seed.
The resulting build file will not be idiomatic and use unmanagedSourceDirectories for source paths, -Xplugin for Scala.js etc
I think we can work around these limitations in a nice way, generating idiomatic builds sounds more daunting than it actually is. Plus, it doesn't need to be perfect -- there is room for error and we could require user intervention. The generation just has to be good enough so that people consider it to migrate instead of doing everything from scratch.
I am also uncertain how useful the generated build will be.
IMO it will be useful to serve as a building block for the migration.
We are best served with tackling those limitations directly in Bloop/Seed.
Maybe, yeah. You could add support for publishing libraries through coursier publish
/coursier release
which I know @alxarchambault worked on.
However, the point to generate to other build files holds even if you fix these limitations. seed
is really nice but doesn't have major adoption. If it positions itself at the very center of the build tools space and allows to generate other builds from it, then it would be in a privileged spot that could increase adoption as well as fix some of the major issues we experience when trying to teach Scala.
If this feature was supported, I'm pretty sure I could sell seed
as the build tool to use for all the basic teaching in Scala (here at EPFL and also in ScalaBridge events and tutorials in the Internet).
from seed.
Sounds good to me! I cannot help with implementation but have too much experience with sbt, let me know if you have any questions on the generating idiomatic sbt builds part of the job.
I'm really excited about this, this is IMO a game changer π
from seed.
Sure, I will keep you in the loop. Thanks.
from seed.
Technically I think it's possible to have an sbt plugin that generates the sbt projects and their configuration by reading a Seed file, rather than code-generating it. That doesn't solve all the problems in issue though.
from seed.
I'm not sure I like this idea. It seems to me like seed would become a stepping-stone to other build tools, when it is actually a competent build tool in its own rightβI assume Mill "suffered" the same at some point, and probably Fury too.
If a migration from seed to whatever is desirable I feel that this should be implemented on the SBT/Mill side rather than included in seed itself. That way, the evolution of seed doesn't get tied to the evolution of other build tools.
from seed.
Related Issues (20)
- Some weird output while showing progress HOT 1
- Find a way to have scalafix working HOT 1
- Seed idea does not bring across the resources directory HOT 1
- JVM resources are not copied into jar HOT 1
- Intermittent exception: `java.net.SocketException: Bad file descriptor` HOT 2
- Missing jar after running `seed bloop` HOT 1
- Separation of Build File Format Through a Documented Interface
- Move to Own GitHub Org
- Dog Food Seed
- Support Following Languages: Scala, Java, Groovy, Kotlin, C/C++/ObjC, Swift HOT 1
- Seed idea, IntelliJ Ultimate 2020.3 not able to open the project
- SPDX Spec Licenses, Versions, Exceptions and Expressions HOT 2
- Faster Space Development and Improvement | Popularising and Evangelism
- Cannot install via Coursier
- Boxed error when ./seed bloop HOT 2
- Seed idea, does no load test framework dependency for syntax highlighting HOT 1
- Cannot import java bom file HOT 4
- Seed on AWS Lambda (or using Serverless) HOT 1
- Binary version of Scala.js turned to "1", not "1.0" as of version 1.0.0 HOT 2
- update command has trouble wit zio version
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 seed.