Is Linode the right solution for a group student project?
We're a group of students looking to take on a web development project. We haven't settled on a framework yet, but it will either be Ruby on Rails, Laravel (PHP), or a Python framework such as Flask.
We want to be able to work on our own laptops which have varied configurations (M1/Intel Macs with different MacOS versions, and one Windows user) and we want to be able to work with a consistent environment and not run into the "doesn't work on my system" problem.
We also intend to use git+github for source control. And obviously we would need to be able to spin up a web server so we can preview our project as we work on it.
Also, we would want to be able to edit our project files using Visual Studio Code running on our local machines. (I guess that would mean using ssh?)
So is Linode a viable solution for our situation? We want to be able to get started ASAP so a solution that requires us to do too much setup just to make a start isn't ideal.
(btw we're also considering using Docker or VMs.)
Any advice/insight will be appreciated.
11 Replies
I think I would do this the same way that most open source projects do it… everyone works locally using GitHub as source control… and some kind of local server system (like MAMP or XAMPP.)
You need a project administrator who decides when to make 'live' changes on the Linode server. I don't think there is any need for everyone to have login access to the Linode.
I suppose you could also host on GitHub as well for free.
I've not used Docker and I don't see how that would help you a whole lot.
You could create a VM of of Windows or Ubuntu with all the tooling installed and give that to everyone to load using Virtual Box… but that will be a fair amount of work.
You need a project administrator who decides when to make 'live' changes on the Linode server. I don't think there is any need for everyone to have login access to the Linode.
This person should also be in charge of merging pull requests into the trunk or current branch. NO ONE should have a thin skin about his/her decisions.
I've not used Docker and I don't see how that would help you a whole lot.
I concur. If you just want to play with Docker, then conduct those experiments elsewhere.
You could create a VM of of Windows or Ubuntu with all the tooling installed and give that to everyone to load using Virtual Box… but that will be a fair amount of work.
I don't understand this at all… For local testing, you can run apache2 & php/python/ruby on the development laptops. Mac users should check out brew (https://brew.sh). Windows users can acquire this stuff using whatever mechanisms are available to them. It should be fairly easy to standardize the local testing environments.
-- sw
you can run apache2 & php/python/ruby on the development laptops
Well, he was looking to prevent the old "works on your machine but not on mine" situation. By creating a VM where everyone is running the save exact version of a Linux or Windows, it might help make a more level playing field.
What I don't know is if someone can make VM of Windows containing the development environment they decide to use and send it to all the participants to run? (Sounds like Docker on steroids?)
I've had very little experience with VM… just running Virtual Box on a Mac to "install" a Linux distro to see how it worked. I've only used Docker once to see how WordPress ran.
I agree with you. Using MAMP or XAMPP or Local or Desktop Server, etc., should work just fine for a small school project. They need to avoid the situation where the tooling and development environment is more complex than the whatever application they are working on.
Thanks for the replies.
I think we're going to go with VSCode Dev Containers (using Docker), so far it seems like the best option with the least amount of setup required.
VSCode Dev Containers
Could you take a few minutes and perhaps explain what these containers actually are and what the work-flow would be with them for your group?
I'll do research on my own as well. I never heard of these because I do mostly front-end web work and VSCode is mega-overkill for writing simple HTML with with Bootstrap and a sprinkling of PHP here and here.
This is the kind of stuff we do: https://radioqsl.com
Thanks.
Sure… here's the official documentation, btw, which includes an example of setting up a container for Node-based development.
So basically what we tried so far was:
I (who run MacOS 12.6 on an Intel Macbook, with ruby 3.2.0 installed through ruby-build, and rails 7.0.4.2 installed as a gem) initialised a rails project and pushed it to github.
Another team member (who has docker and VSCode installed, but not necessarily a current version of ruby or rails) cloned the repo inside a container. We had to choose a starting point for the container (I think there was an "official" one for ruby which we selected; there was a choice of ruby versions but the default was "3-bullseye" which is what we chose) and then there were also options for additional tools to install (we didn't choose any) and then we just let the extension go to work.. it basically opened the project folder for the second member and gave them shell access.
I checked the linux distribution used for the container using uname -r
turned out to be something called LinuxKit.
Executable such as ruby
and gem
were in /usr/local/bin
folder. ruby -v
revealed that it was the exact same version for Linux as mine on my Mac.. I'm guessing it's just because I happen to have the latest revision on my machine, and that's what "3-bullseye" choice selected for the container.
Anyway, from the point on, I guess we can work with it like any other collaborative github project, with pull requests or branches. (We're a bit hazy about the details but will hopefully pick it up.)
I'm assuming there were be official containers with the right installed context for other popular frameworks/tools (such as django or laravel), since we're not fully decided on the language/framework to use yet, but hopefully it should all work the same way.
Hope this helps!
Thanks for the update. Makes perfect sense.
You should let the project or application dictate what tooling or full framework you are going to use.
I don't do a lot of client-side coding… so I use PHP as my weapon of choice… doing things like this:
https://radioqsl.com/bs/gallery.php
You could do it client-side with Javascript, but it would be more complex. And a framework would be over-kill. The 'engine' for this page is 33 lines of simple PHP code (below.)
My advice to you is, after programming for 49 years (yeah, I'm older than dirt!), is to keep dependencies to a minimum and as simple as possible. Today's 'hot' framework is tomorrow's boat-anchor.
What are you guys planning to create?
<?php
// Image extensions
$image_extensions = array("png","jpg","jpeg","gif");
// Target directory
$dir = 'images/';
$mydir = 'images';
// Scanning files in a given directory in ascending order
$myfiles = scandir($mydir);
$count = 1;
//top loop -->
foreach ($myfiles as $file) {
//if ok file loop -->
if($file != '' && $file != '.' && $file != '..' && $file != '.DS_Store' ){
$image_path = "images/".$file;
?>
<div class="col5-sm-6 col-md-2 colx-lg-3 item">
<a href="<?php echo $image_path; ?>" data-lightbox="photos">
<img class=" border border-dark img-fluid" alt="cardpix" src="<?php echo $image_path; ?>"/>
</a>
</div>
<?php
if( $count == 4){
$count = 1;
?>
</div>
<div class="row photos justify-content-center ">
<?php
} else {
$count++;
}
}
} // end if loop
?>
I agree with your point about keeping it simple, and personally I would like to use tools that were no more complex than we required, which at the same time didn't require us to solve hard problems (like authentication, for example) using low-level libraries.. the problem is it's very hard for us to know what is "just right" unless we spend considerable time exploring the options (and probably not even then).
So the application we're building has to do with managing employees, with things such as site and shift allocation, clocking in and clocking out, etc. There will be different types of actors (regular employees, managers, heads of departments, etc.), with different abilities when using the system. We haven't properly translated the requirements to an ERD yet, but it seems an MVC-based framework is the way to go, to allow us to express business logic and constraints easily, as well as accessing the database using an ORM rather than making raw sql calls.
I have used Rails a little bit in the past, and it's nice enough, although quite an opinionated framework - something of a double-edged sword, I feel. I don't know ruby as well as I would like to though: sometimes I see a piece of rails code and find it hard to mentally parse.
In terms of languages, python is the one we're most comfortable with, so Django seems like another option.
And I also sped my way through most off the Laravel bootcamp tutorial (building the "chirper" application) and it reminded me quite a bit of rails.. but don't know the php language that well either, although based on my experience with other imperative and OOP languages, I can mostly guess what's going on.
Also, the application needs to be pleasant-looking and accessible by regular folk, so some kind of templating system (the V part of MVC) seems highly desirable.
Thanks for the explanation. I'm not sure why you want or need a framework for this, nor do I see the need for the MVC model but whatever floats your boat.
I'm not sure why you want or need a framework for this, nor do I see the need for the MVC model but whatever floats your boat.
A framework usually has some form of enforcement of the separation between M, V & C. They typically also allow you to write less code (e.g., you can rely on the framework's database access-method classes instead of inventing your own). My favorite php framework is f3. CodeIgniter is also very nice. The learning curve for both is pretty short…mostly because they are both very well documented (somewhat of a rarity in the open-source world).
I did some small stuff with Ruby on Rails but found that it just got in my way. Plus, you have to develop a lot of arcane glue to interface it to a "commercial" (for lack of a better term) web server (apache2 or nginx). If you're willing to follow the development paradigm Rails lays out for you, it can be extremely powerful. However, there don't seem to be many facilities for blurring the lines between M, V and C…which makes a developer's life harder. That being said, there's a lot of stuff in Rails that I wish was in the Ruby standard library.
I could say all that same stuff about Laravel (minus the stuff about the standard library)…
I can't comment on python3… Those that use it, love it. I've never used it.
-- sw