-
Notifications
You must be signed in to change notification settings - Fork 299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposition: to separate addons from Io #400
Comments
Hey Ales, I'm open to patches that would make Io easier to install. I'm also open to alternative ways to generate docs as long as they are in the same format as the current docs. |
Great! Could you then make repositories for the each of the addons? Then I could fork them and make PRs to make them packages. Or you could make an organization for the addons (and, maybe, Io itself) and temporally allow me rights to create repositories in there. |
The repositories may not contain anything — I'd copy the sources myself. But they should be properly named (had the same names as in the |
Why are separate repos required? |
Eerie keeps the package URL so you can update the package. It's also would be simpler to install packages separately. A separate repository is just its own place. It makes it independent from the other addons and Io's sources. There are also other benefits, for example all the issues regarding specifical packages goes to each own repository. It would be also simpler for contributors to work on a specific addon on a separate repository. |
That also corresponds to "encapsulate what varies" principle in some kind. |
I mean to allow a user to choose which addons to install. And by default there would be not many addons — just those, that required. After installation a user could install any additional addons (s)he needs (or don't install anything). But if you'd like it's not so hard to add all of them as dependencies, so they all will be installed, in this case Eerie at least would allow a user to remove what (s)he doesn't need. Eerie packages have the same directory structure as the existing addons, except of the package manifest file ( Packages could contain an executable scripts, so they could be installed as apps. For example, There are a lot of benefits of this design. Do you see any drawbacks? |
While fixing one of the addons, I've found yet another benefit: there is no need to recompile and reinstall Io with Eerie — just the package:) |
Ales, Sorry for the delay responding. This sounds promising. One concern I have is if the API for addons changes, it would require dealing with a lot of different repos to update everything. I don't see that happening though, so maybe it's not an issue. Another concern is that it would clutter my git repo namespace, but maybe it's time to move Io to a separate Io github organization. That might also make granting privileges to maintainers easier too. I'll look into it. |
Even if there are chances that API will change in the near future, the repos are just like the separate directories in the +1 for organization! I could make all the work with addons then, if you allow me rights to create repositories in there. |
I've set up an https://github.com/IoLanguage and made you a member. You should have permissions to create repos for the addons. Want to give that a try? |
Hooray! |
The plan is next:
After the last step we could merge the Io's fork. |
"BTW, github has an option to move an existing repo to an organization. It's somewhere in settings." Ok, I'll try to move the repo. |
Moved. |
Partly done second step. Io compiles without addons except of those needed by Eerie. The fork I'm working on is here: https://github.com/AlesTsurko/io |
Working on this ticket now to make it independent of Yajl. |
Hi @stevedekorte
The disadvantage of the second option is that it adds an additional step in the Io installation process. The disadvantages of the third option are: Add a Cmake flag to install (or do not) Eerie is also an option, but for me it also looks like an additional step. Moreover I guess a lot of developers don't even look at additional flags when building with CMake:) |
Or I could add a CMake flag to DO NOT install Eerie. That is install it automatically by default, but give an option to install it manually or don't install it at all. |
Hey Ales, I'll leave this up to you. I'd just suggest minimizing the amount of effort and knowledge needed by a new user to get things working. In this case would you say that's the 3rd option? |
Yes. And I'll add a flag to make it possible to compile without Eerie. So it will be the 2nd (install manually) and 3rd (install automatically) option at the same time. |
The second step is done. Eerie added as a git submodule and installs by default after the Io installation, but I've also added a flag I need to fix some issues on Windows for Eerie, I hope I'll do it during the next week. After that I'll start to convert addons into packages. By the way the CMakeLists.txt was already configured for CPack — that makes it simple to compile Io into a binary package for distribution, it could be used to update binary releases regularly (for even simpler installation of Io). |
Sorry for the delay. Work + music — I was really busy during the last few weeks. I've done some steps to take Eerie onto Windows. But "thankfully" to the platform there's a lot of restrictions on the former. The first one is about executable scripts. We haven't such a feature on Windows by default (so we should run all the scripts with |
"So I would depend on the last options (WSL/Cygwin) on Windows and forget about anything else. Would you agree?" Yeah, that seems reasonable. "I'd also move Eerie repo (and it's dependencies) to the IoLanguage organization. Would you mind?" Sounds good. Just send me any instructions for what you need done on my side. "BTW, Io itself hadn't compiled on Windows, but I've fixed it." Great. Looking good. |
I just moved Eerie and its dependencies myself. It's already on IoLanguage. |
Hey Steve! Eerie finally compiles and works on Windows! Hurray! The only thing I'd like to fix before I'll dive into the addons conversion process is |
Alex, nice work! Looking forward to it. |
I've fixed the bug related to |
Hi Steve. Glad to inform you, that all the addons have been converted to Eerie packages. Moreover I did it manually, so I've checked the each one. The new-old system brings back some addons, that are commented in CMakeLists.txt. And I fixed some of the addons during the conversion. I also deleted the Here is the full report:
I'm going to make the PR with Io changes now. |
Nice work Alex :) |
I've opened the pull request: #411 |
Hi Steve! As I can see the main problem with building Io are its dependencies. When some of addons won't build, a user didn't get Io too. Also not all the addons equally important for all users. It would be better to allow user to install what he/she needs. So why don't separate the addons from Io? We could convert the addons into Eerie packages. And make a repository for the each one. A user then could install what (s)he needs with Eerie. This also would make the Io's build process a lot easier, reduce dependencies and make Io itself smaller. And I'm not speaking about such features as addons updates and environments.
Moreover, Eerie not only makes it simple to install Io addons and all of its dependencies, but it's also has a Docio — the documentation generator for the packages. Docio generates documentation from the same comments format, that is already used in addons, but also supports markdown. After the generating process it provides you with a site for a package (this site is generated by Docio, for example: http://tonikasoft.com/docio/) and methods to look up for an addon documentation right in the Io's interpreter.
I could convert all the addons into packages right after we'll finish fixing cross platform problems (there are not many).
This also assumes that Eerie will be the official Io's package manager, that will be installed with Io itself.
What do you think?
The text was updated successfully, but these errors were encountered: